PDA

View Full Version : [1.00.16] Hướng dẫn Add Option cho GS



cuonglee
11-04-08, 07:23 PM
1 vài offset cơ bản trong GS 1.00.16:


//Offsets của Transformation Ring
#define GS_RING_1 (0x004B472B+3)
#define GS_RING_2 (0x004B4734+3)
#define GS_RING_3 (0x004B473D+3)
#define GS_RING_4 (0x004B4746+3)
#define GS_RING_5 (0x004B474F+3)
#define GS_RING_6 (0x004B4758+3)

//Offsets của Jewel rate
#define GS_SOUL_RATE (0x004F80CC+3)
#define GS_SOUL_LUCK_RATE (0x004F81AB+3)
#define GS_LIFE_RATE (0x004F893A+3)

//Offsets của Drop ITem Exc + Item thường và các tính năng
#define GS_EXC_DROP_RATE (0x0041A492+1) <--- Item Exc
#define GS_EXC_SKILL_RATE (0x0041A7B5+6) <--- Item Exc
#define GS_EXC_LUCK_RATE (0x0041A7BF+6) <--- Item Exc
#define GS_SKILL_RATE (0x0041A80E+6) <--- Item thường
#define GS_LUCK_RATE (0x0041A818+6) <--- Item thường

//Chaos Mix Rate
#define GS_CHAOS_MIX_10 (0x00491369+6)
#define GS_CHAOS_MIX_11 (0x00491394+6)
#define GS_CHAOS_MIX_12 (0x004913BF+6)
#define GS_CHAOS_MIX_13 (0x004913EA+6)

//Chaos Castle,Elf buffer
#define GS_CC_MIN_USER (0x0053BC30+3)
#define GS_ELF_BUFFER_LVL (0x0054C2EF+1)

//Mix Pets DarkLord Rate
#define GS_DARK_HORSE_ (0x004945A3+6)
#define GS_DARK_SPIRIT_ (0x00494BD4+6)

//Drop reward item BloodCastle
#define GS_BC_DROP_ID (0x00531A98+1)
#define GS_BC_DROP_GRUPO (0x00531A9A+1)

//Offset của manashield
#define GS_MANA_SHIELD_1 (0x004B3F1B+1) //Agility
#define GS_MANA_SHIELD_2 (0x004B3F3B+1) //Energy
#define GS_MANA_SHIELD_3 (0x004B3F66+1) //Divider

//Một vài offset khác
#define GS_ALLIANCE_MEMBERS (0x0045537B+2)
#define GS_UDP_PORT (0x0051888F+1)
#define GS_BLESS_PRICE (0x00508446)
#define GS_SOUL_PRICE (0x00508467)
#define GS_CHAOS_PRICE (0x00508489)
#define GS_LIFE_PRICE (0x005084CC)
#define GS_GUARDIAN_PRICE (0x005085AA)
#define GS_DINORANTE_MIX (0x00491C22)
................................................ còn nữa......

Bạn nào còn biết những offset nào nữa thì post lên cho mọi người tham khảo luôn nha

cuonglee
11-04-08, 08:56 PM
Chỉnh sửa offset trong Ollydbg

Ở đây tôi lấy Offset "Level cao nhất có thể sử dụng Elfbuff free", và nó chính là offset này:


#define GS_ELF_BUFFER_LVL (0x0054C2EF+1)

Các bạn chỉ cần lưu ý phần offset được tô đậm màu đỏ và phần màu xanh. Chờ 1 tí rồi các bạn sẽ hiểu, đừng vội thắc mắc và hấp tấp :D

Trong Ollydbg tôi sẽ load GS 1.00.16 lên, ở khung cửa chính (to nhất của Olly) các bạn nhấn đồng thời Ctrl + G, sẽ xuất hiện khung "Enter expression to follow". Ngay tại khung này các bạn điền vào offset màu đỏ tô đậm mà tôi đề cập ở trên : 0054C2EF, rồi nhấn OK, nó sẽ đưa bạn tới 1 chuỗi offset này:


