解密系列之OD使用教程13——迷途

程序:XoftSpy41._96.exe
用PEID查看,是VC6编写的程序,用OD载入
获取文本框输入内容API:GetWindowTextA
API下断方法:
a.右键=>查找=>所有模块间的调用,直接输入API,找到后右键该行=>在每个调用到GetWindowTextA上设置断点;

b.Ctrl+N,找到后右键=>在每个参考上设置断点;

按F9运行程序,删除输入注册码之前就触发的断点,最后输入注册信息之后,在如下位置断下

继续按F8浏览程序,在有跳转处仔细判断是否应该使之实现,来到下面地址处,查看该跳转后所在位置,可知应使其实现,上面有关键call,下断重新运行程序并跟进分析,仔细浏览下面的程序,发现还有与这段完全相同的程序段

可知程序可能在多处地方都存在验证注册代码,跟进后可看到这个子程序有2个返回点,在第1个返回点附近有mov al,1这条指令,猜测是成功的标志;在第2个返回点有xor al,al指令,猜测是失败的标志;按F8单步运行,遇到跳转时修改ZF标志位使其从第1个返回点返回,最终提示“恭喜注册成功”的信息,但是点击确定后发现并没有注册成功!这就是“迷途”!

解密系列之OD使用教程14——知返

程序:XoftSpy41._96.ex.
上一讲用获取编辑框内容的方法并不能实现破解,这次换个思路,采用字符串查找法。

双击高亮这行,来到

发现关键call,继续往上浏览,在子程序开始处下断,发现切换到主程序界面就会触发该断点

跟进关键call,发现子程序只有1个返回点,继续按F8单步执行,来到

根据栈顶所示,推测这个call是验证算法call。继续往下看,如果注册成功的话,会执行以下2句指令

mov bl, 1
mov al, bl

因此,将第2句指令改为mov al, 1即可,保存到可执行文件,测试成功。

解密系列之OD使用教程15——inline patch “内嵌补丁”

程序:DVDMen.Studio.exe

运行程序,有NAG窗口,有30天的试用期,将系统日期调至提前1年,发现软件过期不可用了,再重新将系统的日期调回,但软件还是过期不可用,说明程序在某个地方写入了是否过期的标志。
用PEID查看为VC6编写的程序,用OD载入程序,输入注册信息并点击确定,发现程序并不会断下。输入完注册信息后先不点击OK按钮,在OD中按下Ctrl+N,输入KillTimer,并在每个参考上设置断点,然后返回软件点击OK,程序断下(此处KillTimerbreak的作用,构成switch case语句)。根据分析程序提示信息,得到eax必须等于4才可实现破解成功,如图

选中cmp eax, 4这行,下面提示“跳转来自004DC1A0”,右键=>转到jnz来自004DC1A0,最终找到switch case语句的开始处


在该子程序头部下断,按F9运行程序,输入注册信息,最后断下,单步执行,发现eax的值来源于上图高亮这行,直接修改为mov eax, 1,但是修改后会覆盖后面2条指令,因此需要采用“内嵌补丁”的方式进行修补,补丁所在位置为005E47D0,即程序后面填补为0的区域。

004DBD9E处右键=>Bookmark=>Insert Bookmark插入书签,对该句指令进行修改如下

同样,在5E47D0处进行修改如下,最后跳转回004DBDA3(即转到下一句继续执行)

将所做的修改保存到可执行文件,打开程序测试,发现程序进入死循环,这是为什么呢?继续载入未修改的程序进行分析,发现把eax的值修改为4后,程序并不能跳出switch case语句,而把eax的值改为0B后即可正常跳出。(此处解释有点牵强,但事实却是如此,还需深究原因)

解密系列之OD使用教程16——“堆栈法”

程序:DVDMenuStudiX.ex.

运行程序,先产生主窗口,再出现NAG窗口。用OD载入,按F9运行,NAG窗口出现后,按下暂停键,在打开堆栈窗口如下

