首页
社区
课程
招聘
[原创]程序逆向技术之二变量和常量
2008-2-20 18:07 18560

[原创]程序逆向技术之二变量和常量

2008-2-20 18:07
18560
收藏
点赞7
打赏
分享
最新回复 (43)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dubingxin 2008-3-29 23:14
26
0
逆向技术很有前途!
雪    币: 14
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpinglove 2008-3-30 20:23
27
0
这小丫兜讲的不错,费话那块挺有意思!
这样的文章对于我来说,就是宝贝!
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pcwolf 2008-4-1 03:48
28
0
非常适合我们这些菜鸟
例子加详细的解说
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
songman 2008-4-22 22:20
29
0
感谢ing,学习下
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yangwenlin 2008-4-23 23:31
30
0
短点的看懂了,长的汇编明天慢慢看把
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zengming 2008-5-16 17:20
31
0
很强大  不过第一次看反汇编的资料  那个测试例子暂时没看懂
雪    币: 130
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ouyangtian 2008-5-16 19:57
32
0
不错啊,终于找到学习的入口点了
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mikeshmily 2008-5-16 22:51
33
0
好文章 非常容易理解 谢谢分享
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
btkped 2008-6-22 22:48
34
0
谢谢,这篇文章对我这个菜鸟很有用!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
C漫步者 2008-7-4 10:39
35
0
好贴,又学到了不少知识,谢谢
雪    币: 437
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jijimao 2008-7-7 19:56
36
0
这种文章应该多看啊,谢谢大侠了!
雪    币: 372
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
netknight 1 2008-7-7 22:10
37
0
恩简单易懂 菜鸟必学
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lixupeng 2008-7-8 12:38
38
0
哈哈不错学习!!!
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
qduwg 35 2008-7-10 16:39
39
0
//-------------------------------------------
0040135F  /$  55            push    ebp
00401360  |.  8BEC          mov     ebp, esp
00401362  |.  83EC 10       sub     esp, 10
00401365  |.  C745 F8 01000>mov     dword ptr [ebp-8], 1
0040136C  |.  C745 FC 02000>mov     dword ptr [ebp-4], 2
00401373  |.  C745 F0 03000>mov     dword ptr [ebp-10], 3
0040137A  |.  C745 F4 04000>mov     dword ptr [ebp-C], 4
00401381  |.  8BE5          mov     esp, ebp
00401383  |.  5D            pop     ebp
00401384  \.  C3            retn

//-------------------------------------------

我们不难分析出栈顺序intbuf2-intbuf1-intbuf4-intbuf3,我不说了,大家自己思考编译器是如果解释变量的,而我们

============================
以上楼主说变量的"出栈顺序"是intbuf2-intbuf1-intbuf4-intbuf3,这里建议您修改一下说法,最好说成变量的分配顺序而已.  出栈只是在函数调用结束时才出栈.
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 7 2008-9-18 10:22
40
0
好好学习,天天向上
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tryagain 2008-10-12 13:02
41
0
写的很清晰,谢谢楼主
雪    币: 3754
活跃值: (1785)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
comewhere 1 2008-10-12 21:43
42
0
好文章,顶下.................
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
godear 2008-10-15 16:59
43
0
好文章,不错哦,学习一下啦,谢谢
雪    币: 202
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
菜菜小J 2009-5-16 19:03
44
0
//-------------------------------------------
0040135F /$ 55 push ebp
00401360 |. 8BEC mov ebp, esp
00401362 |. 83EC 10 sub esp, 10
00401365 |. C745 F8 01000>mov dword ptr [ebp-8], 1
0040136C |. C745 FC 02000>mov dword ptr [ebp-4], 2
00401373 |. C745 F0 03000>mov dword ptr [ebp-10], 3
0040137A |. C745 F4 04000>mov dword ptr [ebp-C], 4
00401381 |. 8BE5 mov esp, ebp
00401383 |. 5D pop ebp
00401384 \. C3 retn

//-------------------------------------------

我们不难分析出栈顺序intbuf2-intbuf1-intbuf4-intbuf3,我不说了,大家自己思考编译器是如果解释变量的,而我们

============================
以上楼主说变量的"出栈顺序"是intbuf2-intbuf1-intbuf4-intbuf3,这里建议您修改一下说法,最好说成变量的分配顺序而已. 出栈只是在函数调用结束时才出栈.


入栈顺序,笔误吧,就是个赋值操作,利用栈空间保存变量值。依X86优化编码准则里提及的,大多编译器都是这样来为局部变量分配栈空间的。

“栈分配:当为某一过程中的局部变量或参数传递变量分配空间时,避免使用PUSH操作,而代之以调整栈指针,然后进行MOVE操作的方法。这种方法允许随机访问这些变量。这样,这些变量可以在过程被调用时建立,而不比在内存中时刻保存它们;同时,该方法也降低了栈指针寄存器ESP的相对性,并且占用执行资源较少。”

直接操作ESP,和利用EBP为一个参照基准+不同的偏移量来赋值,比起过程中大量的使用PUSH和POP直观得多、灵活得多。有时候一个不留神多了一个PUSH或POP就容易造成栈顶超界问题。
游客
登录 | 注册 方可回帖
返回