温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用无效字节码指令引发逆向工具崩溃(一)

发布时间:2020-07-15 17:06:05 来源:网络 阅读:502 作者:大水牛牛 栏目:移动开发

由于大部分逆向工具都是线性读取字节码并解析,当遇到无效字节码时,就会引起反编译工具字节码解析失败。

 

我们可以插入无效字节码到DEX文件,但要保证该无效字节码永远不会被执行(否则您的程序就会崩溃了!)。

 

首先我们新建一个测试类。为了绕过Dalvik运行时代码验证,BadCode.java要保证不被调用。(否则运行app,会出现java.lang.verifyerror异常)

利用无效字节码指令引发逆向工具崩溃(一)

然后生成apk,用ida打开classes.dex。并找到BadCode类的aaa方法。选中的三行代码对应”System.out.println("aaaa");”

利用无效字节码指令引发逆向工具崩溃(一)

切换到HexView-a视图,记录下指令码 “62 00 02 04 1A 01 8E 07  6E 20 19 10 10 00” 和对应偏移“0003A2A4”

利用无效字节码指令引发逆向工具崩溃(一)

 

使用C32asm,以十六进制的方式打开dex文件。按快捷键“Ctrl + G”,定位到“0003A2A4”

把“62 00 02 04 1A 01 8E 07  6E 20 19 10 10 00”改为“12 01 38 01 03 00 FF FF 00 00 00 00 00  00

利用无效字节码指令引发逆向工具崩溃(一)

 

Opcodes解释:

12 01  //  const/4  v1, 0 //v1=0

38 01 03 00  //  if-eqz   v1, loc_3A2AC //if(v1==0) 跳转到 loc_3A2AC:

FF FF  // FFFF (Bad opcodes) //本行代码被跳过永远不会执行

// loc_3A2AC:

 

保存dex。把修改后的dex文件拖入DexFixer进行修复。

利用无效字节码指令引发逆向工具崩溃(一)

 

用修复后的dex覆盖原apk中的dex文件。

利用无效字节码指令引发逆向工具崩溃(一)

 

删除META-INF签名文件

利用无效字节码指令引发逆向工具崩溃(一)

使用签名工具,对apk重新签名。

利用无效字节码指令引发逆向工具崩溃(一)

Apk安装到手机,运行成功

利用无效字节码指令引发逆向工具崩溃(一)

 

下面试试反逆向工具的效果

 

Apktool:(很遗憾,新版本已经修复了这个错误)

利用无效字节码指令引发逆向工具崩溃(一)

 

Dex2jar:(反编译失败)

利用无效字节码指令引发逆向工具崩溃(一)

 

用到的工具:

IDA http://pan.baidu.com/share/link?shareid=132208&uk=1795434040

C32Asm http://www.crsky.com/soft/3128.html

DexFixerhttp://bbs.pediy.com/showthread.php?p=1158816

Ijiami signerhttp://t.cn/R2tfvdP (需登录注册账号:http://t.cn/R2tfAiC


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI