能力值:
( LV2,RANK:10 )
|
-
-
26 楼
逆向技术很有前途!
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
这小丫兜讲的不错,费话那块挺有意思!
这样的文章对于我来说,就是宝贝!
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
非常适合我们这些菜鸟
例子加详细的解说
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
感谢ing,学习下
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
短点的看懂了,长的汇编明天慢慢看把
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
很强大 不过第一次看反汇编的资料 那个测试例子暂时没看懂
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
不错啊,终于找到学习的入口点了
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
好文章 非常容易理解 谢谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
谢谢,这篇文章对我这个菜鸟很有用!
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
好贴,又学到了不少知识,谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
这种文章应该多看啊,谢谢大侠了!
|
能力值:
( LV4,RANK:50 )
|
-
-
37 楼
恩简单易懂 菜鸟必学
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
哈哈不错学习!!!
|
能力值:
( 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,这里建议您修改一下说法,最好说成变量的分配顺序而已. 出栈只是在函数调用结束时才出栈.
|
能力值:
( LV9,RANK:290 )
|
-
-
40 楼
好好学习,天天向上
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
写的很清晰,谢谢楼主
|
能力值:
( LV4,RANK:55 )
|
-
-
42 楼
好文章,顶下.................
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
好文章,不错哦,学习一下啦,谢谢
|
能力值:
( 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就容易造成栈顶超界问题。
|
|
|