OllyDbg 使用笔记 (七)
来源:互联网 发布:厦门瑶池集庆骗局知乎 编辑:程序博客网 时间:2024/04/29 03:51
OllyDbg 使用笔记 (七)
参考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
示例程序下载:http://pan.baidu.com/s/1gvwlS
暴力破解
观察这个程序。可以从程序标题的<unregistered 个跟 About 中的 <Unregistered Version>入手
用OD打开程序,右键-->查找-->所有参考文本字串
图片1
在打开的界面中,将滚动条移到追上面(因为是从光标处开始搜索的),右键查找文本,先搜索<unregistered
图片2
双击找到的文本到代码处。
005CC81B . E8 9C5FEDFF call 004A27BC005CC820 . A1 8CEB6000 mov eax, dword ptr [60EB8C]005CC825 . 8038 00 cmp byte ptr [eax], 0005CC828 . 0F85 07010000 jnz 005CC935005CC82E . A1 DCF16000 mov eax, dword ptr [60F1DC]005CC833 . 8038 00 cmp byte ptr [eax], 0005CC836 . 0F85 F9000000 jnz 005CC935005CC83C . 68 70CB5C00 push 005CCB70 ; ASCII "PC Surgeon <unregistered - "005CC841 . D905 3CCA5C00 fld dword ptr [5CCA3C]005CC847 . A1 8CEC6000 mov eax, dword ptr [60EC8C]005CC84C . DC20 fsub qword ptr [eax]005CC84E . 83C4 F4 add esp, -0C005CC851 . DB3C24 fstp tbyte ptr [esp]005CC854 . 9B wait
仔细查看,前面的跳转,可以发现 jnz 005CC935 很关键。在前面一个jnz 005CC935处下断点,重新运行程序,发现第这两个jnz 005CC935 未跳转。
把第一个cmp byte ptr [eax], 0 改成 cmp byte ptr [eax], 1 使跳转实现。
按照同样的方法,搜索<Unregistered Version>,跟改跳转实现,即可破解程序。
其他方法
再来看看这段代码:
005CC811 . E8 12B9E6FF call <jmp.&shell32.ShellExecuteA> ; \ShellExecuteA005CC816 > B8 58CB5C00 mov eax, 005CCB58 ; ASCII "Show: splash"005CC81B . E8 9C5FEDFF call 004A27BC005CC820 . A1 8CEB6000 mov eax, dword ptr [60EB8C]005CC825 . 8038 00 cmp byte ptr [eax], 0005CC828 . 0F85 07010000 jnz 005CC935005CC82E . A1 DCF16000 mov eax, dword ptr [60F1DC]005CC833 8038 00 cmp byte ptr [eax], 0005CC836 0F85 F9000000 jnz 005CC935005CC83C . 68 70CB5C00 push 005CCB70 ; ASCII "PC Surgeon <unregistered - "005CC841 . D905 3CCA5C00 fld dword ptr [5CCA3C]005CC847 . A1 8CEC6000 mov eax, dword ptr [60EC8C]005CC84C . DC20 fsub qword ptr [eax]005CC84E . 83C4 F4 add esp, -0C005CC851 . DB3C24 fstp tbyte ptr [esp]005CC854 . 9B wait
这里有两个jnz 005CC935 。判断分别判断[[60EB8C]] 跟 [[60F1DC]] 是否为0。 从 fld dword ptr [5CCA3C] 可以发现[5CCA3C]中是15.0 即试用天数。
仔细分析可以发现第一个jnz为判断是否正常,第二个为判断是否超过15天使用期。所以[[60EB8C]]的值非常关键。要找出改[[60EB8C]]的值的地方。
选中mov eax, dword ptr [60EB8C] , 右键-->查找参考-->地址常量,即可列出所有使用了这个地址的命令的位置。
图片3
在此窗口右键-->在每个命令上设置断点。重新运行程序。
图片4
按F9,来到此处:
005C2BF6 . 8B15 8CEB6000 mov edx, dword ptr [60EB8C] ; pcsurgeo.00610C4A005C2BFC . 8802 mov byte ptr [edx], al005C2BFE . A1 8CEB6000 mov eax, dword ptr [60EB8C]005C2C03 . 8038 00 cmp byte ptr [eax], 0005C2C06 . 75 0D jnz short 005C2C15005C2C08 . E8 6307EEFF call 004A3370005C2C0D . A1 8CEC6000 mov eax, dword ptr [60EC8C]005C2C12 . DD18 fstp qword ptr [eax]005C2C14 . 9B wait
看到 mov byte ptr [edx], al 正是给[[60EB8C]] 赋值的地方,把它改成 mov byte ptr [edx], 1,即可破解。
(在保存过程中会出现 重定位提示窗口,因为mov byte ptr [edx], al改成mov byte ptr [edx], 1后代码变多了,要重定位才可能正常运行。这里可以先不用管它。)
1 1
- OllyDbg 使用笔记 (七)
- OllyDbg破解系列学习笔记(七)
- OllyDbg 使用笔记 (一)
- OllyDbg 使用笔记 (二)
- OllyDbg 使用笔记 (三)
- OllyDbg 使用笔记 (四)
- OllyDbg 使用笔记 (五)
- OllyDbg 使用笔记 (六)
- OllyDbg 使用笔记 (八)
- OllyDbg 使用笔记 (九)
- OllyDbg 使用笔记 (十)
- OllyDbg 使用笔记 (十一)
- OllyDbg 使用笔记 (十二)
- OllyDbg 使用笔记 (十三)
- OllyDbg 使用笔记 (十四)
- OllyDbg 使用笔记 (十五)
- OllyDbg 使用笔记 (十六)
- OllyDbg 使用笔记 (十七)
- linux常用命令
- linux vi编辑命令
- linux下用户管理
- linux进程管理
- linux文件系统概述
- OllyDbg 使用笔记 (七)
- 全排列—递归
- 结构体-排序 sort() swap()
- 数据结构实验之栈四:括号匹配(栈的运用)
- 约瑟夫-链表
- 第五届蓝桥杯决赛做题报告
- 基本的高精度算法
- 黑马程序员_内省
- C++ STL 速成