EAX寄存器(关键跳,关键CALL)

滴水三期:day02.4-通用寄存器 一、32位通用寄存器>二、使用OD查看寄存器并且使用MOV指令修改寄存器中值>三、通用寄存器>四、汇编指令 阅读详情

OD动态调试过程中,寄存器窗口是需要时常关注的!

EAX寄存器:累加器,在乘法和除法指令中被自动调用;在win32中,一般用在函数的返回值中。

CALL:过程调用指令  格式: CALL OPRD  功能: 过程调用指令(说明: 1. 其中OPRD为过程的目的地址. 2. 过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种. 3. 本指令不影响标志位.)

32位16位高8位低8位
EAXAXAHAL

今天用到得示例程序还是《Shark恒零基础百集VIP破解教程》中的示例程序:

先查壳,发现无壳,下面打开软件,发现要注册,输入假码,发现提示关键字“注册”:

下面载入OD,搜索字符串,转到相应地址 :

向上溯源,发现关键跳(刚好跳过这一段代码得跳转),与je跳转相近的call就可能是关键call,先下断:

关键跳:程序中某一个或某几个跳转刚好就跳过了我们期望他运行的代码段;关键call:关键跳是否实现取决于关键call返回的值,一个关键call可能对应很多关键跳,但一个关键跳只对应一个关键call。

下面运行程序,至call处单步调试,观察寄存器窗口:

发现call语句之后EAX寄存器al是00,test(测试指令 TEST  格式: TEST OPRD1,OPRD2  功能: 其中OPRD1、OPRD2的含义同AND指令一样,也是对两个操作数进行按位的'与'运算,唯一不同之处是不将'与'的结.说明: TEST与AND指令的关系,有点类似于CMP与SUB指令之间的关系.)指令后没变,然后执行至je指令后跳转实现,说明call调用的过程里面判断返回的值为假。那下面进入F7进入call调用的过程,让其返回为真。

进入call调用的过程后做如下修改:

"mov eax,1"指令的作用是将eax的al赋值为01,retn则是跳出call,程序接着执行call后面的test指令(相当于c++中的return)。

修改后保存修改,程序破解完成!

下面在OD中继续运行程序,发现程序成功破解,关闭OD后打开保存的程序,也到达了破解的目的:

软件的注测一项已经不能点击,说明已经破解。

就这个程序而言,也可以通过修改je来是实现破解:

nop填充后保存,成功破解:

在此示例软件上用nop填充可以达到破解的目的,但如果遇到程序有多个关键跳,那么用nop填充的方法就有点费时费力了。通过对寄存器的修改(修改call的返回值)能够起到事半功倍的效果!


 
 
 
eax,ebx,ecx,edx,epb,esp,esi,edi.eip 8086寄存器分类: 数据寄存器、地址寄存器、段寄存器和控制寄存器。 数据寄存器: AX 、BX、 CX、 DX AX:通用寄存器,主要作为累加器通用,是算数运算的主要寄存器。 BX:通用寄存器,用作基址寄存器。 CX:通用寄存器,用作计数器。 DX:通用寄存器,在双精度数运算时用来与AX一起存放一个双字操作数(32位),其中DX存放高字,AX存放低字。 AH 、AL、 BH、 BL、 CH、 C... 阅读详情

相关推荐

实战VMP壳逆向:从网络验证到关键跳的追踪与爆破

本文详细介绍了VMP壳逆向的实战技巧,从网络验证破解到关键跳转定位的全过程。通过使用Cheat Engine、x64dbg等工具,结合动态Trace和符号化执行技术,有效对抗VMP混淆和反调试措施,帮助逆向工程师快速定位并爆破关键代码。

weixin_42524171的博客 480

常见的寄存器

嵌入式硬件

u010783226的专栏 1万+

软件逆向实战:从关键跳转定位到程序爆破的完整指南

在软件安全与逆向工程领域,理解程序执行流程和控制逻辑是核心技术基础。程序在CPU层面通过条件跳转指令(如JZ、JNZ)实现分支判断,这是软件注册验证、功能锁定的常见实现机制。掌握调试技术,能够精准定位并修改这些关键跳转,不仅有助于深入理解计算机底层原理,还能应用于软件调试、安全评估和教育研究等场景。通过动态分析工具跟踪程序流,识别CMP/TEST指令后的条件跳转点,是逆向工程中“爆破”技术的核心实践。本文以x64dbg调试器为例,结合CrackMe实例,详细演示如何从API断点设置、指令跟踪到跳转修改与补丁

java天气 424

EAX、ECX、EDX、EBX寄存器的作用

一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基底暂存器:SP、BP SP:堆叠指标暂存器,BP:基底指标暂存器 EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元 ESI、EDI、ESP、EBP:為si,di,

tiger_ibm的专栏 1万+

CPU通用寄存器 eax ebx ecx edx esp ebp esi edi

通用寄存器就是最基础的寄存器,在程序执行的过程中,绝大部分时间多在操作这些寄存器实现指令功能 eax(32位)/rax(64位): 通常用来执行加法,函数调用的返回值一般也放在这里面 ebx(32位)/rbx: 通常用来数据存取 ecx(32位)/rcx: 通常用作for循环的计数器 edx(32位)/rdx(64位): 读取I/O端口时,存放端口号 esp(32位)/rsp(64位): 栈顶指针,指向栈的顶部 ebp(32位)/rbp(64位): 栈底指针,指向栈的底部,用ebp+偏移量的形式来定位函数.

