OllyDBG 1.10 OllyDBG.exe
OllyDBG SoftICE
文件->打开 (快捷键是 F3)
F2 断点 F9
F8 步过 F10
F7 步入 F8
F4 运行到位置 F7
F9 运行 F5
CTR+F9 执行到返回ret F12
ALT+F9 执行到用户代码 F11
调试选项->CPU 标签中把“显示跳转路径”及其下面的两个“如跳转未实现则显示灰色路径”、“显示跳转到选定命令的路径”
查壳工具有 PEiD 和 FI
运行
反汇编窗口中右击,出来一个菜单
查找->所有参考文本字串 /超级字串参考+ 插件会更方便
,现在出来另一个对话框,我们在这个对话框里右击,选择“查找文本”菜单项,输入“Wrong Serial, try again!”的开头单词“Wrong”(注意这里查找内容要区分大小写)来查找,找到一处:
在我们找到的字串上右击,再在出来的菜单上点击“反汇编窗口中跟随”
为了看看是否还有其他的参考,本行选择右键菜单查找参考->立即数,会出来一个对话框:
堆栈 SS:[0012F9AC]=00D44DB4, (ASCII "CCDebuger") 这条内容上左击选择一下,再点右键,在选择“数据窗口中跟随数值”,你就会在下面的数据窗口中看到你刚才输入的内容。而 EAX=00000009 指的是你输入内容的长度
在菜单 查看->断点 上点击一下,打开断点窗口(也可以通过组合键 ALT+B 或点击工具栏上那个“B”图标打开断点窗口
PEiD 检测一下,结果为 MASM32 / TASM32
反汇编窗口中右击鼠标, 查找->当前模块中的名称 (标签), CTR+N
此操作时要在 OllyDBG 中保证是在当前被调试程序的领空
CPU - 主线程, 模块 - CrackHea
GetDlgItemText 及 GetWindowText 函数上右击,在弹出菜单上选择“在每个参考上设置断点/
函数上右击,在弹出菜单上选择“查找输入函数参考”(或者按回车键)
跑到系统领空 ALT+F9 组合键
调试选项的“命令”标签中勾选“使用 RET 代替 RETN”来更改返回指令的显示方式
左键选择信息窗口中的 ESI=E6B5F2F9,再按右键,在弹出菜单上选“修改寄存器
ESI 寄存器值
点击一条,信息窗口点击右击选择数据窗口中跟随地址
调试->重新开始,或者按 CTR+F2 组合键
内存访问和内存写入断点数据窗口中左键点击一下,
再右击,转到->表达式 CTR+G 组合键
输入我们想查看内容的内存地址
硬件断点最多只能选 4 个字节。
选中部分会显示为灰色。选好以后松开鼠标左键,
在我们选中的灰色部分上右击:断点-内存写入
断点->删除内存断点
F2 设置一个断点,现在我们按 CTR+F2
重新载入程序,载入后按 F9 键运行
基本算法是这样的:
先用 GetDriveTypeA 函数获取磁盘类型参数,
再用 GetVolumeInformationA 函数获取这个 crackme 程序所在分区的卷标
消息断点及 RUN 跟踪
菜单 查看->窗口(w) 右键ClassProc
调试选项->跟踪中设置:DLL RUN
击菜单调试->打开或清除 RUN 跟踪(m) 内存映射窗口
右键 在访问上设置中数断 设好访问断点后我们按 F9 键
按 F9 键(或者按 CTR+F12 查看->RUN 跟踪
统计模块