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

解密系列之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掉该条指令,保存,即可破解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PLC高层楼房供水系统课程设计毕业设计

设计目的 (1)能够检测到水箱的水位并用指示灯显示。 (2)由检测到水箱的水位,实现3台电机的供水要求。 (3)设计plc程序。 设计要求 (1)确定输入/输出设备。 (…

基于PLC四层电梯模型控制系统课程设计

总设计要求 1.1 电梯上行设计要求 ①当电梯停于1F或2F、3F时,4F呼叫,则上行到4F, 碰行程开关后停止。 ②当电梯停于1F或2F时,3F呼叫,则_上行到3F,碰行程开关后停止。 ③当电梯停于1F时,2F 呼叫…

基于西门子PLC s7-200 的自动立体车库设计自动化设计(控制器步进电机直流电机)

本组的设计题目是《基于 PLC 的立体车库设计》,本组设计包括机械设计,电路设计以及程序设计。在设计中遇到了很多困难,参考了相关资料,与老师进行多次沟通,一边学习一边制作,以厂家资料为标准进行修改&…

基于51单片机的8八路抢答器设计

基于51单片机的8路抢答器 具体功能: (1)主持人进行复位,依次显示8位选手的分数,8位选手分数显示结束后主持人方可按下开始按键; (2)主持人按下抢答开始按键,抢答者才可以…

基于51单片机的简易抢答器设计

基于51单片机的简易抢答器 具体功能: 1、主持人按下抢答开始按键,抢答者才可以开始抢答,数码管抢答倒计时20S。 2、抢答者按下按键,数码管显示抢答者的编号。 3、可以通过按键修改倒计时时间。 部分程序代码: #incl…

Word2019中Visio对象图片插入题注时自动删除标签与编号前的空格,编号后添加空格

问题引入 撰写论文时为了修改方便,通常以插入题注和交叉引用的方式来给图片标号,这样修改图片和图号后可以方便、自动地更新。 然而,Word在插入题注上从03到13一直没有针对中国用户优化。 插入题注的标签与编号间有一个空格,当…

【32位win7一键扫雷】32位win7系统自带扫雷游戏逆向分析之一键扫雷(附VS代码工程文件、可执行文件和OD分析缓存文件)

实现效果 视频地址:https://www.zhihu.com/zvideo/1373742900744974336 附一张扫雷自定义中难度最大时进行一键扫雷的截图,如下,24*30,共668颗雷。 前言 一直对逆向感兴趣,就拿最简单的扫雷开始,对于XP系统中的扫雷,雷的数目以及雷区的地址都是固定的,可以直接通过…

基于51单片机的智能电子秤设计课程设计毕业设计

微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图、真源文件、源程序代码和论文报告等 由STC89C51单片机最小系统LCD1602液晶显示模块HX711AD模块LED模块蜂鸣器按键模块10kg压力传感器构成。 具体功能: 1、数码管显示当前的重量&a…

【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)

运行效果 代码结构 //黑客帝国数字雨 花心胡萝卜 #包含 <windows.h> #包含 <stdlib.h>#define 时钟编号 1 #define 最大长度 25 //一个显示列的最大长度 #define 最小长度 8 //一个显示列的最小长度 // 类型定义 结构类型 _字符序列 {//整个当作屏幕的一个显示列…

【模式识别】Fisher线性判别实验报告之MATLAB仿真

一、 参数 1.题设三个类,每个类均有10个样本,分别为w1,w2,w3,因此采用两两互相分类,最后得出结果; 2.三类样本的均值向量依次为m1,m2,m3; 3.三类样本的类内离散度矩阵依次为S1,S2,S3; 4.对于w1和w2,总类内离散度矩阵为Sw12,类间离散度矩阵为Sb12,通过矩阵特…

不知所措:您是否真的需要为您的API提供客户端库?

RESTful Web服务和API的优点在于&#xff0c;任何使用HTTP协议的使用者都可以理解和使用它。 但是&#xff0c;同样的难题一遍又一遍地弹出&#xff1a;您是否应该将Web APis与客户端库一起使用&#xff1f; 如果是&#xff0c;您应该支持哪些语言或/和框架&#xff1f; 通常这…

【自适应盲均衡3】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真

关注公号【逆向通信猿】更精彩!!! 接上篇【自适应均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 理论推导 MMA或者MCMA其实是在CMA基础上改进而得到的,有学者称其为实虚部分开的常模算法。该算法使均衡器输出信号的实部与虚部分别收敛于各自的模值,改…

程序猿必备工具『CSDN浏览器助手』之超实用小工具测评

CSDN浏览器助手简介 CSDN浏览器助手由CSDN官方开发&#xff0c;集成【一键呼出搜索】、【万能快捷工具】、【个性标签页】和【 “真”免广告】四大功能&#xff0c;打开后给人的第一印象就是 清新脱俗 四个字&#xff0c;功能非常丰富&#xff0c;快捷键的使用能够大大提高工作…

【自适应盲均衡4】基于RLS的多径衰落信道均衡算法(RLS-CMA)的理论推导与MATLAB仿真

关注公号【逆向通信猿】更精彩!!! 一、回顾CMA和MMA 对于前面两种算法 【自适应均衡】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 【自适应均衡】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真 误差信号为:

【自适应(盲)均衡6】信号过多径衰落信道的矩阵乘法表示之Toeplitz矩阵和Toeplitz块矩阵的生成(分数间隔FSE)

关注公号【逆向通信猿】更精彩!!! 信号过系统(多径信道)的连续形式 信号过系统(多径信道)的离散采样形式 通常接收端处理的是数字信号,需对接收信号进行采样,当采样率为符号速率时,即为符号间隔采样;采样率为符号速率的P倍时,为分数间隔采样 至于为什么要用分数…

JDK 9/10/11:Java字符串上+ =带来的副作用

问题“ 为什么array [i &#xff05;n] i ”在Java 8和Java 10中给出不同的结果&#xff1f; ”已于本周初发布在StackOverflow.com上 。 它指向JDK9和更高版本中存在的Java编译器中的错误 &#xff0c;但JDK8中不存在。 如StackOverflow线程上所述&#xff0c; Didier L提供…

【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)

关注公号【逆向通信猿】更精彩!!! 理论推导 基于分数间隔的复数常模算法(FSE-CMA)的推导其实与符号间隔的算法是类似的,见 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 分数间隔均衡器模型 分数间隔均衡器通常有两种比较经典的模型,…

JavaFX技巧30:带有DropShadow的ScrollPane

最近&#xff0c;在我的一个项目中&#xff0c;我发现用户很难看到ScrollPane实例的内容当前是否已滚动。 一种更清晰的方法是在滚动窗格的顶部添加阴影。 这也是Google的Material Design建议的。 所以我尝试了一下。 在我的解决方案中&#xff0c;我只是向ScrollPane添加了一…

【有限域除法】二元多项式除法电路原理及MATLAB详解

关注公号【逆向通信猿】试读更多内容!!! 二元多项式除法电路原理 例: g ( x ) = x 4 + x 2 + x + 1 g(x)=x^4 + x^2+x+1

Spring Apache Kafka教程

在本SpringApache Kafka课程中&#xff0c;我们将学习如何在Spring Boot项目中开始使用Apache Kafka&#xff0c;并开始生成和使用我们所选主题的消息。 除了一个简单的项目外&#xff0c;我们还将深入探讨Kafka的术语以及分区概念在Kafka中的工作方式。 让我们开始吧。 1.简介…