-
-
[旧帖]
[求助]小弟刚学逆向,问的问题可能有点傻,大家别笑我。
0.00雪花
-
发表于:
2011-2-25 21:48
1340
-
[旧帖] [求助]小弟刚学逆向,问的问题可能有点傻,大家别笑我。
0.00雪花
今天才开始学习逆向,想把钱能的书上例子一点一点的逆下,想一点一点来。
今天第一个例子就问题重重呀,就是一般书上第一节都有的cout输出字符串。
首先我先用的OD载入,然后单步跟了下,到了一个CALL的时候在按F8程序就跑起来了。
然后我就在上边的那个CALL下了断点,然后重新载入在运行就到了那个CALL,我就以为那个CALL是调用main函数了
004033AF |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
004033B2 |. 52 PUSH EDX
004033B3 |. E8 38270000 CALL 16.00405AF0 ; 调用main函数
004033B8 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
004033BB |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
我跟进那个CALL发现那里面什么乱七八糟的的呀,根本看不明白。
后来我通过找字符串才找到代码,后来发现居然就是让程序跑起来的上一个CALL
0040339D |. 8B0D D0E04200 MOV ECX,DWORD PTR DS:[42E0D0]
004033A3 |. 51 PUSH ECX
004033A4 |. E8 5CDCFFFF CALL 16.00401005
004033A9 |. 83C4 0C ADD ESP,0C
004033AC |. 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
我晕,为什么当我单步走过调用main函数的那个CALL程序不跑偏偏跑到下一个CALL那程序才运行那。
我不知道我说了这么多有没有说明白我的不明白之处,希望没看明白我在说什么的朋友跟帖说下,我改语言简单点的。
说简单一点就是这个样子的。
004033A3 |. 51 push ecx
004033A4 |. E8 5CDCFFFF call 16.00401005 这个call实际是调用main函数,但是程序却没有跑。
004033A9 |. 83C4 0C add esp,0C
004033AC |. 8945 E4 mov [local.mainret],eax
004033AF |. 8B55 E4 mov edx,[local.mainret]
004033B2 |. 52 push edx ; /status
004033B3 |. E8 38270000 call 16.exit 看这个call的意识应该是退出的意识,但是程序单步跟中过这个CALL才跑起来。
004033B8 |. 8B45 EC mov eax,[local.5]
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课