X86逆向教程10:学会使用硬件断点

本节课我们将学习硬件断点的使用技巧,硬件断点是由硬件提供给我们的一组寄存器,我们可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址上面,这就是硬件断点,硬件断点依赖于寄存器,这些寄存器有个通用的名称,即调试寄存器,调试寄存器一共有8个分别从Dr0-Dr7。在软件破解中硬件断点常用来寻找赋值或读取的原始位置。

硬件断点并不是OD等调试器的特有功能,调试器只是把用户的需求转换成特定的格式,并写入DRX寄存器组中,等待硬件返回执行结果,由于硬件断点是由CPU直接提供硬件级别的支持,所以硬件断点的效率是所有断点中最高的。

在OD等调试器中,除了硬件断点之外,还有个内存断点,内存断点通过修改内存页的属性并捕获异常来间接暂停被调试的程序运行,内存断点的效率大大低于硬件断点,但内存断点的自由性大于硬件断点,通常情况下能用硬件断点则不要使用内存断点,有时候容易卡成狗。

------------------------------------------------------------
本章难度:★★★★☆☆☆☆☆☆
课程课件:CM_10.zip
------------------------------------------------------------

1.老样子在进行破解实战之前,我们先来看一个CM小程序,先了解一下硬件断点的使用技巧,如下OD直接载入这个CM程序然后运行。

 

2.我们直接按下【Ctrl + B】,输入按钮事件特征码【FF 55 FC 5F 5E】,然后在CALL的位置下断点。

 

3.回到CM程序,点击【测试硬件写入断点】,OD断下后按下【F7】进入到CALL的内部,也就是按钮的按钮事件。

上图有CMP指令,该指令取出【4A25F0】中的数值,和0做了一次比较,从而影响了JNZ跳转,我们接下来就是找到是谁向这个内存地址写入的数据。

4.直接在数据窗口,按下【Ctrl +G】,输入内存地址【4A25F0】,会发现其中的数值是0。

 

5.选择数据窗口中的第一个DWORD数据,然后选择【断点】,【硬件写入】,【DWORD】,这里的DWORD是由CMP指令决定的,此处【CMP DWORD PTR】所以我们需要下一个DWORD断点。

 

6.下完断点后重新载入程序,然后运行程序会直接断下,你会发现一条【MOV DWORD 】这样的赋值语句,没错这就是源头。

 

实战:破解 HofoSetup 2019

免责声明:该教程仅用于技术交流,并无任何商业目的,您不得将下述内容用于商业或者非法用途,否则后果自负,如果您喜欢该程序,请支持正版软件,购买注册 ,得到更好的正版服务,如有侵权请邮件联系作者!

1.首先OD载入然后直接,【F9】运行程序,并记下关键字符串,这里我们记下【vip】这段。

 

2.直接在反汇编窗口,右键选择中文搜索,智能搜索字符串,并查找带有vip的字符串,这里我找到了如下字符串。

 

3.这里我们看到了关键的比较和关键的跳转,但并没有发现关键CALL,这里的CMP指令的意思是,取出[eax]寄存器地址里面的一个字节和0进行比较并影响关键的跳转,接下来我们将查找是谁向这个内存地址中写入了数据,也就是说我们要找到谁给[eax]寄存器赋值找它的源头。

 

4.直接在反汇编窗口中选择,数据窗口中跟随,选择内存地址,会发现数据窗口地址变了。

 

5.直接在数据窗口中右键选择,断点,硬件写入断点,字节型。

 

6.此时,取消其他的所有内存断点,只保留一个硬件写入断点,然后我们重新载入程序并运行起来。

 

7.运行后会断下多次,我们不用管直接再次运行,然后回到程序中,点击【添加自定义快捷方式】,此时OD会直接断下。

 

8.下方会发现OD自动断在了【0042128A】的位置上,也就是说是上一条命令写入的,我们从下向上分析一下代码。

【mov byte ptr [ebx+4D8],al  】将al中的数写入到,[ebx+4D8]的地址中去,0011F700+4D8=0011FBD8刚好是我们下硬件断点的地址处。

