首页
社区
课程
招聘
[旧帖] [求助]小弟刚学逆向,问的问题可能有点傻,大家别笑我。 0.00雪花
发表于: 2011-2-25 21:48 1340

[旧帖] [求助]小弟刚学逆向,问的问题可能有点傻,大家别笑我。 0.00雪花

2011-2-25 21:48
1340
今天才开始学习逆向,想把钱能的书上例子一点一点的逆下,想一点一点来。
今天第一个例子就问题重重呀,就是一般书上第一节都有的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直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 183
活跃值: (1058)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
确实没怎么懂 建议 用 编译器自带的调试器 转到反汇编 对比
2011-2-25 21:54
0
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
main 的调用有个特点: 就是附近会有连续4个Push 。跟西文方失败学的,不知对你有帮助没。
2011-2-25 21:58
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
VC++自带的我用了,主要是我想学习下OD和IDA。
我的问题就是
调用CALL 16.00405AF0的时候程序跑起来了,但是这个CALL不是main函数。
调用CALL 16.00401005才是调用的main函数,但是我单步过这地方的时候程序并没有跑起来,而是在下一个CALL也就是CALL 16.00405AF0的时候跑起来了。。。
2011-2-25 22:02
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
5
嘿嘿~~04年的兄弟教了你一招~~
2011-2-25 22:15
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我怎么没看到上边有连续的4歌push呀。
2011-2-26 12:50
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
随便看一看。
2011-2-26 13:00
0
游客
登录 | 注册 方可回帖
返回
//