工欲善其事必先利其器,这里介绍一下od的一些操作和od自带的一些功能,dalao勿喷。
od主要有四个窗口,分别是反汇编窗口,寄存器窗口,堆栈窗口以及数据窗口,分别显示程序在内存中的指令,cpu寄存器,堆栈和内存的状况。四个主界面介绍完了,接下来介绍一下od顶部的图标。
L:图标或者view-log,显示日志窗口,可以显示od启动时保存在日志窗口的信息以及一些断点的信息,如果想要将它导出保存成文本可以右键选择log to file。
E:图标或者view-executables显示程序运行时使用的模块:exe,dll,ocx和其它。
M:图标或者view-memory,显示我们的程序映射到内存的信息,一个内存块可能被分为好几个部分
T:图标或者view->threads显示程序的线程窗口。
W:图标或者view-windows显示程序窗口。
H:图标或者是view-handles,句柄窗口。
C:图标或者view-cpu,返回到od主窗口,cpu窗口。
k:图标或者是view-call-stack,显示调动堆栈的窗口信息。
B:图标或者是view-breakpoints,显示程序的普通断点,硬件断点不显示。
———————————————————————————————————————————————————————————————————————————————————————
一般拿到需要破解的程序的时候可以先查看当前模块中的名称查看程序调用了哪些api,比如有个程序它接收你的输入然后和程序中的注册码进行比较,这个时候在GetDlgItemTextA这个api上下断是个不错的选择(在输入函数上切换断点),下完断点后f9执行会发现程序停在了系统领空,然后你会发现GetDlgItemTextA函数以及它的参数,这个函数有个参数是一个地址,也就是你的输入存储的位置,知道了这个地址你可以在这个上面下一个内存访问断点,查找调用了这块内存数据的指令,这样你就能到达程序的主要逻辑处,然后分析比较逻辑破解程序。还有一种方法是字符串查找,查找注册成功或者失败的提示语句,双击到达关键语句,然后在关键语句处下断,这样也能很方便的到达主要逻辑处进行分析。
以上只是从大体上讲了一下,明天就来实战一波。