双击最后一行,来到

004DC0D1   .  E8 77FD0C00   call    005ABE4D

在该行下断,并在该子程序开始处下断

004DBD80   .  55            push    ebp
004DBD81   .  8BEC          mov     ebp, esp

重新载入,按F9,来到断点处,按F8单步执行发现

004DBDBE   .  83B8 64010000>cmp    dword ptr [eax+164], 1
004DBDC5   .  75 1F         jnz     short 004DBDE6
004DBDC7   .  8BCF          mov     ecx, edi

如果上面跳转实现的话,就会004DC0D1处的call而调出NAG窗口,因此NOP掉该条指令,保存,即可破解。

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

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

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

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

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

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

    解密系列之OD使用教程9 程序:MrBills.exe 点击注册,输入邮箱和序列号后提示如下 突破口:该提示窗口中的字符串,查找如下 双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test ...

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

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

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

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

  6. OllyDBG完美教程(超强入门级)

    OllyDBG 视频教程:https://www.bilibili.com/video/av6889190 动态调试工具之OllyDbg(OD)教程:https://www.bilibili.com/ ...

  7. 一站式SpringBoot for NoSQL Study Tutorial 开发教程学习手册

    SpringBoot2.0 + NoSQL使用教程,项目名称:"SpringBoot2NoSQL" 项目地址: https://gitee.com/475660/SpringBoo ...

  8. OllyDbg完全教程

    OllyDbg完全教程 目录 第一章概述..................................................................1 第二章组件....... ...

  9. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer...

    MapServer Tutorial--MapServer7.2.1教程学习--第一节用例实践:Example1.5 Adding a  raster layer 一.前言 MapServer不仅支持 ...

最新文章

  1. 如何防止批处理文件执行后自动关闭控制台
  2. 【杂文】企业数字化转型展望—角色转型
  3. unix grep命令的大致实现
  4. Extension spartacussampledata doesnt specify a path and no scanned extension was matching the name
  5. java enumeration 排序_Java如何对java.util.Enumeration进行排序?
  6. 时隔两年,盘点ECCV 2018影响力最大的20篇论文
  7. 英特尔预计第12代酷睿H系列处理器将有超过100款设备采用
  8. 设计模式--策略模式(C++实现)
  9. RCP中如何使用代码安装、运行plugins
  10. linux 测试udp端口是否打开,udp端口如何打开?UDP端口测试介绍
  11. python的基本函数图像_python绘制基本初等函数图像
  12. UML统一建模语言习题一
  13. Mac终端打开VsCode
  14. SpringBoot 系列教程(七十七):SpringBoot整合ehcache缓存
  15. 微信公众号考试成绩查分系统
  16. 一对同居男女同一天的日记对比
  17. 英语长句分析经典100句
  18. linux下挂载硬盘!
  19. ubuntu快捷键设置后 无效问题
  20. 开源无国界?vue-cli、node-ipc被投毒事件分析

热门文章

  1. EasyMock教程–入门
  2. JavaFX 2.0布局窗格– HBox和VBox
  3. 为什么线程池里的方法会执行两次_面试官问你java都有哪些线程池,自己是否自定义过线程池...
  4. 两个数相乘积一定比每个因数都大_人教版五年级数学:因数、倍数与分数的整理与复习...
  5. xgboost简单介绍_好文干货|全面理解项目中最主流的集成算法XGBoost 和 LightGBM
  6. java中读取单个字符_如何使用Java中的Scanner类读取单个字符?
  7. html怎么设置数据条的颜色,jQuery EasyUI 数据网格 – 条件设置行背景颜色 | 菜鸟教程...
  8. html a标签去掉下划线_如何用HTML基本元素制作表格
  9. mysql数据库杀掉堵塞_Mysql解决USE DB堵塞详解
  10. mysql排插问题_MySQL一次数据插入故障记录