首页
社区
课程
招聘
[旧帖] [求助]帮忙分析一段汇编代码 0.00雪花
发表于: 2007-11-15 22:49 3887

[旧帖] [求助]帮忙分析一段汇编代码 0.00雪花

2007-11-15 22:49
3887
如题,学习目的……

对话框点击按钮后……
00401890   .  push    ecx
00401891   .  push    ebx
00401892   .  push    ebp
00401893   .  push    esi
00401894   .  push    edi
00401895   .  mov     esi, ecx
00401897   .  push    1
00401899   .  call    <jmp.&MFC42.#6334_CWnd::UpdateDa>
0040189E   .  mov     eax, dword ptr [esi+E8]    ;字符串1,程序自动给出的
004018A4   .  mov     ebx, dword ptr [<&MSVCRT.atol>]  ;  msvcrt.atol
004018AA   .  mov     edi, dword ptr [esi+E4]     ;字符串2,输入的
004018B0   .  lea     ebp, dword ptr [esi+E4]
004018B6   .  push    eax                              ; /s
004018B7   .  call    ebx                              ; \ato
;将程序给出的字符串转化为long,放在eax中???
004018B9   .  mov     edx, eax
004018BB   .  push    edi         ;保存用户输入的字符串,目的何在???
004018BC   .  sub     edx, 2382         ;转化后的数减去2382
004018C2   .  mov     dword ptr [esp+18], edx          ;放在栈中,目的何在???
004018C6   .  call    ebx                     ;还是atol???
004018C8   .  mov     ecx, dword ptr [esp+18]           ;把什么放在ecx中了???
004018CC   .  add     esp, 8               ;何意???
004018CF   .  cmp     eax, ecx            
004018D1      jnz     short 004018E9        ;爆破点,改为两个nop就破了。

我没搞懂它是怎么算的。
atol,是不是把eax开始的串转换成数字,再放在eax中吗?

程序是什么逻辑,还请大家帮忙分析!
小弟写过

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 221
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
UpdateData( TURE );
if( ( atol([esi+E8]) - 2382  != atol([esi+E4] ) )
     jmp short 004018E9;
2007-11-15 23:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=ComexeHy;381741]UpdateData( TURE );
if( ( atol([esi+E8]) - 2382  != atol([esi+E4] ) )
     jmp short 004018E9;...[/QUOTE]
谢谢!

但还有点不解
……atol([esi + E4])……
004018C6   .  call    ebx
atol什么时候把[esi+E4]作为参数了呢?
只见到004018BB   .  push    edi         
没见到把它取出来啊?
2007-11-15 23:25
0
雪    币: 210
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
004018AA   .  mov     edi, dword ptr [esi+E4]     ;字符串2,输入的
.............
004018BB   .  push    edi         ;保存用户输入的字符串,目的何在???
................
004018C6   .  call    ebx                     ;还是atol???
2007-11-16 10:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=jzfcf;381841]004018AA   .  mov     edi, dword ptr [esi+E4]     ;字符串2,输入的
.............
004018BB   .  push    edi         ;保存用户输入的字符串,目的何在???
................
00401...[/QUOTE]
懂了,参数嘛,当然入栈了。对!
谢谢!
2007-11-17 02:51
0
游客
登录 | 注册 方可回帖
返回