首页
社区
课程
招聘
[旧帖] [求助]今天用ollydbg反汇编了一个用VC6.0编译的.exe文件,遇到了三个问题希望有大神好心指导一下我 0.00雪花
发表于: 2012-2-29 00:22 2105

[旧帖] [求助]今天用ollydbg反汇编了一个用VC6.0编译的.exe文件,遇到了三个问题希望有大神好心指导一下我 0.00雪花

2012-2-29 00:22
2105
源程序是这样的

#include <stdio.h>
int add(int a,int b);
int main()
{
int a=5,b=6;
add(a,b);
return 0;
}
add(int x,int y)
{
return(x+y);
}

第一个问题是:为什么ES、SS、DS的值都一样(不是代表不同的段吗?)

第二个问题是:根据汇编的结果说明,当程序进入main()时,

                        编译器做了个操作是LEA EDI,DWORD PTR SS:[EBP-48]

                                                      MOV ECX,12

                                                      MOV EAX,CCCCCCCC

                                                      REP STOS DWORD PTR ES:[EDI]

                       为什么ECX的值是12(十六进制)?

第三个问题是:ntdll.7C930208,它的函数地址出现在stack里

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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 807
活跃值: (2218)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你的意图是什么,就破解和逆向而言,你所关心的这3个问题,并不比探讨用多长时间可以把家里炒菜用的锅底洗白更有价值!凡事不要事无巨细,要画龙点睛,要抓住要害!
2012-2-29 00:49
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚刚开始学相关的知识,想把问题弄的透彻一点,所以问了这三个问题。也许是徒劳吧。
2012-2-29 09:33
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
4
第一个问题找本32汇编的书上都有讲,里面放的是段选择子,因为是平坦寻址,所以都用不到
第二个问题,因为你编译的是debug版,编译器会用cc填充局部变量空间,换release版就好了
第三个问题没听明白,stack里低于esp的部分都是实际上存在,但逻辑上已经销毁的东西,可能曾经此处存放过返回地址
2012-2-29 09:44
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没看明白 神马意思
2012-2-29 09:46
0
雪    币: 11
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主很认真,值得学习!!
2012-2-29 09:50
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
1.那個區段給dos用的,windows的通常用到的機率不大。
3.windows 有一個process loader,一開始載入之後,stack的直視process loader的位置。
2012-2-29 09:55
0
雪    币: 71
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2楼老伙计正解,我们刚开始不必如此挖掘深处,待你掌握到一定程度,再来一个回马枪,你会有峰回路转、柳暗花明、醍醐灌顶的感觉。但在此之前你必须有一定的沉淀,积累。加油~ 
2012-2-29 11:01
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵。。。。
2012-2-29 14:32
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我也知道为什么用CC(INT3)填充,就是不知道为什么ECX的值是12(十六进制),即为什么给stack开辟了12(十六进制)的DWORD空间。最后一个问题我没有说清楚,其实我想问ntdll.7C930208这个函数的功能是什么,它出现在stack中的位置:
                                              5
                                                                     6
                                                                     ntdll.7C930208
5、6就是add要用的参数,地址从下往上递增
2012-2-29 20:28
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
经bitt同志的点拨,我弄懂第二个问题了,原来在编译debug版时,会多分配堆栈空间用于之后的调试。
2012-2-29 22:54
0
游客
登录 | 注册 方可回帖
返回
//