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 使用笔记 (七)的更多相关文章

  1. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...

  2. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  3. OllyDbg 使用笔记 (二)

    OllyDbg 使用笔记 (二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO T ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  5. Elasticsearch笔记七之setting,mapping,分片查询方式

    Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...

  6. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  8. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  9. OllyDbg 使用笔记 (十二)

    OllyDbg 使用笔记 (十二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI 安装好程序 ...

随机推荐

  1. JavaScript--引用JS外部文件

    通过前面知识学习,我们知道使用<script>标签在HTML文件中添加JavaScript代码,如图: JavaScript代码只能写在HTML文件中吗?当然不是,我们可以把HTML文件和 ...

  2. 看无可看 分治FFT+特征值方程

    题面: 看无可看(see.pas/cpp/c) 题目描述 “What’s left to see when our eyes won’t open?” “若彼此瞑目在即,是否终亦看无可看?” ---- ...

  3. 关于DOM操作的相关案例

    1.模态框案例 需求: 打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 代码如下: <!DOCTYPE html> <h ...

  4. 题解报告:hdu 2188 悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188 Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每 ...

  5. UNIX环境高级编程--9. 进程控制

    进程关系    当子进程终止时,父进程得到通知并能取得子进程的退出状态. 终端登录:    早起UNIX系统通过哑终端登录,本地的终端 or 远程的终端 .主机上链接的终端设备是固定的,所以同时登录数 ...

  6. DataFrame编程模型初谈与Spark SQL

    Spark SQL在Spark内核基础上提供了对结构化数据的处理,在Spark1.3版本中,Spark SQL不仅可以作为分布式的SQL查询引擎,还引入了新的DataFrame编程模型. 在Spark ...

  7. 自动保存草稿 asp+ajax自动存稿功能详解(转自影子)

    自动保存草稿功能的原理 我们都知道网页是一种无状态的,每次都需要请求,响应,当一次请求完成后就与服务器断开连接了,所以我们不能像网页一样实现实时的交互功能,但是为了满足更多的需求一个比较无敌的程序员还 ...

  8. UE4 集成讯飞听写插件

    搞了几天,有些坑记录一下. 3个方面的知识需要学习 1.制作UE4插件 2.引入第三方库 3.讯飞听写的api 一看是参考 https://blog.csdn.net/u012793104/artic ...

  9. [转][IPC通信]基于管道的popen和pclose函数

    标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行. 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程. popen函数还创建一个管道用于父子进 ...

  10. ABP生成错误:必须添加对程序集“netstandard”的引用

    当前使用ABP版本为:4.6.0 升级vs2017到15.4版本,升级framework到4.7版本 如果Core版本请升级到net core 2