【setne al】 这条指令很有意思,经过我的测试,当al中的数值不为0时直接返回al=1,如果为零则al就等于0,此处al只会从【1,0】中取值。

【CALL CNsCode::CheckCode】 这一段应该就是验证我们是否为合法用户的关键CALL了,内部是计算的核心代码。

 

9.我们就直接跟在CALL的位置下一个断点,并删除硬件断点吧,找到了更近的我们就删除远的,然后点击运行,让程序运行起来。

 

10.回到程序,再次点击【添加自定义快捷方式】按钮,程序会断在刚才的CALL处,我们直接【F7】跟进去看看,嗯!果然是核心CALL,看下方这么多处调用了这个CALL来完成用户身份的验证。

 

11.此时我们直接到CALL的断尾,看返回值返回了多少,直接单步【F8】,或者按下【Ctrl + F9】执行到返回,这里我们暂时不分析注册算法。

 

12.好了,回到CALL的断首,然后写入以下汇编代码,直接让其返回1。

 

13.直接点击OD的运行按钮,让程序跑起来,然后点击箭头指向的图标,选择【注册VIP用户按钮】,程序提示完成了注册。

 

写教程不容易,转载请加出处,您添加出处,是我创作的动力!

转载于:https://www.cnblogs.com/LyShark/p/11181812.html

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

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

相关文章

html 监控键盘,后台监控鼠标和键盘(可监听全局的鼠标以及键盘按键)

资源下载此资源下载价格为3D币,请先登录资源文件列表MouseKeyboardLibrary/MouseKeyboardLibrary/app.config , 134MouseKeyboardLibrary/MouseKeyboardLibrary/bin/Debug/MouseKeyboardLibrary.exe , 23040MouseKeyboardLibrary/MouseKeyboardLibrary/bin/Debug/Mo…

POJ 3258 River Hopscotch

题目链接:https://vjudge.net/problem/POJ-3258 题目大意 给定数轴上一个起点 0,终点 L,以及中间 N 个不同的点,现准备删除中间 N 个点中的 M 个,使得剩下来的点(包括起点和终点),相…

2021泉州高考学校成绩查询,2021泉州市地区高考成绩排名查询,泉州市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了,很多人在准备最后冲刺的同时,也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布,下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单,想要了解同学可以…

转载:CEO如何“养好CIO同时管好CIO”?

http://www.enet.com.cn/article/2010/1214/A20101214800028.shtml 在现代企业经营理论中,有个着名的“二八定律”,即人才对企业贡献而言,常常是20%的人做出了80%的企业效益。显而易见,这“20%”就是企业的骨干与核心。而这“20%”…

Abraca:XMMS2 的客户端

Toy Posted in AppsRSSTrackback Abraca 是基于 GTK2 而开辟的 XMMS2 音乐播放器的客户端。今后具有播放列表、音乐经管等功用。需留神的是,此法式要求 XMMS2、GTK 2、libglade、libnotify(可选)、Python 等。- Download Abraca 0.1版权声明&…

pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据

作者:Paul编者按: pandas提供了很多常用的数学和统计方法,本文中将用十分详细的例子来具体进行介绍;另外在许多数据分析工作中,缺失数据是经常发生的,将会具体介绍如何处理缺失数据。本文十分详细并实在低介绍了pandas…

2011年三八妇女节搜索引擎LOGO设计欣赏

今天是一年一度的三八国际妇女节,在这个特别的日子,烈火学院向所有女性致以节日的祝福,祝愿每位女同胞节日快乐,工作愉快!并送上本期的搜索引擎LOGO设计欣赏,希望大家喜欢! 一。百度 有作家曾说…

诺基亚2亿欧元建越南新工场

诺基亚昨天颁布发表将会在越南北部河内左近设立扶植一个新的装配厂,方案于2012年尾投入运用,初期投资达到2亿欧元,约合18.3亿人夷易近币。诺基亚目下当今在世界上拥有10个工场,新厂将会进入到诺基亚的举世制造搜集,为他…

