Ollydbg学习记录

==================================================================================

 1:向下的箭头表示这里要往下跳转;向上的箭头表示这里要往上跳转
2:向右的箭头表示跳转目标,如果把光标放上面就可以在消息窗口中看到
它来自何方。
3:先用f8进行,遇到关键的call时用f7跟进,哇塞无敌了。而遇到call跟进后我们会发现光标已经定位到相关的地址处,并且地址的底色成了黑色,表示程序也运行到此处。
===================================================================================
内存访问断点就是指程序访问内存中我们指定的内存地址时中断;
内存写入断点就是指程序往指定的内存地址中写入数据时中断;
===================================================================================
注意:内存断点只在当前调试的进程中有效,就是说你如果重新载入程序的话内存断点就自动删除了。
且内存断点每一时刻只能有一个。
====================================================================================
ALT+F9:返回程序领空
====================================================================================
Windows 的中文翻译就是“窗口”,而 Windows 上面的应用程序也都是通过窗口来与用户交互的。现在就有一个问题,应用程序是如何知道用户作了什么样的操作的?这里就要用到消息了。Windows 是个基于消息的系统,它在应用程序开始执行后,为该程序创建一个“消息队列”,用来存放该程序可能创建的各种不同窗口的信息。比如你创建窗口、点击按钮、移动鼠标等等,都是通过消息来完成的。通俗的说,Windows 就像一个中间人,你要干什么事是先通知它,然后它才通过传递消息的方式通知应用程序作出相应的操作。说到这,又有个问题了,在 Windows 下有多个程序都在运行,那我点了某个按钮,或把某个窗口最大化,Windows 知道我是点的哪个吗?这里就要说到另一个内容:句柄(handle)了。句柄一般是个 32 位的数,表示一个对象。Windows 通过使用句柄来标识它代表的对象。比如你点击某个按钮,Windows 就是通过句柄来判断你是点击了那一个按钮,然后发送相应的消息通知程序。
=====================================================================================
RUN 跟踪就是把被调试程序执行过的指令保存下来,让你可以查看被调试程序运行期间干了哪些事。RUN 跟踪会把地址、寄存器的内容、消息以及已知的操作数记录到 RUN 跟踪缓冲区中,你可以通过查看 RUN 跟踪的记录来了解程序执行了那些指令。在这还要注意一个缓冲区大小的问题,如果执行的指令太多,缓冲区满了的话,就会自动丢弃前面老的记录。
====================================================================================
OllyDBG把识别出的函数过程都在前面加了灰色条:
====================================================================================

用Ollydbg手动脱壳:
手动脱壳的一般步骤有:寻找入口点(OEP)、在入口点进行文件转储(DUMP)和修复引入表
寻找入口点相关工具,如peid的Generic OEP Finder插件就能实现自动查找OEP的功能。
所谓文件转储是指将内存中程序的真正自身的那部分抓取出来,存为另一个程序。
简单的引入表错误我们可以通过Import REConstructor进行自动修复。
UPX的第一条语句都是pushad,将它用到的一些信息入栈保存。

当在跟踪代码时会看到一个popad指令,程序加壳段地址一直在0049xxxx突然跳转到0045xxxx段,跨段跳跃时,一般都是在内存中脱壳完毕,跳转到程序入口点准备运行程序,转到入口时的popad语句和开始的pushad也相对应。
ESP定律找入口点
===================================================================================

你可能感兴趣的:(windows)