0. 这个笔记写了什么
开篇故事
开篇,我要先讲一个记忆深处的故事:
好多好多年前,在一个风和日丽的晚上;我们一群人走在黑漆漆的校园里,这时候丘比龙学长说: "你们知道吗,至今为止,我只见过三个人肉逆向机,一个是我的学长 monster,一个是清华的xxx, 一个是...."
那时懵懵懂懂的我啥也不懂,不理解"人肉逆向机"的含义。
"那怎么才能成为人肉逆向机呢?"
"我也不知道,但是我知道,无一例外,这几个人在十几岁开始就研究逆向了"
“那时候我还在玩泥巴咧!”
这个故事到现在已经快10年了,至今我也不知道怎么成为"人肉逆向机"。
也许是天赋的问题?就好像“我看懂了,因此我知道我学不会”,这种类型兵种的根本没有重复批量生产的方法论?每个人都独一无二。
这个系列的文章是我对逆向工作的一些简单的总结,以及“我理想中的逆向世界”,
祝各位大佬人人都能成为究极人肉逆向机,看到汇编后源代码就从脑子里往外冒。
与同类文章的区别
“我觉得,琢磨源码与二进制的对应关系是有乐趣的”
国内的几个解放军工程学院的老师也有出版反编译器设计的old-school书籍,我看了,真是熟悉的感觉,回到了学习什么《信号与系统》、《通信原理》的年代。
”与其说是一本教学用的书籍,更像是博士毕业论文”
大量的程序分析算法,配合上学术论文的引用,很难看得下去。对于我这种不算学术界的人,学起来体验十分困难。
我觉得,对于我们平时的工作生活,很难用到这些定理与算法,明白反编译器为什么这么做,明确好输入与输出,确认使用的场景,更加重要。
因此,进阶的反编译教学或许应该长这样:
用提出问题+解决问题的方法叙述
尽量用图形表示
不要复杂的算法,不要学术语言,要有乐趣
小白也能看懂+学到知识(这好像不太可能)
学到的知识最好在实战有意义!
为啥要看这本书
当我还是一个小白的时候,只会用IDA的F5进行逆向。什么Angr,中间语言,OLLVM 看的我是一脑袋浆糊。这还不是最麻烦的,最麻烦的是不知道自己哪里不懂。也不知道怎么接下去学习。
我希望通过这本书提供一个过渡的桥梁,通过理解IDA的F5或者其它反编译器类似的技术的核心,以此来逐渐脱离对F5的依赖,掌握静态逆向的核心技术—> 反“编译器”。
透过反编译技术,理解程序为什么编译成这个样子,这么还原回去;熟悉反编译器的架构,最终当F5不起作用了,能够自己分析然后解决问题,甚至写出自己的F5来。
同时,实践的章节还将一步一步的教会基于ida、ghidra、angr等工具自己开发自己的逆向能力+逆向插件。
其它的?
除了关于反编译技术的理论补充,我也想加入一些深度混淆对抗的讨论章节。
随着反编译混淆技术的发展,原始的OLLVM,VMP等技术的进一步发展,以后的逆向对抗的难度一定是越来越深的。在这里尝试讨论一些针对不同的变种混淆的深度定制还原技术,寻找更好的解决方案。
Last updated