Android 一直往文件写数据_( 十 ) 小众但好用:通过 Google drive 备份与同步 Keepass 数据库...

之前有提到过,keepass 的数据库是加密保存在本地的。而且 keepass 又是多平台免费的密码管理软件。所以如果需要实现 keepass 在多平台读取同一个数据库,我们需要自己搭一个服务器才怪!搭服务器太麻烦,还要额外支出费用&#xff0…

mysql操作数据库

转载于:https://www.cnblogs.com/sunpxit/p/11189089.html

win7锁定计算机会断网吗,win7系统如何设置电脑定时断网

有些win7系统用户在使用电脑过程中,想要给电脑设置定时断网,但是却不知道要怎么操作,其实我们可以通过系统自带的任务计划功能来进行操作,该怎么操作呢,本教程就给大家讲解一下win7系统设置电脑定时断网的详细步骤。1、…

回文_Manacher算法

算法简介:算法的目的是在O(n)的时间复杂度内找到一个字符串中各个字母所在的最大长度的回文串。 此算法用到了一个Rad[]数组的定义,Rad[i]表示回文的半径,即最大的j满足str[i-j1...i] str[i1...ij]。 我们的工作就是把全部的Rad[]求出来。 有两个结论: …

linux 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行

Linux 高手,其实都是玩儿命令行很熟练的人。命令行的学习捷径Linux 命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。在 Linux 的学习中,新手都会遇到这么…

3d000: no database selected_No.[C9]020

No.[C9]-020”Youre Not Alone,never alone。“别难过,别害怕,这个世界还有那么多爱你的人,和支持你的人,生活可能没有那么趁人心意,每个人都如此,别灰心,你并不孤单。(愿我的好朋友…

js实现树形结构化

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣 日常分享前后端知识 前言 今天来讲一下平常我们做权限系统中的树形结构知识 就是如何把对应关系的结构数据转换为可以一个树形结构 const data [{id: 2,pid: 0,path: /course,name: Course,title: 课程管理},{id…

viewer.js实现预览效果

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣 日常分享前后端知识 前言 最近涉及一个移动端项目 需要把其中的图片变成可预览的图片 听学弟说 可以利用viewer进行实现 首先 我们需要做的就是先写一个简单demo 先实现其中的效果 实现效果 代码 <!doct…

android 论坛_如何看待百度android吧萎靡现象与吧主的无所作为

百度android吧当初被誉为贴吧中的机锋论坛&#xff0c;现如今缺惨不忍睹&#xff0c;这一切究竟是百度资本家的阴谋还是吧主个人无所作为&#xff1f;然而就此事本人与android吧吧主展开讨论以及对其能力的质疑…这本来只是对android吧吧主随意加精普通的质问…然而该吧主却说我…

logisim优先编码器怎么用_变频电机为什么要用编码器?又该如何选型?

在自动化控制中经常会碰到各种电机的控制&#xff0c;在输送带、升降机、提升小车等较大功率的电机大部分是用变频电机&#xff0c;各个品牌PLC变频器驱动控制变频电机也很普及了。但是&#xff0c;用户经常会有这样那样的问题出现&#xff1a;变频电机为什么要装编码器?不装编…

修复计算机语言设置是哪个键,Windows语言设置后修复计算机的方法

当我们给我们的windows语音设置后&#xff0c;电脑可能会出现点问题&#xff0c;这个时候我们需要修复一下计算机&#xff0c;其中要进入BIOS的操作可能会难倒一部分新手用户&#xff0c;那么该如何操作呢&#xff1f;接下来我给大家整理了该如何一步步设置&#xff0c;一起来了…

笔记本电脑摄像头不能用_聊一款想代替笔记本电脑的产品

每次苹果发布iPad&#xff0c;部分自媒体KOL的言论总让我有一种自己必须转行的错觉&#xff0c;因为在他们眼中&#xff0c;笔记本电脑即将被iPad代替了&#xff0c;甚至还有人称iPad为“笔记本杀手”。谢谢&#xff0c;有被笑到。但一想到诺基亚当年就是这么傲慢地对待iPhone&…