OllyDbg 使用笔记 (七)
OllyDbg 使用笔记 (七)
參考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
演示样例程序下载:http://pan.baidu.com/s/1gvwlS
暴力破解
观察这个程序。能够从程序标题的<unregistered 个跟 About 中的 <Unregistered Version>入手
用OD打开程序。右键-->查找-->全部參考文本字串
图片1
在打开的界面中。将滚动栏移到追上面(由于是从光标处開始搜索的),右键查找文本,先搜索<unregistered
图片2
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
双击找到的文本到代码处。
005CC81B . E8 9C5FEDFF call 004A27BC
005CC820 . A1 8CEB6000 mov eax, dword ptr [60EB8C]
005CC825 . 8038 00 cmp byte ptr [eax], 0
005CC828 . 0F85 07010000 jnz 005CC935
005CC82E . A1 DCF16000 mov eax, dword ptr [60F1DC]
005CC833 . 8038 00 cmp byte ptr [eax], 0
005CC836 . 0F85 F9000000 jnz 005CC935
005CC83C . 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, -0C
005CC851 . 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> ; \ShellExecuteA
005CC816 > B8 58CB5C00 mov eax, 005CCB58 ; ASCII "Show: splash"
005CC81B . E8 9C5FEDFF call 004A27BC
005CC820 . A1 8CEB6000 mov eax, dword ptr [60EB8C]
005CC825 . 8038 00 cmp byte ptr [eax], 0
005CC828 . 0F85 07010000 jnz 005CC935
005CC82E . A1 DCF16000 mov eax, dword ptr [60F1DC]
005CC833 8038 00 cmp byte ptr [eax], 0
005CC836 0F85 F9000000 jnz 005CC935
005CC83C . 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, -0C
005CC851 . 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.00610C4A
005C2BFC . 8802 mov byte ptr [edx], al
005C2BFE . A1 8CEB6000 mov eax, dword ptr [60EB8C]
005C2C03 . 8038 00 cmp byte ptr [eax], 0
005C2C06 . 75 0D jnz short 005C2C15
005C2C08 . E8 6307EEFF call 004A3370
005C2C0D . 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后代码变多了。要重定位才可能正常执行。这里能够先不用管它。)
OllyDbg 使用笔记 (七)的更多相关文章
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- OllyDbg 使用笔记 (二)
OllyDbg 使用笔记 (二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO T ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Elasticsearch笔记七之setting,mapping,分片查询方式
Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- OllyDbg 使用笔记 (十二)
OllyDbg 使用笔记 (十二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI 安装好程序 ...
随机推荐
- springMVC是什么等七个问题
- C++中 list与vector的区别
引用http://www.cnblogs.com/shijingjing07/p/5587719.html C++ vector和list的区别 1.vector数据结构vector和数组类似,拥有一 ...
- 【反射】Java反射机制
Class 1.Class是一个类,一个描述类的类(也就是描述类本身),封装了描述方法的Method,描述字段的Filed,描述构造器的Constructor等属性 2.对象照镜子后(反射)可以 ...
- CF126B Password
思路: kmp略作修改. 实现: #include <iostream> #include <cstdio> using namespace std; ; int neXt[M ...
- [Windows Server 2008] 安装IIS7.5及FTP
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装IISII ...
- 【译】x86程序员手册14-5.1段转换
5.1 Segment Translation 段转换 Figure 5-2 shows in more detail how the processor converts a logical add ...
- THREE.js代码备份——webgl - geometry - dynamic(模拟海浪,通过时间(毫秒)来控制平面点的运动模拟海浪,鼠标控制写在另外的js中)
HTML: <!DOCTYPE html> <html lang="en"> <head> <title>three.js webg ...
- nuxt https
我用的模板是nxut-express,版本是:1.4.2.服务器:阿里云.一.申请免费证书:网站能通过https访问,首先得申请https证书,付费的阿里云上有售卖的,一年几千块.免费的可以通过cer ...
- CPU内部组成及原理
CPU,Central Processing Unit,翻译过来叫中央处理器.是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).电脑中所有操作都由C ...
- python round()模块
Python3的round()函数四舍五入取整时,采用最近偶数原则 >>> round(1.5)2>>> round(2.5)2>>> round ...