android加固系列—3.加固前先学会破解,静态修改so

本文通过使用IDA6.5静态分析工具和010 Editor十六进制编辑器,详细解析并演示如何修改so文件中的关键代码,解决jni运行过程中出现的非法运行错误。通过替换BEQ指令为B指令,使程序能够成功运行。

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

【版权所有,转载请注明出处。出处:http://www.cnblogs.com/joey-hua/p/5138585.html】

项目jni的关键代码(项目地址见文章底部),获取当前程序的包名com.example.shelldemo和com.example.nocrack对比,正常运行结果是this app is illegal,编译jni我就不介绍了,项目中也带了编译好的so

 

1.工具介绍

IDA6.5,静态分析so文件用

010 Editor,修改so文件16进制码

 

2.IDA分析so

so拖入IDA直接定位到关键代码处,BEQ意思是上一行的CMP比较指令如果R0等于0就跳转到loc_ED0处,也就是成功运行处。但实际程序运行后R0的值不等于0.

 

然后进入options | General

 

 

如下显示,把每行对应的16进制机器码显示出来了

 

可以看出跳转指令B对应的16进制机器码为E0,我们现在要做的就是把0EC2处的指令改成B loc_ED0,意思就是不用判断上一行的CMP指令直接跳转。

 

2.010 Editor修改so

打开010 Editor,把so文件拖入,找到0EC2处,注意一个数字是4位,两个数字是8位一个字节,所以从0EC0处开始数第三个(起始0

 

手动把D0改成E0,注意一个数字一个数字的改

 

保存,然后重新运行项目,奇迹就发生了,程序running successfully了。

其实也可以把修改后的so重新拖入IDA可以看出0EC2行变成了B而不是曾经的BEQ

 

 

一个码农的日常 

crackme项目地址

IDA工具地址

010 Editor地址

转载于:https://www.cnblogs.com/joey-hua/p/5131276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值