- UID
- 15835
- 帖子
- 2025
- 主題
- 46
- 精華
- 0
- 積分
- 144
- 楓幣
- 2209
- 威望
- 125
- 存款
- 0
- 贊助金額
- 0
- 推廣
- 0
- GP
- 164
- 閱讀權限
- 100
- 性別
- 保密
- 在線時間
- 371 小時
- 註冊時間
- 2012-10-23
- 最後登入
- 2022-4-21
|
提供三個版本
版本1:
code 最少,但有 side effect
已知問題: 進出商場後 buffer 圖示會消失
版本2:
使用 thread, enable 後只要 thread 結束就可以寫入其他 crc 數據
版本3:
不使用 thread, 在角色登入遊戲後才會初始化,在這之後才能寫入其他 crc 數據
這邊我是在要檢查CRC時才做初始化,也可以改在別的地方去做初始化
版本2、3我是 alloc 整個 exe 範圍,不過實際上不需要這麼大,我在版本3有紀錄 crc1、crc2的範圍,有需要的可以自己確認一下調整大小
MapleStory.exe v241.2
start: 140000000
end:14B3FC000
size: B3FC000
crc1: 147F9045D
min: 140001005
max: 14463E7FF
crc2: 147B01A2B
min: 147F90149
max: 147F906DD- // TwMs v241.2 MSCRC Bypass v1
- [enable]
- 143B7F610:
- xor eax,eax
- ret
- nop 2
- [disable]
- 143B7F610:
- mov [rsp+10],rdx
複製代碼- // TwMS v241.2 MSCRC Bypass v2
- [enable]
- Alloc(ms_mem_dup, 188727296) //B3FC000
- Alloc(crc_bypass_entry, 1024, MapleStory.exe+7F9045D)
- Alloc(crc_bypass_thread, 512)
- createthread(crc_bypass_thread)
- define(ms_mem_start,140000000)
- define(ms_mem_end,14B3FC000)
- define(crc_1, 147F9045D)
- define(crc_1_ret, 147F90462)
- define(crc_2, 147B01A2B)
- define(crc_2_ret, 147B01A30)
- crc_bypass_thread:
- mov rdx,[ms_start]
- mov rax,[ms_end]
- sub rax,rdx
- xor rdx,rdx
- mov rcx,8
- div rcx
- mov rcx,rax
- mov rsi,[ms_start]
- mov rdi,ms_mem_dup
- rep movsq
- mov rdi,[ms_crc1]
- mov byte ptr [rdi], E9
- inc rdi
- mov rax,crc_1_bypass_entry
- mov rdx,crc_1_ret
- sub rax,rdx
- mov [rdi],eax
- lea rdi,[rdi+04]
- mov byte ptr [rdi],90
- mov rdi,[ms_crc2]
- mov byte ptr [rdi], E9
- inc rdi
- mov rax,crc_2_bypass_entry
- mov rdx,crc_2_ret
- sub rax,rdx
- mov [rdi],eax
- lea rdi,[rdi+04]
- mov byte ptr [rdi],90
- jmp terminatethread
- crc_bypass_entry:
- crc_1_bypass_entry:
- cmp r12,[ms_start]
- jb crc_1_exit
- cmp r12,[ms_end]
- jae crc_1_exit
- sub r12,[ms_start]
- push rax
- mov rax,ms_mem_dup
- add r12,rax
- pop rax
- crc_1_exit:
- add al,[r12]
- pop r12
- jmp crc_1_ret
- crc_2_bypass_entry:
- cmp rcx,qword ptr [ms_start]
- jb crc_2_exit
- cmp rcx,qword ptr [ms_end]
- jae crc_2_exit
- sub rcx,qword ptr [ms_start]
- push rax
- mov rax,ms_mem_dup
- add rcx,rax
- pop rax
- crc_2_exit:
- mov ecx,[rcx]
- add [r13+00],ecx
- jmp crc_2_ret
- ms_start:
- DQ ms_mem_start
- ms_end:
- DQ ms_mem_end
- ms_crc1:
- DQ crc_1
- ms_crc2:
- DQ crc_2
- [disable]
- DeAlloc(ms_mem_dup)
- DeAlloc(crc_bypass_entry)
- DeAlloc(crc_bypass_thread)
- crc_1:
- add al,[r12]
- pop r12
- crc_2:
- mov ecx,[rcx]
- add [r13+00],ecx
複製代碼- // TwMS v241.2 MSCRC Bypass v3
- [enable]
- Alloc(msmem, 188727296) //B3FC000
- Alloc(crc_bypass_entry, 1024, MapleStory.exe+7F9045D)
- GlobalAlloc(crc1_min,8)
- GlobalAlloc(crc1_max,8)
- GlobalAlloc(crc2_min,8)
- GlobalAlloc(crc2_max,8)
- crc1_min:
- DQ 7fffffffffff
- crc1_max:
- DQ 00
- crc2_min:
- DQ 7fffffffffff
- crc2_max:
- DQ 00
- 147F9045D:
- DB E9
- DD crc_bypass1-147F90462
- DB 90
- 147B01A2B:
- DB E9
- DD crc_bypass2-147B01A30
- DB 90
- crc_bypass_entry:
- nop
- crc_bypass1:
- /////////////////////////
- cmp r12,[crc1_min]
- jae Next_1
- mov [crc1_min],r12
- Next_1:
- cmp r12,[crc1_max]
- jbe Next_2
- mov [crc1_max],r12
- Next_2:
- /////////////////////////
- cmp byte ptr[crc_bypass_init_done], 0
- jne crc_bypass1_main
- inc qword ptr [crc_bypass_init_done]
- call set_restore_1
- call set_restore_2
- call ms_mem_dup
- call set_bypass_1
- call set_bypass_2
- jmp crc_bypass1_main
- crc_bypass2:
- /////////////////////////
- cmp rcx,[crc2_min]
- jae Next2_1
- mov [crc2_min],rcx
- Next2_1:
- cmp rcx,[crc2_max]
- jbe Next2_2
- mov [crc2_max],rcx
- Next2_2:
- /////////////////////////
- cmp byte ptr[crc_bypass_init_done], 0
- jne crc_bypass2_main
- inc qword ptr [crc_bypass_init_done]
- call set_restore_1
- call set_restore_2
- call ms_mem_dup
- call set_bypass_1
- call set_bypass_2
- jmp crc_bypass2_main
- ///////////////////////////////////////////////
- crc_bypass1_main:
- cmp r12,qword ptr [ms_start]
- jb crc_bypass1_return
- cmp r12,qword ptr [ms_end]
- jae crc_bypass1_return
- sub r12,qword ptr [ms_start]
- push rax
- mov rax,msmem
- add r12,rax
- pop rax
- crc_bypass1_return:
- add al,[r12]
- pop r12
- jmp 147F90463
- crc_bypass2_main:
- cmp rcx,qword ptr [ms_start]
- jb crc_bypass2_return
- cmp rcx,qword ptr [ms_end]
- jae crc_bypass2_return
- sub rcx,qword ptr [ms_start]
- push rax
- mov rax,msmem
- add rcx,rax
- pop rax
- crc_bypass2_return:
- mov ecx,[rcx]
- add [r13+00],ecx
- jmp 147B01A31
- ///////////////////////////////////////////////
- set_restore_1:
- push rsi
- push rdi
- mov rdi,[ms_crc1]
- mov rsi,B3535C4124040241
- mov [rdi],rsi
- pop rsi
- pop rdi
- ret
- ///////////////////////////////////////////////
- set_restore_2:
- push rsi
- push rdi
- mov rdi,[ms_crc2]
- mov rsi,499C004D0141098B
- mov [rdi],rsi
- pop rsi
- pop rdi
- ret
- ///////////////////////////////////////////////
- set_bypass_1:
- push rax
- push rdx
- push rsi
- push rdi
- mov rdi,qword ptr [ms_crc1]
- mov byte ptr [rdi], E9
- inc rdi
- mov rax,crc_bypass1
- mov rdx,147F90462
- sub rax,rdx
- mov dword ptr [rdi],eax
- lea rdi,[rdi+04]
- mov byte ptr [rdi],90
- pop rdi
- pop rsi
- pop rdx
- pop rax
- ret
- ///////////////////////////////////////////////
- set_bypass_2:
- push rax
- push rdx
- push rsi
- push rdi
- mov rdi,qword ptr [ms_crc2]
- mov byte ptr [rdi], E9
- inc rdi
- mov rax,crc_bypass2
- mov rdx,147B01A30
- sub rax,rdx
- mov dword ptr [rdi],eax
- lea rdi,[rdi+04]
- mov byte ptr [rdi],90
- pop rdi
- pop rsi
- pop rdx
- pop rax
- ret
- ///////////////////////////////////////////////
- ms_mem_dup:
- push rax
- push rcx
- push rdx
- push rsi
- push rdi
- pushfq
- mov rdx,qword ptr [ms_start]
- mov rax,qword ptr [ms_end]
- sub rax,rdx
- xor rdx,rdx
- mov rcx,8
- div rcx
- mov rcx,rax
- mov rsi,qword ptr [ms_start]
- mov rdi,msmem
- rep movsq
- //mov rax,crc_bypass_init_done
- //inc [rax]
- popfq
- pop rdi
- pop rsi
- pop rdx
- pop rcx
- pop rax
- ret
- ////////////////////////////////////
- ms_start:
- DQ 140000000
- ms_end:
- DQ 14B3FC000
- ms_crc1:
- DQ 147F9045D
- ms_crc2:
- DQ 147B01A2B
- ms_crc1_start:
- DQ 140001005
- ms_crc1_end:
- DQ 14463E7FF
- ms_crc2_start:
- DQ 147F90149
- ms_crc2_end:
- DQ 147F906DD
- crc_bypass_init_done:
- DQ 00
- ////////////////////////////////////
- [disable]
- DeAlloc(msmem)
- DeAlloc(crc_bypass_entry)
- 147F9045D:
- add al,[r12]
- pop r12
- 147B01A2B:
- mov ecx,[rcx]
- add [r13+00],ecx
複製代碼 |
[發帖際遇]: kkmomo 招待「日本外賓」卻不慎「遲到」,為了避免被說閒話,只好「臨時改地點」後反指責外賓,損耗 2 楓幣 |
幸運榜 / 衰神榜 |
-
總評分: 楓幣 + 51
威望 + 7
鑰匙 + 6
GP + 9
查看全部評分
|