查看文章 |
逆向分析,是安全界永恒不变的主题, 就算未来世界是开源的. 也还是离不开逆向技术.
不管你是分析病毒,搞漏洞研究等等方面都离不开这. 逆向技术和脚本分析不一样. 脚本分析是开源方面的, 至少你学一门脚本语言就可以马上上手进行脚本漏洞发掘. 逆向技术需要的知识很广,想要从那一片片二进制数据中找从脆弱的地方, 确实需要很大的努力. 至少你要对PE文件格式有所了解. 熟悉PE对你以后脱未知壳是很有帮助的. 我不建议一开始就学汇编. 汇编对大多数人来说确实是个很头痛的东西. 里面的至少太抽象了,对于初学者是很难理解的, 会使你丧失继续学下去的兴趣. 所以汇编这个东西等到以后进入这个门到后再系统的学习. 还有就是各种常用的API函数, 不说每个都要记到,至少你看到这个API函数名字会一下就了解到这个函数的作用. 了解一下数据结构也是很有必要的. 有人经常问我逆向分析和编程需要对数学很了解吗~? 这个很不好回答. 毕竟现在和以前不一样, 原来编程都是些数学家干的事, 现在不一样了. 但是最好对一些基本的东西要了解下. 不敢相信连数学都不会的人写出来的程序是什么样子的, 尤其是算法. 还有些其他的东西,这里不列举了...
....... 看完上面,如果你下定决心了,继续看下去吧...
刚开始学程序分析,没必要一开始就搞复杂的,这容易把人的兴趣给驱散掉....所以我用C++写了个很简单的程序来分析. 如果还是看不懂也没事, 代码的旁边都有注释的...
对照源代码分析是很容易理解程序的流程的,,,, 代码如下: #include<iostream>
using namespace std; //标准名称空间. int main() //main是程序的主函数
return 0; //return是返回值,这里返回0;
VC++6.0下把上面的代码编译. 程序的功能是把520打印出来 ....生成的是debug版本, 便与调试... 用OD打开程序, OD停在入口处... 00408340 >/$ 55 push ebp ...................
开始是装载器加载些PE文件之类的信息,想了解系统底层的可以往下看,这里就不分析了. 还是继续我们的主题... 在离开始不远处发现如下: 004083D4 |> \C745 FC 00000>mov dword ptr [ebp-4], 0 ....接着下面几个连续的push. 可以推断出mian函数离这不远,果然在下面发现了: 00408416 |. 52 push edx 来到下面代码: 00401030 >/> \55 push ebp ;保存EBP ;是10进制的520,就是我们刚才处始化int变量的值 0040104F |. 8B45 FC mov eax, dword ptr [ebp-4] 在printf那个CALL上F8后,可以看到程序打印出来520 , 如图:
.
接续往下看都是些pop把刚才保存的值弹出去, 保持栈的平衡嘛~! 最后调用exit函数程序退出.....
本文只是简单的分析,. 逆向分析往往是黑箱分析, 手里没源代码,盯着那一个个跳动的数据而失眠,正是那成功的一刻激励着我们不断的前进~!
By:Shminow |
