第1章 关于逆向工程:

“嗯,先学这些概念吧,其他慢慢学。”这才是学习逆向技术的正确态度。

逆向工程需要的基础还是挺多的,汇编,C/C++语言,Windows编程,以及各种工具的使用。这些都不是一蹴而就的。看到高手也是这么过来的,多少给了我一点继续读下去的信心。

第2章 逆向分析Hello World!程序:

我的开发环境是Visual Studio Express 2013,书上的第一个例子就遇到了链接问题。原因是书上的工程用的是控制台应用程序项目,而我自以为是地建了一个Windows应用程序的项目。解决的方法是重新建立一个Console应用程序项目,或者把_tmain()方法替换为WinMain()。

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

随后下载了一个OllyDbg1.10版本,开始了真正的逆向调试。摸索了半天后,了解到默认会有4个窗口:“代码窗口”,“数据窗口”,“寄存器窗口”和“栈窗口”。当需要运行Ctrl + G的时候,要选对窗口才行。

第一种“打补丁”的结果如下:

enter image description here

第二种“打补丁”的结果如下:

enter image description here

书上提示说程序无法运行是正常的,学过第13章后就可以理解了-_-!

第3章 小端序标记法

有点简单,暂时略过。

第4章 IA-32寄存器基本讲解

书上说刚开始先了解8个通用寄存器的用途即可。不过这8个寄存器也好难啊。。。

第5章 栈

“栈是逆向扩展的”,一般画那个4G虚拟内存的时候,左上是0地址,右下是4G,栈向低地址扩展,而堆的地址向高地址扩展。在OllyDbg里面一直按住F7或者F8,右下角的栈窗口可以较直观显示栈的增长和压缩。

第6章 分析abex' crackme#1

这一节的示例程序会被识别为木马,于是辗转到没有杀毒程序的Windows虚拟机里进行试验。

enter image description here

第7章 栈帧

这一章详细介绍了栈,并提到了缓冲区溢出的隐患,另外还讲了几个简单的汇编指令。

每个函数开始都是保存EBP,大学微机原理考试时,老师说写出这两行的就给一半分。

PUSH EBP 
MOV EBP,ESP

移动ESP就相当于开辟了栈空间:

SUB ESP,8

函数返回的时候,再恢复原来的栈:

MOV ESP,EBP
POP EBP

这里的POP操作其实是将EBP当前地址中保存的值,作为EBP的新地址(值)。同样,之前的PUSH操作,其实是在EBP的新地址中保存了原来EBP的地址。总之EBP的值的地址上保存的是前一个EBP指向的地址。

另外学到了几个新设置:

  1. 在栈窗口中右键->Address->Relative to EBP
  2. 不勾选Disasm中的“Show Default segments”和“Always show size of memory operands”
  3. 勾选Analysis1中的“Show ARGs and LOCALs in procedures”
  4. 另外,作者好像还在代码窗口配置了Appearance->Highlighting->Christmas Tree

第8章 abex' crackme #2

这一章破解的是VB程序。工具比较熟悉了以后,直接打断点,然后在栈窗口中找到EBP,往上面找找就看到了比较的字符串。成功破解,但注册机的算法有点麻烦了,先略过。

enter image description here

第9章 Process Explorer

下载了Process Explorer,用它发现我的电脑上Google Update一直在后台运行着,或许是以前玩GAE的时候留下的。暂时没有发现其他可疑的进程。

第10章 函数调用约定

今天搞清楚了cdecl,stdcall和fastcall的区别了,以前只在代码和链接信息里面见过这些字段。其中cdecl是调用者负责处理栈,stdcall是被调用者清理栈。fastcall与stdcall类似,但通常会使用寄存器传递参数,而非栈内存。使用栈传递参数,往往会用[EBP+8],[EBP+C]这样的栈地址访问参数,而是用寄存器是直接用ECX和EDX寄存器传递参数。

第11章 视频讲座

http://www.tuts4you.com

还没有去下载,先存个书签。

破解结果:

enter image description here

第12章 究竟应当如何学习代码逆向分析

不知不觉竟然看完了第一部分,而且自己动手实践了里面的例子,感觉还是挺有意思的。希望能坚持看完这本书吧!