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

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

2008-2-20 18:07
19337
收藏
免费 7
支持
分享
最新回复 (43)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
逆向技术很有前途!
2008-3-29 23:14
0
雪    币: 14
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
这小丫兜讲的不错,费话那块挺有意思!
这样的文章对于我来说,就是宝贝!
2008-3-30 20:23
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
非常适合我们这些菜鸟
例子加详细的解说
2008-4-1 03:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
感谢ing,学习下
2008-4-22 22:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
短点的看懂了,长的汇编明天慢慢看把
2008-4-23 23:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
很强大  不过第一次看反汇编的资料  那个测试例子暂时没看懂
2008-5-16 17:20
0
雪    币: 130
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
不错啊,终于找到学习的入口点了
2008-5-16 19:57
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
好文章 非常容易理解 谢谢分享
2008-5-16 22:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
谢谢,这篇文章对我这个菜鸟很有用!
2008-6-22 22:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
好贴,又学到了不少知识,谢谢
2008-7-4 10:39
0
雪    币: 437
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
这种文章应该多看啊,谢谢大侠了!
2008-7-7 19:56
0
雪    币: 372
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
37
恩简单易懂 菜鸟必学
2008-7-7 22:10
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
哈哈不错学习!!!
2008-7-8 12:38
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
39
//-------------------------------------------
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,这里建议您修改一下说法,最好说成变量的分配顺序而已.  出栈只是在函数调用结束时才出栈.
2008-7-10 16:39
0
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
40
好好学习,天天向上
2008-9-18 10:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
写的很清晰,谢谢楼主
2008-10-12 13:02
0
雪    币: 4584
活跃值: (2520)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
42
好文章,顶下.................
2008-10-12 21:43
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
好文章,不错哦,学习一下啦,谢谢
2008-10-15 16:59
0
雪    币: 202
活跃值: (151)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
//-------------------------------------------
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就容易造成栈顶超界问题。
2009-5-16 19:03
0
游客
登录 | 注册 方可回帖
返回
//