有啥逆向程序流程的技巧

关于系统性学习软件逆向,可以看看这个回答:为了CTF比赛,如何学习逆向和反汇编? - zheng yufeng 的回答我真的好想告诉你,你不明白原理,只学一些技巧长远来看没什么用.
■网友
好久没碰逆向了,我就说几条还记得住的吧善用堆栈 小到功能函数,大到“壳”,任何有意义的函数(不是运行完call就push个别的地址ret走的)都要维持堆栈。所以在分析函数、分析壳时,要多关注堆栈平衡
找到功能函数入口 除了直接用asm语言编出来的程序,其他各种语言都有一套固定的“底子”。多看文章、分析了解如果快速找到某按钮/过程的函数入口很重要。delphi有dede,其他的语言就靠经验了。(有点忘了,轻拍欢迎补充)
以函数为研究对象分析 除了一行一行分析最基本的函数外,最重要的目的是——这个函数(call)到底在实现什么功能?以堆栈输入的参数有哪些?寄存器的输出有哪些?输入用不用到寄存器?牵扯到哪些全局变量(直接读取写入在内存中而不走参数/寄存器)
静态和动态相结合 动态用OD,静态用IDA。现在IDA的X-RAY插件据说已经很完善了,不试试看?ida+od结合在ring3下就是神器……
加强基础 【有啥逆向程序流程的技巧】 SEH/TLS/多线程/基本反调试(虽然现在有插件了,但至少isdebuggerpresent这个api不能不知道吧)是基础内容……看懂了原理再实操比一上来就逆向要好得多……这一点推荐看雪的《加密与解密》以及看雪的精华集,几年前我还在玩逆向的时候,是每年出一版,每版收集当年论坛上的好文章,用处挺大的。平时没事可以玩玩crackme,试试做做注册机什么的。

■网友
占个坑等以后总结出一套方法体系后再来回答。这里就先力荐一本在国内被忽视的书:Surreptitious Software(国内译“软件加密与解密”,Christian Collberg与Jasvir Nagra著)国内的书谈软件安全大多像看雪的《加密与解密》主要讲技术,如何打断点,壳是什么,原理是什么,但对逆向的技巧和代码分析理论的讨论不多。这本书主要从数学的角度讲怎样加密,弥补了这一空缺,但遗憾的是,这本书主要是从防御的角度看安全,在攻的角度上涉及不多,不过仍可以作为参考资料。
■网友
轻量等级重点看寄存器 中量等级的重点看堆栈 大神等级的两个一起看CALL这种东西,重点看他的返回值 然后再回过头看push的参数,而且,不要单纯用OD,CE和OD一起用,CE找找标志位,很多关键性的标志位往上翻几层就是关键CALL了


    推荐阅读