解密系列之OD使用教程9

程序:MrBills.exe

点击注册,输入邮箱和序列号后提示如下

突破口:该提示窗口中的字符串,查找如下

双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test al,al,猜测al=0为未注册,al=1为已注册,再往上查看,call 0040714C决定al值,下断跟进查看。

跟进“需进入1”,找到2个关键call

跟进“需进入2”和“需进入3”,发现函数里代码相似

看来call 406F4B是关键,跟进后来到

最后一句为mov al,bl,这是改变al值的关键语句,修改为mov al,1后按F9运行程序,发现

保存到可执行文件后,运行程序

未注册等信息已经不在了。

解密系列之OD使用教程10

程序:PC2AM2_PRO.exe
首先进行安装,然后用PEID查看如下所示

可知该程序由VB编写,所有的VB程序几乎都是依赖于一个外部的动态链接库。这个动态链接库的名字是:MSVBVM60.dll(可能有多个版本,但名字都差不多~),然而正是因为VB中所有的API函数都在DLL中去实现,所以导致我们在跟踪程序的执行代码时频繁地在DLL领空和程序领空跳来跳去。
VB程序破解关键

针对变量 针对字符串
__vbaVarTstEq __vbaStrCmp
__vbaVarTstNe __vbaStrComp
__vbaVarCompEq __vbaStrCompVar
__vbaVarCompLe __vbaStrLike
__vbaVarCompLt __vbaStrTextComp
__vbaVarCompGe __vbaStrTextLike
__vbaVarCompGt
__vbaVarCompNe

用OD载入,按下Ctrl+N打开模块窗口,查找(直接输入)vbaVarTstEq,找到后右键=>在每个参考上设置断点,提示设置了88个断点,按F9运行程序,在第一个断点处断下,继续按F8单步执行,走到下面图中位置

注释里有一串类似注册码的字符,记录下来,删除所有断点,在注册编辑框里输入,注册成功。(简单VB程序的注册码一般都可以用类似的方法找到)

oeiu-564-oqei-97

解密系列之OD使用教程11

程序:fjprodsetup.exe
安装程序,打开查看是未注册版本,有功能限制。用OD载入,搜索所有字符串unregister,双击下面高亮一行

发现有跳转,但修改跳转之后只是去掉了标题栏的unregistered,并不能破解,关键还在于al的值

如图,选中子程序第一行,提示窗口显示本地调用来自4047D3、404880,在这两个地址处下断,去掉之前的断点。按F9运行程序,在4047D3处断下,去掉404880处的断点,如下图

4047CD处下断,重新运行程序,跟进发现这个call可能是程序加密验证的过程,如下图所示可进行修改并保存达到破解

的目的,但还可进行更深入的研究,进入验证函数1和函数2对加密算法进行逆向,写出注册机,此处不再赘述,有能力者可联系笔者进行交流。

解密系列之OD使用教程12——逆向后的Delphi特色

程序:Teksched.ex.
运行程序,有NAG窗口,需要注册,用PEID查看是Delphi编写的程序,用OD载入程序,留意Delphi程序与VC程序的区别。
搜索字符串registration,如下

双击第一行,来到

在高亮这行右键=>查找参考=>选定命令,有

双击第一行,又来到了原来的地方

004A582C、004A5841处下断,F9运行起来,点击注册窗口,输入注册信息,发现并不能断下。得找其他突破口,向上浏览程序反汇编代码,可以看到程序很有Delphi特色:

1、push 004A5841 retn,这两条指令后会有jmp往前跳的指令,等价于 jmp 004A5841

2、存在很多call调用

继续往上浏览,发现有输入注册码提示信息,在上图地方下断

运行程序,输入注册信息,按Ctrl+F8执行,程序跑飞,断在ntdll动态链接库中,按“—”号回到程序领空,并在该call上一条指令处下断,然后运行程序

将该call指令NOP掉,继续执行,来到下图

将高亮这行改为jmp 4A5608,继续执行

将该条跳转NOP掉,按Ctrl+F8继续执行,最后来到最开始的位置如下

至此,程序完美破解

保存修改到文件后,重新运行程序进行验证,完美破解。

