看流星社区

 找回密码
 注册账号
查看: 3533|回复: 5

注入call求助.

[复制链接]

该用户从未签到

发表于 2011-3-25 08:30:01 | 显示全部楼层 |阅读模式
04D354FF    68 04010000     push 104
04D35504    50              push eax
04D35505    8D4424 14       lea eax,dword ptr ss:[esp+14]
04D35509    50              push eax
04D3550A    E8 11120100     call hw.04D46720
04D3550F    A1 3497D305     mov eax,dword ptr ds:[5D39734]
04D35514    83C4 0C         add esp,0C

这后面add esp,0c了.我还要在注入器里写add esp,0c吗?
我写与不写,程序都会出错.就像堆栈没平衡那样.
是不是因为我的寄存器传递值写错了?这个是写步过CALL后ECX的值.还是CALL前?
CALL前ecx的值是0.
我甚至把整个CALL前的4个寄存器的值都写了.还是出错.
听人说要去内部看..
进了内部,可惜我不知道怎么看- -

下面是call内部
04D46720    8B4C24 08       mov ecx,dword ptr ss:[esp+8]
04D46724    8B5424 04       mov edx,dword ptr ss:[esp+4]
04D46728    56              push esi
04D46729    8B7424 10       mov esi,dword ptr ss:[esp+10]
04D4672D    85C9            test ecx,ecx
04D4672F    57              push edi
04D46730    74 13           je short hw.04D46745
04D46732    8A01            mov al,byte ptr ds:[ecx]
04D46734    84C0            test al,al
04D46736    74 0D           je short hw.04D46745
04D46738    8BFE            mov edi,esi
04D4673A    4E              dec esi
04D4673B    85FF            test edi,edi
04D4673D    74 06           je short hw.04D46745
04D4673F    8802            mov byte ptr ds:[edx],al
04D46741    42              inc edx
04D46742    41              inc ecx
04D46743  ^ 75 ED           jnz short hw.04D46732
04D46745    5F              pop edi
04D46746    85F6            test esi,esi
04D46748    5E              pop esi
04D46749    7E 03           jle short hw.04D4674E
04D4674B    C602 00         mov byte ptr ds:[edx],0
04D4674E    C3              retn

该用户从未签到

发表于 2011-3-25 08:30:18 | 显示全部楼层
出错一般是PUSH少了或者数据传错了。  
add esp,0C  这句还是应该加上吧

如果返回上一级看看呢

该用户从未签到

发表于 2011-3-25 08:30:31 | 显示全部楼层
在 04D3550A    E8 11120100     call hw.04D46720 %~qY\>   这行下断.触发断点.跑2次.看看参数是否有变化.没变化的话直接照抄OD.模拟CALL下看看.没问题了往回找两个EAX.

push 104
push a
push b
call 4d46720
add esp,0c

应该是这样吧.

该用户从未签到

 楼主| 发表于 2011-3-25 08:31:02 | 显示全部楼层
好像这个CALL和前后有关联的- -
mov esi,065E15E8
mov edi,01c
push 104
push 05d38ae0     '这是写IP的
push 0402F020     '这里是栈里的值,为0...但是写0的话..会直接出错,我不知道怎么说- -
mov eax,0402F020
call 04D46720
mov eax,04D3550F
mov [esp+0c],eax

单独
push 104
push 05d38ae0
push 0402F020
call 04D46720
add esp,0c 不会出错.
但是不会返回到上一个CALL的后面,是返回到kxxxxxx32.dll去了
我就写了
mov eax,04D3550F
mov [esp+0c],eax
强行让他返回那.结果出错.

该用户从未签到

发表于 2011-3-25 08:31:17 | 显示全部楼层
04D3550A    E8 11120100     call hw.04D46720  
出错了,这个CALL是不是被主程序调用?还是这个调用CALL跟上面的代码本来就是一个子程序?还需要往上一层找吗?你得把这几个问题搞清楚。。。

该用户从未签到

发表于 2011-3-25 08:31:29 | 显示全部楼层
看你有多少个PUSH写进去了,4个就add esp,10
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

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

GMT+8, 2024-3-29 03:17

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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