冰楓論壇
標題:
TwMS v241.2 MSCRC Bypass
[打印本頁]
作者:
kkmomo
時間:
2022-3-3 03:36
標題:
TwMS v241.2 MSCRC Bypass
提供三個版本
版本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
複製代碼
作者:
李崇文
時間:
2022-3-3 17:28
可以問一下副作用是甚麼嗎@@ 第一個
作者:
李崇文
時間:
2022-3-6 09:54
李崇文 發表於 2022-3-3 17:28
可以問一下副作用是甚麼嗎@@ 第一個
喔喔 我以為是很負面ㄉ 感謝
作者:
lgf328
時間:
2022-3-6 22:57
這個大神來的,心目中的
作者:
micky880612
時間:
2022-3-8 04:37
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
dgqweasdzxc
時間:
2022-3-9 22:31
本帖最後由 dgqweasdzxc 於 2022-3-9 22:32 編輯
請問這樣的流程:
1.遊戲play前注入 版本1代碼
2.然後進入遊戲后注入其他需CRC檢測的代碼
3.正常使用?
這樣的流程對嗎?大大!!
還有 最後弱弱的問下,thread是綫程,是指哪個的綫程啊?
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