利用无效字节码指令引发逆向工具崩溃(一)
来源:互联网 发布:oracle12c连接数据库 编辑:程序博客网 时间:2024/06/09 14:22
由于大部分逆向工具都是线性读取字节码并解析,当遇到无效字节码时,就会引起反编译工具字节码解析失败。
我们可以插入无效字节码到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
DexFixer:http://bbs.pediy.com/showthread.php?p=1158816
Ijiami signer:http://t.cn/R2tfvdP (需登录注册账号:http://t.cn/R2tfAiC)
- 利用无效字节码指令引发逆向工具崩溃(一)
- 利用无效字节码指令引发逆向工具崩溃(一)
- (爱加密系列教程十四)利用无效字节码指令引发逆向工具崩溃(一)
- 利用无效字节码指令引发逆向工具崩溃(二)
- 安卓逆向系列教程(一)Dalvik 指令集
- 什么是汇编语言(一) 汇编底层原理,指令字节码
- 字节码指令概览
- 字节码指令集
- java 字节码指令
- 字节码指令简介
- 字节码指令简介
- java 字节码指令
- java 字节码指令
- 字节码指令集
- 字节码指令简介
- 8.字节码指令
- Java字节码指令
- 字节码指令
- 文章标题
- Vim 语法高亮与自动缩进
- Android应用自定义User Data管理(将Settings下的"清除数据"变成"管理空间")
- 使用正则表达式,从网站上获取指定数据
- android sharepreferences 小工具类,可以参考下或是提下更好的建议
- 利用无效字节码指令引发逆向工具崩溃(一)
- Android API Guides - Device Compatibility
- 学习的网址
- 【禅道】--不使用帮助的IT员工当不了好老板(实战篇)
- ios tableView那些事 (九) tableview的删除
- 初识ajax
- vb.net机房收费系统重构——总结(四)软件工程文档3
- c#使用sc命令注册开发Windows服务
- linux下/etc/rc.d目录的介绍及redhat启动顺序