OD学习笔记

来源:互联网 发布:淘宝注册资金 编辑:程序博客网 时间:2024/06/04 09:00
1、OD与IDA是两个常用工具。OD是动态分析,IDA是静态分析。

2、F2下断点,F3加载一个可执行程序。

3、Call *** 按F7可以进入该函数内部,Ctrl + F9运行至ret出,就可以返回程序了。

4、Alt + B打开断点编辑器,用于取消断点,del或者空格取消断点。


OD 第二课
1、OD与IDA是两个常用工具。OD是动态分析,IDA是静态分析。


2、F2下断点,F3加载一个可执行程序。


3、Call *** 按F7可以进入该函数内部,Ctrl + F9运行至ret出,就可以返回程序了。


4、Alt + B打开断点编辑器,用于取消断点,del或者空格取消断点。


5、Ctrl + G可以查找函数名,例如:GetDlgItemTextA 或者 GetDlgItemTextW


6、单步执行时,注意下面提示,有时候会发现一些用用的信息的。


7、当程序停止下来时,按下Ctrl + G,输入esp + 4C,可以查看地址内容。


8、Call返回值存放在eax中,返回地址时,eax中存放地址。


9、test eax,eax,查看eax是否为0,为0时,Z=1,双击Z,则Z变成0.


10、不想让je跳转的两种方法,(1)将Z改成0;(2)将je short 0040122e双击,改成nop填充即可。


11、保存修改:选中修改的文件,右击,复制到可自行文件,选择,备份,保存数据到文件。如果程序加过壳,则会不可执行。


12、如果跟进到系统dll中,此时想返回到应用程序领空,可以按Alt + F9,返回到用户代码。


13、如004013F7,这类地址一般是可自行文件领空,7C8114AB这类地址一般是系统Dll所在的地址空间。


14、Ctrl + N,可以打开应用程序的导入表


OD第三课
1、找call
call *** 等于push eip;然后jmp ***
call几种方式
——call 404000h,直接跳转到函数或者过程的地址。
——call eax,函数或者过程的地址存放在eax中。
——call dword ptr[eax]  例如:eax中存放400080h,而400080h中存放404000h,所有实际是Call 404000h。
——call dword ptr[<&API>];执行一个系统API。


2、WinAPI参考文档
(1)Win32 Programmers Reference.rar -> win32.hlp
(2)帮助->选择API帮助文档
(3)选择要查看的API,右击->符号名帮助


3、Cmp dest,src,比较dest,src并通过比较结果设置 C / 0 / Z 标志位。
    cmp eax,-1 //如果eax = FFFFFFFF,
    cmp eax,[404000],将eax和404000地址处的dword型数据进行比较并置位。
    cmp dword ptr[402173] 比较402173处值是否为16。


4、标志位
    cmp可以修改三个标志位,Z / 0 / C
    Z标志位:结果为0,则置1,否则置0;
    0标志位:溢出置1,否则置0;
    C标志位:进位标志,最高有效位有进位置1,否则置0;


5、test指令
   对两个操作数进行按位与运算,但不将与的结果放到dest中,而and则会将与的结果放到dest中,test仅改变标志位。
   test仅改变标志位,test eax,eax (如果eax值为0,则Z置1)。


6、跳转条件
 ja  CF = 0 and ZF = 0
 jb  CF = 1
 jnz ZF = 0


7、将jnz改成jmp实现无条件跳转。将jnz改成nop指令,不让跳,啥都不干。
    nop填充,选中要填充的指令,右击->用nop填充。


OD第四课 去除NAG窗口
1、Messagebox,不让弹出
 push 1,messagebox父句柄执行为1,不存在的句柄值,则不弹出。


2、PE结构
按M查看内存分布图,可以通过修改PE结构来去除NAG。将模块的入口地址更改。从00401000——>00401024即可。
AddressofEntrypoint=1000 ——》1024。
3、GetModuleHandleA可以获得程序ImageBase


OD第五课
1、PE:sizeofcode = 4000400最高位有数据,怀疑被恶意修改了。
   baseofcode = 40001000,代码段的起始偏移地址。
   baseofdata = 40002000,数据段的起始偏移地址。
2、PE结构被修改后,windows加载器可以自动识别,但是OD不会,所以OD运行不起来。
3、advancedolly.dll 放到OD->plugin目录下,即可载入进来经修改的PE了。需要设置插件的Ignore faked export table与Hande Base of Code,sizeof code and base of data。




OD第六课
1、忽略异常
(1)shift + F9,用来忽悠异常,多按几次。
(2)选项->调试选项->异常->添加范围 00000000->FFFFFFFF,整个内存段的全部异常都忽略。
2、Alt + F9 返回到用户地址空间。
3、点击M ,Ctrl + B ,在整个内存中查找字符串。UNREGISTERED VERSION
4、找到字符串后,选中,右击选择 二进制编辑 ,注意保持大小写,返回到C,选择修改后的内容,保存下来即可。
5、选择某个地址,右击,查看参考,可以查看到哪里引用了它。


OD第七课
1、OD软件断点与硬件断点。
 软件断点的原理:在断点处重写代码,插入一个int 3中断指令,当CPU执行到int 3时,OD就可以获得控制权了。
 硬件断点:调试寄存器Dr0——Dr7,其中Dr0——Dr3四个寄存器用来存放中断地址,Dr4——Dr5保留不使用,Dr6——Dr7用来记录Dr0——Dr3的属性。
硬件断点只有四个。
何时使用:
(1)软件断点只能在OD的CPU界面下,在数据段下不了。
(2)当想将断点下载Windows的动态链接库上时,需要用硬件断点,因为用软件断点下在dll界面是不会保存的,重启后将丢失断点。


2、跳出循环的方法:在循环下一条语句下一个断点,F9走到断点处
3、下硬件断点:选中->右击->硬件执行。硬件断点使用完需要立即清除,因为资源有限。
4、去除Nag,只需要Call *** 改为 Move eax,1,这样此函数始终返回1, 程序即可执行了。
5、K查看哪些函数被调用过了。
6、要关注跳转的地方,比较正常与异常时,跳转的区别,这样可以改变程序的执行路径,实现破解。


OD第八课 去除Nag —— 第十七课
1、查找标题中的字符串
右击->查找->所有参考文本串,再在其中找标题中对应的字符串即可。


2、通过阅读jmp前几行代码规律,分析破解方法
 
OD第十课 VB程序破解
1、利用PEiD.exe可以查看可执行文件用什么编译工具编译的,加了什么壳,需要使用英文版的PEid
2、所有的VB程序都依赖一个外部的动态链接库,MSVBVM60.dll
3、VB破解关键
针对变量        针对字符串
_vbaVarTstEq   _vbaStrCmp
_vbaVarTstNe   _vbaStrComp
4、Ctrl + N 调出输出表,查找调用的函数,在用断点进行调试。


OD第十二课 介绍Delphi
OD第十三棵
1、DialogBoxs类型常用APIs,用这些API进行搜索。
2、查找->所有模块间的调用,可以在每个调用GetWindowTextA上设置断点。
3、Ctrl + N,输入GetWindowTextA,在每个参考上设置断点。


OD第十五课
1、内嵌补丁,把补丁代码写入文件,达到破解的目的。解决因指令长度不匹配导致堆栈破坏的问题。
2、通过书签方式,可以方便跳转。
OD第十七课
介绍硬件访问断点的使用。

原创粉丝点击