日志 5575

破解笔记----爆破之关键CALL关键跳

关键CALL关键跳 方法一: 输入假码注册程序,记录下错误提示信息。 OD载入程序--> 右键-->查找-->所有参考文本字串-->(右键-->查找文本,注:不要区分大小写,选择整个范围)找到上面记录的错误提示文本 或:右键-->超级字符串参考-->查找ASCII码/UNICODE->(右键-->查找文本,注:不要区分大小写,选择整个范围)找到上面记录的错误提示文本 -->

eldn__的专栏 1万+

破解之关键CALL关键跳查找方法

关键CALL关键跳 方法一: 输入假码注册程序,记录下错误提示信息。 OD载入程序--> 右键-->查找-->所有参考文本字串-->(右键-->查找文本,注:不要区分大小写,选择整个范围)找到上面记录的错误提示文本 或:右键-->超级字符串参考-->查找ASCII码/UNICODE->(右键-->查找文本,注:不要区分大小写,选择...

weixin_30709635的博客 710

破解第三课 关键跳关键CALL

课前自泼凉水: 前两课的介绍的方法,不管是NOP填充还是JUM的无条件跳转,其实都有极大的局限性。 甚至单纯就效果而言,几乎无用。 且不说利用OD搜索关键字本身就很难搜得到。 就现在的软件保护而言,也几乎不存在只有一处验证的情况。有几处,十几处,甚至更多处验证的情况并不特殊。 所以,这些课程包括之后的,多半也是熟悉一下原理罢了。摆正心态,抱着一个学习的态度就好。 基于上面的原因,...

weixin_30788619的博客 792

X86逆向实战5:通过修改关键CALL爆破

免责声明: 该教程仅为个人学习笔记,并无任何商业目的,本人所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。 课程课件:https://files...

weixin_30952103的博客 360

五.关键call关键跳

补充: 1.test a,b 是a与b相与的意思,不是检查a,b是否相等。故test eax,eax是检查eax是否为零。 1.test可以影响cf,of,pf,sf,zf标志位。 2.JE当zf为零时跳转。 3.jz和je是同一条指令的两个不同记号而已。 补充: 1.test a,b是做 AND 运算(虽然通常是用来测试结果是否为零,但不限于此,比如一些位掩码操作,或者正负号

wangtanglin1的博客 608

[学习笔记]修改关键跳无效且关键CALL又不存在的情况

先用DI查下壳,VC++写的,无壳。 然后,打开软件看一下软件注册的情况 有弹窗,那载入OD看看能不能搜索到字符串 回到反汇编窗口,发现有两个JE都跳过了注册成功的代码 似乎很简单的样子,只要NOP掉这两个JE,不就可以了注册成功了。 分别下断点,F9运行,点VIP功能,程序被断下来,发现第一个JE的跳转没实现,不管它。 看下一个断点,跳转实现了,NOP...

weixin_30709061的博客 260

逆向---03.mov、test等汇编指令、EAX关键Call、OD调试技巧

上一篇:逆向---02.je & jmp & jnz 、OD调试 基础知识:(栗子中也会说的)栗子:链接: https://pan.baidu.com/s/1qZbbTvQ 密码: ifup 1.寄存器的知识:(C里面的一些基础,一般用32位的比较多) 2.关于运行后搜索中文字符串的说明:没壳怎么都行,有时候有壳不一定要脱壳再OD调试,直接带壳破解也是可以的...

LP890127的博客 1092

X86逆向练习3:通过修改关键CALL破解

软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果有1000处这样的验证环节那么就需要爆破1000次跳转。 那有没有一种方式可以只破解一次就达到破解整个程序的目的呢? 有,关键CALL,我们猜测一下程序作者的思路,作者不可能将每一处需要验证的环节都...

weixin_30873847的博客 549

X86逆向教程3:通过修改关键CALL破解

软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果有1000处这样的验证环节那么就需要爆破1000次跳转。 那有没有一种方式可以只破解一次就达到破解整个程序的目的呢? 有,关键CALL,我们猜测一下程序作者的思路,作者不可能将每一处需要验证的环节都...

weixin_30799995的博客 211

新手逆向实战三部曲之三——通过进入关键call追码注册软件(进阶)

下图的call为用邮箱算出真正注册码,即为右上角的267527263(具体算法本次不深入研究,有兴趣的可自行尝试)有了上次爆破的基础,这次便省力了许多,这次从载入开始,虽前头的几个步骤与之前相同,温故而知新嘛(也可直接往后看)一般情况关键call就在关键跳的不远处,可见这个call应该就是我们要找的关键call了,在此处F2下断。通过前两次的学习,是不是感觉逆向也蛮有意思的呢,感兴趣的同学可以先看看前二次的内容再继续向下学习。重载程序,重复之前的注册步骤,程序断在关键call处,进入这个call

vbnetcx的博客 3万+

CrackMe160 学习笔记 之 039

前言 这个程序有几个指令一开始没看懂,查了一下才知道。 思路 很容易就可以发现有一个跳转表。 根据不同的输入进入不同的函数。 004010D4 > \33C0 xor eax, eax ; Case 111 (WM_COMMAND) of switch 0040104F 004010D6 . 66:8B4...

275
上一篇: bugku的ctf逆向入门练习(游戏过关)
下一篇: bugku的ctf逆向入门练习(逆向入门)
song-10
博客等级 码龄9年 60粉丝 63原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值