看流星社区

 找回密码
 注册账号
查看: 1892|回复: 4

求大神指点一下代码,魔鬼作坊模块的问题。

[复制链接]

该用户从未签到

发表于 2013-5-26 08:18:40 | 显示全部楼层 |阅读模式
这是在OD中找到的CALL,代码和摩恩老师找到的一样。代码中EBP是基址,摩恩老师找到的基址是ebx,我的是ebp.

0047C600  |.  8B8D E00C0000 MOV ECX,DWORD PTR SS:[EBP+CE0]   
0047C606  |.  6A 01         PUSH 1
0047C608  |.  E8 73960000   CALL ElementC.00485C80                  


0047C60D  |.  8BF0          MOV ESI,EAX
0047C60F  |.  8D4424 48     LEA EAX,DWORD PTR SS:[ESP+48]
0047C613  |.  33DB          XOR EBX,EBX
0047C615  |.  50            PUSH EAX
0047C616  |.  53            PUSH EBX
0047C617  |.  8BCE          MOV ECX,ESI
0047C619  |.  E8 F2E50000   CALL ElementC.0048AC10


0047C61E  |.  8D8C24 980000>LEA ECX,DWORD PTR SS:[ESP+98]
0047C625  |.  8D9424 8C0000>LEA EDX,DWORD PTR SS:[ESP+8C]
0047C62C  |.  51            PUSH ECX
0047C62D  |.  52            PUSH EDX
0047C62E  |.  8BCE          MOV ECX,ESI
0047C630  |.  E8 1BE70000   CALL ElementC.0048AD50


0047C635  |.  8B8D E00C0000 MOV ECX,DWORD PTR SS:[EBP+CE0]
0047C63B  |.  53            PUSH EBX
0047C63C  |.  6A 01         PUSH 1
0047C63E  |.  56            PUSH ESI
0047C63F  |.  6A 01         PUSH 1
0047C641  |.  E8 2A9B0000   CALL ElementC.00486170                  



以下是我写的汇编代码,用的魔鬼作坊5.1的模块,但是调用就卡死不知道为什么

调用其他的CALL都没问题,我写错了吗?求指导



子程序 _按钮1_被单击
.局部变量 x1, 整数型
.局部变量 y1, 整数型
x1 = 到整数 (编辑框1.内容)
y1 = 到整数 (编辑框2.内容)
自动走路 (x1, y1)

.子程序 自动走路
.参数 x, 整数型
.参数 y, 整数型
asm_置代码 ()
asm_pushad ()
asm_mov_eax_ptr (十六到十 (#基址))
asm_mov_eax_ptr_eax_add (十六到十 (“1c”))
asm_mov_ebp_ptr_eax_add (十六到十 (“28”))
asm_mov_ecx_ptr_ebp_add (十六到十 (“CE0”))
asm_push (十六到十 (“1”))
asm_mov_eax_常数 (十六到十 (“00485C80”))
asm_call_eax ()
asm_mov_esi_eax ()
asm_lea_eax_ptr_esp_add (十六到十 (“48”))
asm_xor_ebx_ebx ()
asm_push_eax ()
asm_push_ebx ()
asm_mov_ecx_esi ()
asm_mov_eax_常数 (十六到十 (“0048AC10”))
asm_call_eax ()
asm_lea_ecx_ptr_esp_add (十六到十 (“98”))
asm_lea_edx_ptr_esp_add (十六到十 (“8c”))
asm_push_ecx ()
asm_push_edx ()
asm_mov_ecx_esi ()
asm_mov_eax_常数 (十六到十 (“0048AD50”))
asm_call_eax ()
asm_mov_ecx_ptr_ebp_add (十六到十 (“0CE0”))
asm_push_ebx ()
asm_push (十六到十 (“1”))
asm_push_esi ()
asm_push (十六到十 (“1”))
asm_mov_eax_常数 (十六到十 (“00486170”))
asm_call_eax ()
asm_mov_eax_ptr (十六到十 (#基址))
asm_mov_eax_ptr_eax_add (十六到十 (“1c”))
asm_mov_eax_ptr_eax_add (十六到十 (“28”))
asm_mov_eax_ptr_eax_add (十六到十 (“CE0”))  ' 目标改变数字
asm_mov_eax_ptr_eax_add (十六到十 (“30”))
asm_mov_ecx_ptr_eax_add (十六到十 (“4”))
asm_mov_eax_常数 (取字节集数据 (到字节集 (x), #整数型, ))
asm_mov_ptr_ecx_add_eax (十六到十 (“20”))
asm_mov_eax_ptr (十六到十 (#基址))
asm_mov_eax_ptr_eax_add (十六到十 (“1c”))
asm_mov_eax_ptr_eax_add (十六到十 (“28”))
asm_mov_eax_ptr_eax_add (十六到十 (“CE0”))  ' 目标改变数字
asm_mov_eax_ptr_eax_add (十六到十 (“30”))
asm_mov_ecx_ptr_eax_add (十六到十 (“4”))
asm_mov_eax_常数 (取字节集数据 (到字节集 (y), #整数型, ))
asm_mov_ptr_ecx_add_eax (十六到十 (“28”))
asm_ret ()
asm_popad ()
asm_调用函数 (进程ID, asm_取代码 ())

该用户从未签到

发表于 2013-5-26 08:48:16 | 显示全部楼层
输出调试文本 (字节集转为汇编指令 (asm_取代码 (), ))
加上这句在asm_调用函数后面,输出汇编看看就清楚了。

该用户从未签到

 楼主| 发表于 2013-5-26 09:30:07 | 显示全部楼层
回复 2# 遗失记忆


    我的是5.1破解模块好像不能调试

该用户从未签到

发表于 2013-5-27 00:09:18 | 显示全部楼层
我也遇到过 不过后来我直接去学寻路CALL了 再就是你要注意基址+偏移 还是加字节的命令 他讲课的模块式以前的命令  还有一个就是XOR EBX,EBX  4.01模块调用这句  输出调试代码发现变成了XOR EaX,EBX  特别的蛋疼 后来换5.0了才能调用这个CALL了

该用户从未签到

发表于 2013-5-28 08:46:10 | 显示全部楼层
XOR EBX,EBX
等同于:mov ebx,0
2者都是将EBX寄存器弄为0~
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-23 19:53

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表