0054C2C0 /> 55 PUSH EBP
0054C2C1 |. 8BEC MOV EBP,ESP
0054C2C3 |. 83EC 40 SUB ESP,40
0054C2C6 |. 53 PUSH EBX
0054C2C7 |. 56 PUSH ESI
0054C2C8 |. 57 PUSH EDI
0054C2C9 |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0054C2CC |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
0054C2CE |. 51 PUSH ECX
0054C2CF |. E8 996CEBFF CALL GameServ.00402F6D
0054C2D4 |. 83C4 04 ADD ESP,4
0054C2D7 |. 85C0 TEST EAX,EAX
0054C2D9 |. 75 0A JNZ SHORT GameServ.0054C2E5
0054C2DB |. B8 01000000 MOV EAX,1
0054C2E0 |. E9 A7000000 JMP GameServ.0054C38C
0054C2E5 |> 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
0054C2E8 |. 0FBF82 A0000000 MOVSX EAX,WORD PTR DS:[EDX+A0]
0054C2EF |. 3D B4000000 CMP EAX,0B4
0054C2F4 |. 7E 1B JLE SHORT GameServ.0054C311

Với chú thích ở trên các bạn để ý tí sẽ thấy: ngạy tại offset 0054C2EF được biểu hiện bởi giá trị 3D <------ Thật ra đây không phải là offset và giá trị mà ta cần chỉnh sửa
Vậy đâu mới là offset và giá trị mà ta cần phải chỉnh sửa, ngay lúc này bạn hãy nhớ và nghĩ lại xem, vậy cái +1 này để làm gì nhĩ ??? :D


Trên số 2 một bậc là số mấy?, tất nhiên là số 3 :D, đừng ai nói với tôi là số 1 hoặc số 4 nha :D

Và ở đây: 0054C2EF+1 = 0054C2F0
Vậy 0054C2F0 mới là offset đúng của chúng ta, và giá trị ta cần thay đổi ở đây là 0B4



OB4 = 180 Level (giá trị mặc định của GS)

Và giờ ta thử chỉnh level lên 400 xem sao


190 = 400 Level (giá trị được sửa lại)

vậy chỉnh sửa như thế nào đây:
Ngay tại offset 0054C2EF |. 3D B4000000 CMP EAX,0B4
Các bạn nhấn double click lên nó lập tức khung "Assemble at ...." xuất hiện, tại khung này các bạn xóa giá trị 0B4 đi và thay vào đó giá trị cần thay đổi, ở đây ví dụ là lấy giá trị 190, sau đó nhấn Assemble, thế là giá trị đã được thay đổi.
Và giờ là bước cuôi cùng và bắt buộc phải có: Save lại giá trị mà ta đã thay đổi cho GS:
- Cũng ngay tại khung cửa sổ to nhất của Olly, ta click phải chuột chọn Copy to executable -> All modifications -> Copy all -> sẽ xuất hiện thêm khung cửa sổ mới, ở khung cửa sổ mới đó ta nhấn phải chuột chon Save file, xong bạn muốn save và đặt tên file như thế nào thì tùy các bạn
- Hoặc các bạn có thể xem phim hướng dẫn tại đây:


PHIM HƯỚNG DẪN (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Nguồn hướng dẫn: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)
Đây là hướng dẫn theo cách hiểu của mình nên có thể ngôn từ trong bài hướng dẫn không đúng với ngôn từ trong ASM và Ollydbg

cuonglee
12-04-08, 12:34 PM
HƯỚNG DẪN ADD OPTION THEO CÁCH CƠ BẢN NHẤT

Nguồn hướng dẫn và lưu hành:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)


Bài hướng dẫn của Net4Viet Team

Hì, hôm này rãnh rỗi tí ngồi viết cái hướng dẫn add option cho các bạn, chắc các bạn cũng biết lợi ích và sự tiện lợi của các option rồi nên mình khỏi nói chi nữa. Ở bài hướng dẫn này mình sẽ hướng dẫn add option theo cách cơ bản nhất mà trong GameServer đã có code mẫu sẵn, dựa vào những code đó ta mở rộng ra các option mới. Nào chúng ta bắt tay vào công việc nào:


XEM PHIM HƯỚNG DẪN TRƯỚC KHI LÀM:
PHẦN 1 (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)
PHẦN 2 (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)


Đoạn code mẫu dùng để add option


00521AD4 |. 68 98E56900 PUSH 0069E598 ; ASCII "commonserver.cfg" <- Giữ nguyên
00521AD9 |. B9 287BC50A MOV ECX,0AC57B28 ; <- Giữ nguyên
00521ADE |. E8 4E14EEFF CALL 00402F31 ; <- Giữ nguyên
00521AE3 |. 50 PUSH EAX ; /IniFileName <- Giữ nguyên
00521AE4 |. 6A 00 PUSH 0 ; |Default = 0 <- Sẽ thay đổi
00521AE6 |. 68 D80B6A00 PUSH 006A0BD8 ; |Key = "XMasEvent" <- Sẽ thay đổi
00521AEB |. 68 74E56900 PUSH 0069E574 ; |Section = "GameServerInfo" <- Giữ nguyên
00521AF0 |. FF15 08CF650C CALL DWORD PTR DS:[C65CF08] ; \GetPrivateProfileIntA <- Giữ nguyên
00521AF6 |. A3 7C80420B MOV DWORD PTR DS:[B42807C],EAX ; <- Sẽ thay đổi


