soso 发表于 2014-12-5 11:39

逆向原理(破解教学)第二节 栈的基本原理

现在随便扯谈下,由于最近真的太忙太忙,所以我自己的逆向原理第二节一直没更新。其次我真的不知道,我该不该继续更新这个教学,因为很多时候我发现我发布出来都是很基础很基础的东西,
毕竟以前的我玩逆向,感觉很简单,各种自我高兴,谁不知,玩到网络验证时,不知道原理了。也摸索不出来了,才发现原来基础真的太薄弱了。
所以我建议大家,逆向这个东西永远学不完,慢慢学,但是一定要把基础打结实(这个建议是@扫地僧,@Shark恒等等大大以前就教导我的,所以我一直牢记)

不瞎扯了,进入逆向原理第二节(也就是我的自己的一些心得和笔记也不能算教程),大牛们别嘲讽我。菜鸟刚起步!



“栈的基本原理”


先简单的说下“栈”在内存在进程中的作用:
1、暂时保存函数的局部变量
2、调用函数的传递参数
3、保存函数返回后的地址
但是切记,“栈”有一个很重要的原理就是First in Last out,这个英文是什么意思,我解释下就是:后入栈的信息优先出栈。(好吧,感觉有点抽象稍后我截图给大家并标记下给大家估计更容易理解。其次@Shark恒老师的教学里面有一课,就是VM了以后,对窗体事件进行了简单的VM还原,就是这个概念,通过压入栈的数据以及地址,然后按照后进先出的顺序进行了还原。再次膜拜@Shark恒老师)


我找了下图片给大家理解下这个“栈”内存结构的。




栈顶指针出事状态一般是指向栈底端,执行PUSH命令将数据压入栈时,栈的指针就会逐步向上移动(图片中红色箭头我标注出方向了),
执行POP命令从栈中弹出数据时,逐步向下,若数据全部出栈完,那么指针又回到了栈底(栈可以理解成是一种由高地址向低地址扩展的数据结构)
总结:我理解的栈就是,压入数据时砌一层砖,逐步逐步的向上的。



具体的我演示下给大家看看




这是OD载入程序后的一个截图,栈的初始指针是12FFC4,然后看右下ESP指向的地址(注意看下我红色箭头标记出来的地方)



简单的理解,PUSH汇编命令就是压入栈的意思。首先看汇编栏:执行了PUSH 100的汇编指令后 数值100压入栈内,ESP随之向上移动,并且寄存器ESP的值减少了4个字节(注意看第一张图和第二张图红箭头地方的数据对比)



继续简单的理解,执行POP,EAX命令后,ESP的值又增加了4个字节,变为最早的12FFC4,证明了释放栈中数据后,ESP向下移动。
并且注意下EAX的值是100那么就证明,100已经保存在EAX寄存器中。(一定要多对比几张图片箭头标注的地方,不然像我这样的新手是很难理解的,比如@雨季@歪歪@小丸子@扫地僧   @晓龙这些大神完全飘过吧,他们都已经是超神的节奏。)


总而来概括下:向栈压入数据时,栈顶指针减小,向低地址移动,向栈中释放数据时,栈顶指针增加,向高地址移动


好吧,这节逆向最主要的就是介绍下栈的工作原理,其次栈于栈定指针的变化十分重要,调试软件的时候一定要密切关注。


以上教学记录由@扫地僧,@小丸子,@雨季,@歪歪,@格盘,@轮回等等大大发布的,我只是帮他们编辑发布下。




                                                                                                                                          吾爱汇编论坛:soso


看帖,不回复,不评分的,以后拉黑处理。。。。你们的评分以及回复是大大们讨论的动力,是我编辑发布的支柱。。。。。

以前的教程地址(陆续发布中,不过可能会慢点。)


逆向原理(逆向教学)第一节 常用的调试方法            





许先生 发表于 2014-12-5 12:14

我也是进来膜拜的{:6_197:}

Crook 发表于 2014-12-5 11:44

嗯嗯逆向确实要注意这些 很重要的堆栈平衡原理

轮回 发表于 2014-12-5 11:46

我是进来膜拜各种大牛的,比如扫地啊,歪歪啊,雨季啊,格盘啊。大魔王啊全部,因为我是菜鸟。我不会,强烈支持楼主继续更新!

大官人 发表于 2014-12-5 11:46

已转载{:5_116:}

雨季 发表于 2014-12-5 11:49

我是进来膜拜各种大牛的,比如扫地啊,歪歪啊,轮回啊,格盘啊。大魔王啊全部,因为我是菜鸟。我不会,强烈支持楼主继续更新!

歪歪 发表于 2014-12-5 11:59

我是进来膜拜各种大牛的,比如SOSO啊,扫地啊,雨季啊,格盘啊。大魔王啊,轮回啊全部,

因为我是菜鸟。我不会,强烈支持楼主继续更新!) U

soso 发表于 2014-12-5 12:13

大官人 发表于 2014-12-5 11:46
已转载

转载,不评分。以后啦黑你!

haliyou001 发表于 2014-12-5 12:29

谢谢分享,我觉得用到的时候再来消化这篇文章更有效果

深拥 发表于 2014-12-5 12:59

进来膜拜下大大。嘿嘿。
页: [1] 2 3 4 5 6
查看完整版本: 逆向原理(逆向教学)第二节 栈的基本原理