crackme003

本文介绍了一步步脱壳32位程序的方法,使用OD工具和手动技巧,重点讲解了如何通过修改JCC指令进行破解,涉及SF、ZF、PF标志位的理解。最后探讨了TEST指令和SHR操作,以及自增自减等在逆向中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本信息

1.1运行情况
在这里插入图片描述
1.2 32位程序,UPX壳
在这里插入图片描述

二、脱壳

2.1工具脱壳
将附件拉里面即可
在这里插入图片描述
2.2OD手脱壳
首先F8单步执行,然后在ESP右键下硬件断点,最后F9进行执行
在这里插入图片描述
这个位置就是程序入口点(OEP),下面部分进行右键分析–》从模块中删除分析,再然后就可以脱壳了(右键用OD脱壳调试进程)
在这里插入图片描述

三、OD打开分析脱壳后的程序

搜索字符串在成功的函数头下断
在这里插入图片描述
如果输入和12011982相同,就执行成功
在这里插入图片描述

四、破解方法

直接修改JCC指令
目的使跳转执行
1、将jnz 改为 jz
2、修改标准寄存器将Z 0 改为 Z 1
在这里插入图片描述

五、总结

TEST 指令在两个操作数的对应位之间进行 AND 操作,
并根据运算结果设置符号标志位(SF)、零标志位(ZF)和奇偶标志位(PF)。

SF:第七位,符号标志位。相关指令执行后结果为负,SF为1,结果为正,SF为0;
ZF:第六位,零标志位。相关指令执行后结果为0,ZF为1,结果不为0,ZF为0;
PF:第二位,奇偶标志位。相关指令执行后结果最低字节bit位中1的个数,
若为偶数,PF为1,若为奇数,PF为0;
SHR(右移)指令使目的操作数逻辑右移一位,最高位用 0 填充。
最低位复制到进位标志位,而进位标志位中原来的数值被丢弃
inc自加
dec自减
 JA  大于则跳转(无符号数)   CF=0 and ZF=0

六、最重要的

**欢迎大佬批评交流**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值