|
|
|
|
||
【文章标题】: F8 CALL 01 “计算积”分析视频教程
【文章作者】: redrose
【作者邮箱】: xiao_xiao0928@tom.com
【作者主页】: www.wgbcw.cn
【作者QQ号】: 644297310
【软件名称】: F8 CALL 01
【软件大小】: 423KB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Delphi
【使用工具】: Ollydbg、屏幕录像专家V7.5、Code Injector、Delphi7.0
【操作平台】: XPSP3
【软件介绍】: CALL分析小程序
【作者声明】: 感谢F8 CALL源程序提供作者,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
说明:本次视频只对F8 CALL 01中的“计算积”做分析。
第一步:Ollydbg直接载入程序。暂停在程序入口,按下F9运行。
第二步:下断点bp send。回到目标程序按下“计算和”按钮,断在了send函数入口,现在我们按下CTRL+F9执行到返回。
接下来我们按下F8,来到send函数调用处的下一条语句。接着再按下CTRL+F9执行到返回。再按下CTRL+F9执行到返回,接
着按下F8单步,呵呵,这回又来到这样的代码段,这个和“计算和”的汇编代码是不是很类似。
MOV EAX,DWORD PTR DS:[EBX+378]
CALL call01.00439CEC
MOV EAX,DWORD PTR SS:[EBP-4]
CALL call01.00408858
PUSH EAX
LEA EDX,DWORD PTR SS:[EBP-8]
MOV EAX,DWORD PTR DS:[EBX+374]
CALL call01.00439CEC
MOV EAX,DWORD PTR SS:[EBP-8]
CALL call01.00408858
PUSH EAX
PUSH EBX
CALL call01.00459A78
004598CB |. 8B83 78030000 MOV EAX,DWORD PTR DS:[EBX+378] ; 我们在这F2下断后回到目标程序按下“计算积”按钮分析下。
004598D1 |. E8 1604FEFF CALL call01.00439CEC
004598D6 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004598D9 |. E8 7AEFFAFF CALL call01.00408858 ; 进入文本10进制字符转16进制字符
004598DE |. 50 PUSH EAX ; EAX=00000023 =35 可以看出这里的被乘数
004598DF |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004598E2 |. 8B83 74030000 MOV EAX,DWORD PTR DS:[EBX+374]
004598E8 |. E8 FF03FEFF CALL call01.00439CEC
004598ED |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004598F0 |. E8 63EFFAFF CALL call01.00408858 ; 同上面,进入文本10进制字符转16进制字符
004598F5 |. 50 PUSH EAX ; EAX=00000012= 18 可以看出这里的乘数
004598F6 |. 53 PUSH EBX ; EBX=00A77170,这里必须要压入,我们进去看下为什么
004598F7 |. E8 7C010000 CALL call01.00459A78 ; 不难看出这就是“计算和”按钮差不多吧,所以可以断定这里就是“计算积”的按钮CALL
到这里我们可以先把刚才下断的send函数这里去掉断点了。在
71A24C27 > 8BFF MOV EDI,EDI ; 断在了send函数入口
这里直接按下F2也行,或者到OD命令窗口输入:bc send。
第三步:测试CALL的正确性。工具用Code Injector。刚才我们操作了,上面的测试,正确。接下来我们换个数字看看。好
了正确。
第五步:编写测试程序。我们还是用Delphi7.0为大家演示,以后有时间用VB、易语言也做个。
这次我们就用一种方法来做演示,代码如下:
var
a,b : Integer ;
begin
a:= StrToInt(edt1.Text);
b:= StrToInt(edt2.Text);
asm
push a
push b
push $00A77170
mov eax,$00459A78
call eax
end;
end;
代码写好后,用进程注入工具注入目标进程。呵呵这时你可以随便输入什么值都可以测试了。好了这样就完成了“计算积”
的CALL函数。本次教程到次已经达到我们的目的了。下次再见,谢谢。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于潇潇的编程网站, 转载请注明作者并保持文章的完整, 谢谢!
2009年04月18日 21:09:53