Ollydbg使用教程学习总结(三)相关推荐

  1. Ollydbg使用教程学习总结(二)

    解密系列之OD使用教程4 程序1:RegisterMe.exe 把程序跑一遍之后我们发现程序有两个NAG,一个是在程序界面启动前出现,另一个是在程序关闭后出现的. 去掉第一个Nag方法如下: ①jmp ...

  2. Ollydbg使用教程学习总结(一)

    解密系列之OD使用教程1 使用例子程序为Hello.exe OD基本快捷键及功能 从系统DLL领空返回到程序领空,Alt+F9 通过OD将程序的标题"Hello world"改为& ...

  3. Ollydbg使用教程学习总结(四)

    解密系列之OD使用教程13--迷途 程序:XoftSpy41._96.exe 用PEID查看,是VC6编写的程序,用OD载入 获取文本框输入内容API:GetWindowTextA API下断方法: ...

  4. Ollydbg使用教程学习总结(五)

    解密系列之OD使用教程17--inline patch 程序:ReverseMe. NAGs.exe 新内容:硬件断点 用PEID打开,看到程序是用VC6.0写的,用OD载入,按F9运行后,出现NAG ...

  5. Git 教程学习--第三篇

    一.远程仓库 1.先自行注册GitHub账号.由于你本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置 第一步:创建SSH Key. 在用户主目录下,看看有没有.SSH目 ...

  6. 【C012】Python - 基础教程学习(三)

     第五章 条件.循环和其他语句 print和import的更多信息 >>> print 'Age:',42 Age: 42 >>> print 'Age;';42 ...

  7. SQL基础教程学习第六站:数据更新

    仅用于记录学习,欢迎批评指正,共同交流,共同进步,大神勿喷 系列文章 SQL基础教程学习第一站:PostgreSQL下载安装以及如何创建并登录数据库: SQL基础教程学习第二站:数据库基本知识: SQ ...

  8. 深度学习(三十八)——深度强化学习(1)教程

    教程 http://incompleteideas.net/sutton/book/the-book-2nd.html <Reinforcement Learning: An Introduct ...

  9. C++学习教程从零开始(三)——何谓变量

    2019独角兽企业重金招聘Python工程师标准>>> C++学习教程从零开始(三)--何谓变量 本篇说明内容是C++中的关键,基本大部分人对于这些内容都是昏的,但这些内容又是编程的 ...

最新文章

  1. 零基础AJAX入门(含Demo演示源文件)
  2. SpringQuartz定时任务调度器
  3. 2015年浪潮面试题
  4. 决策树(Decision Tree)和随机森林
  5. [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能
  6. String的indexOf()用于获取字符串中某个子字符串的位置
  7. python描述性统计工作日上班时代码_基于Python的描述性统计实践
  8. KEIL使用malloc函数申请堆空间失败的解决方法
  9. html5 div进行田字排列,1——10个数文字在田文字格里的标准写法-20210328120324.docx-原创力文档...
  10. OpenCV图像灰度化的六种方法
  11. QQ新版表情序号及对应
  12. 生态参数反演(植被覆盖度FVC)手把手教会
  13. 计算机到期收益率公式,用到期收益率计算债券价格
  14. 从返利网站看如何经营用户
  15. C++游戏《Flappy bird》
  16. linux用户视角可分为,经济学原理下全球视角尔雅答案
  17. wear手表软件合集_如何找出正在使用Android Wear手表电池的电池
  18. 人工智能改变人力资源的11种方式
  19. CSP:重庆八中宏帆初级中学校初一编程社C2024HF700寒假集训总结——Day1
  20. C++ Builder ADO数据库连接与保存

热门文章

  1. Java EE 7中包含哪些JSR?
  2. IntelliJ IDEA for Mac在MacOS模式下的调试快捷键(Debugging Shortcut)
  3. 产品经理如何进行需求管理?
  4. 用户在页面输入的中文数据,servlet如何获得正确的中文值
  5. Unix 下的 vim 如何使用系统剪贴板
  6. SSL 和 TLS 介绍
  7. Java 打 jar 包时,MANIFEST.MF 文件详解
  8. windows server 2008 R2 命令行的方式创建用户、设置密码
  9. oracle 取系统当前年份_Oracle 获取当前日期及日期格式
  10. java判断时间是否在时间段内_具有C语言基础,利用半年时间学习Java是否够用