Chú ý:

1- 00521AE4 |. 6A 00 PUSH 0 ; |Default = 0 <- Sẽ thay đổi : Ở đây là giá trị mặc định của các loại Option, nên tùy Option mà ta sẽ thay đổi lại

2- 00521AE6 |. 68 D80B6A00 PUSH 006A0BD8 ; |Key = "XMasEvent" <- Sẽ thay đổi : Ở đây là offset chứa tên Option mình cần sửa lại, ở trong hướng dẫn này tôi lấy ví dụ là :


00609410 . 4E 34 56 43 61>ASCII "N4VCanUseShadowN"
00609420 . 50 43 4D 61 78>ASCII "PCMaxLevel",0


3- 00521AF6 |. A3 7C80420B MOV DWORD PTR DS:[B42807C],EAX ; <- Sẽ thay đổi : Ở đây là offset của Option ta cần add, và trong GS này offset đó là : 0054C2F0 <-- Offset "Level cao nhất có thể sử dụng Elfbuff free (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)"


Gián đoạn Offset và JMP nó tới Offset mới nơi ta sẽ add option mới cho GameServer


XEM PHIM HƯỚNG DẪN TRƯỚC KHI LÀM:
PHẦN 3 (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Offset ta chọn để gián đoạn và JMP tới Offset mới:


00521AFB |. 68 98E56900 PUSH GameServ.0069E598 ; ASCII "commonserver.cfg" // Ta sẽ gián đoạn ở offset này và JMP nó tới offset mới là nơi ta bắt đầu add option
00521B00 |. B9 287BC50A MOV ECX,GameServ.0AC57B28


Offset được JMP tới và cũng là nơi ta dùng để add option mới cho GameServer:


006208F0 00 DB 00 // Offset nay la noi ta bat dau de add option

Chú ý: Các bạn muốn chọn offset nào cũng được nhưng phải nằm ở offset có dạng DB 00 các bạn chú ý sẽ nhận ra được

Code cho option:


PUSH 0069E598 ; ASCII "commonserver.cfg"
MOV ECX,0AC57B28
CALL 00402F31
PUSH EAX
PUSH 0B4
PUSH 00609410 ; ASCII "N4VCanUseShadowNPCMaxLevel"
PUSH 0069E574 ; ASCII "GameServerInfo"
CALL DWORD PTR DS:[C65CF08]; KERNEL32.GetPrivateProfileIntA
MOV DWORD PTR DS:[54C2F0],EAX
PUSH 0069E598 ; ASCII "commonserver.cfg"
JMP 00521B00

Chú ý:
Nếu muốn add tiếp Option nữa thì bạn delete 2 dòng code in đậm đỏ cuối đi:


PUSH 0069E598 ; ASCII "commonserver.cfg"
JMP 00521B00

Và lưu ý là khi kết thúc hoàn toàn add các option thì ở Option cuối cùng thì các bạn phải thêm 2 dòng code đó vào.
Chú ý:
Ở phần trên ta đã gián đoạn các Option trong GameServer để JMP tới 1 offset trống mới để add các option mới thì cuối cùng các bạn chú ý là phải JMP ngược lại offset nơi ta gián đoạn ban đầu để GameServer đọc được các Option liền mạch với nhau

JMP 00521B00 <- Offset nằm bên dưới Offset mà ta gián đoạn ở phần trên


Và công việc cuối cùng và cũng quan trong nhất để GameServer đọc và thực hiện các tùy chỉnh của OPtion:
- Các bạn vào MUServer\Data\commonserver.cfg: mở file này ra và thêm vào tên option mình vừa add và giá trị tùy chỉnh theo ý muốn của các bạn


N4VCanUseShadowNPCMaxLevel = 400 ; Level cao nhat co the su dung duoc NPC ElfBuff Free



Chúc các bạn thành công!!!
Đây là hướng dẫn theo cách hiểu của mình nên có thể ngôn từ trong bài hướng dẫn không đúng với ngôn từ trong ASM và Ollydbg

cuonglee
13-04-08, 03:32 PM
Đây là 2 GS và GS_CS VTM NO PACK được tôi sử dụng trong Project MUServer 1.00.16 VTM full add Option. Nay tôi cũng đã giải nghệ nên share ra cho anh em nghiên cứu. Cùng với bài hướng dẫn add Option của tôi ở trong bài này:



Hướng dẫn Add Option

Ở ĐÂY (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Or Ở ĐÂY (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)


Tôi hy vọng các bạn có thể tự mình phát triển GameServer cho riêng mình. Chúc các bạn thành công !!!


DOWNLOAD GS và GS_CS VTM NO PACK HERE (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Anh Huy
13-04-08, 03:45 PM
- Nice release ! 10/10 point .

bachcotsau
13-04-08, 07:58 PM
Đây quả là 1 điều lý tưởng cho những người đam mê Mu .

o0nvt0o
16-04-08, 12:19 PM
Cuonglee có thể share lên luôn GS đã add option của server Holy 41 kô pack cho anh em được kô?hoặc share mấy offset mà cuonglee add trong GS cũng đc!mình cần nó lắm!......!

Destruct
16-04-08, 01:34 PM
Cái Holy Beta 41 thì bị thằng cha Holy Packed rồi có đâu mà Share.

asmcoder
16-04-08, 06:55 PM
:D Ku em Eddy đã unpack được nhưng nó bảo trên clb có rùi nó không share nữa :|

Vậy sao các bạn còn xin ?

@ Cuonglee : Good...bạn rất tuyệt vời :D

assataka
15-06-08, 06:05 PM
Bài Tut này hay quá, mới đọc thì chưa thể làm được ngay, các bạn xem thật kỹ phim của Cuonglee nhé:

- Chỉnh sửa offset trong Ollydbg:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

- Hướng dẫn add option theo cách cơ bản nhất:
Phần 1: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Phần 2: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Phần 3: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Down ở mediafire mà gặp lỗi 99.99% mà kô Complete thì vô trang:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Down bản IDM 5.12 Build 11 về là hết lỗi 99.99%.

phoxuaxua
05-07-08, 10:05 PM
Anh Cường có thể làm một Tut bằng Video hướng dẫn chi tiết cách hook file DLL vào Main không anh, em thấy nhiều người muốn học Tut này lắm, anh xem có thể bỏ chút thời gian hướng dẫn mọi người không, rất cảm ơn anh

eddy
06-07-08, 07:09 AM
Cách hooking dll vào main cũng không có jì khó.......^^

Code nguyên bản


PUSH XXXX
CALL DWORD PTR DS:[00YYYYY]
Or eax,eax
JE <EntryPoint>
PUSH ZZZZZ
CALL DWORD PTR DS:[00EEEEE]
CALL EAX
JMP < EntryPoint>
Với XXXX : Offset tên dll
Với YYYYY: Offset chứa hàm Load Lybrary
Với ZZZZZ: Offset chứa lệnh ...( cái này chưa rõ ) nhưng nếu hook DLL của DH_notable thì là : "checkit"
Với EEEEE : Là offset chứa hàm GetProcAddress

connhagiau89
01-12-08, 11:58 PM
Làm theo tut bác cường với bản 0.97 cấu trúc ý đúc như vậy chỉ thay các giá trị làm đi làm lại cả chục lần mà chạy gs cứ báo dont send là sao nhỉ :(( Bác có hướng dẫn thiếu chỗ nào ko vậy

Đã ai làm theo tut này thành công chưa vậy?

YoungKeno
06-03-11, 11:48 AM
Các Pro ơi...Ai có đủ Các Link Down làm ơn Up giùm mình được không zậy??? đang tập DEV

khanhdkny
15-04-11, 04:12 PM
Năm Cam đã ko còn tham gia CLB lâu rồi, thế mà Topic của anh vẫn lên đầu! A quả là PRO! Kỳ cựu của CLB! Tiế rẳng a đã ko còn sinh hoạt tình dục với CLB nữa!

huyhoangtu
04-06-12, 07:32 PM
Bài Tut này hay quá, mới đọc thì chưa thể làm được ngay, các bạn xem thật kỹ phim của Cuonglee nhé:

- Chỉnh sửa offset trong Ollydbg:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

- Hướng dẫn add option theo cách cơ bản nhất:
Phần 1: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Phần 2: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Phần 3: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Down ở mediafire mà gặp lỗi 99.99% mà kô Complete thì vô trang:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Down bản IDM 5.12 Build 11 về là hết lỗi 99.99%.

ai còn huong dan phan 1 cho em xin thanksss