Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)
本文作者:i春秋作家HAI_ZHU
0×00 前言
市面上的资料大多都是基于Dalvik模式的dump,所以这此准备搞一个ART模式下的dump。HAI_的使用手册(各种好东西)
Dalvik模式是Android 4.4及其以下采用的模式,之后到了Android 5.0 之后就是ART模式,关于这两个模式的详细内容,请自行百度,如果在文章看不来的地方,可以翻翻之前的文章。如果有问题也可以私聊我。
废话不多说,直接上操作。
内容:demo 动态 dump 出 dex文件
环境说明
1.系统 小米 9.0
2.ida 7.0
0×01 demo 动态 dump 出 dex文件
1.启动ida 端口监听
1.1启动Android_server 服务

1.2端口转发

1.3软件进入调试模式

2.ida 下断
2.1 attach 附加进程

2.2 断三项

2.3 选择进程

2.4 打开Modules
搜索art

PS:小知识
Android 4.4版本之前 系统函数在libdvm.so
Android 5.0之后 系统函数在libart.so
2.5 打开Openmemory()函数
在libart.so中搜索Openmemory函数并且跟进去。

PS:小知识
一般来说,系统dex都会在这个函数中进行加载,但是会出现一个问题,后面说。
2.6 下断点

3.运行程序到下断处
3.1 jdb转发运行程序

3.2 查看IDA运行
成功下断,并且运行到我们下断的地方。

3.3 查看 dex的位置
打开寄存器窗口,可以看到R1就是我们的dex

然后在Hex窗口打开R1。

很明显就看到了dex文件的二进制结构。如果不明白可以看看之前的dex文件分析。
3.4 提取关键信息
第一个关键信息:地址偏移:0xF35CA328

第二个关键信息:文件偏移:70 35 01 00,转换一下就是 0×00013570

使用16进制加法器进行相加,F35DD898

4. dump
4.1 使用脚本进行dump
static main(void){ auto fp, begin, end, dexbyte; //打开或创建一个文件 fp = fopen(“d:\\dump.dex”, “wb”); //dex基址 begin = 0xF34C6320; //dex基址 + dex文件大小end = begin + 0×00013570; for ( dexbyte = begin; dexbyte < end; dexbyte ++ ){//按字节将其dump到本地文件中fputc(Byte(dexbyte), fp); }}
4.2 脚本dump run
脚本填写好了之后,点击run即可。

4.3 成功dump

0×02 后续
这里dump出来的dex还是和原来的dex有一些区别的,要进行一些修复才可以。关于修复的内容还在探讨中,如果有大佬路过指教一二,感激不尽。
Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)的更多相关文章
- ART模式下基于Xposed Hook开发脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365 Dalvik模式下的Android加固技术已经很成熟了,Dalvik ...
- Android逆向进阶(7)——揭开Hook的神秘面纱
本文作者:i春秋作家——HAI_ 0×00 前言 HAI_逆向使用手册(想尝试一下新的写法) 其他 Android逆向进阶 系列课程 <<<<<<< 人物说明 ...
- ART模式下基于dex2oat脱壳的原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483 一般情况下,Android Dex文件在加载到内存之前需要先对dex ...
- 基于Frida框架打造Art模式下的脱壳工具(OpenMemory)的原理分析
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956614 作者dstmath在看雪论坛公布一个Android的art模式下基 ...
- Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
本文作者:HAI_ 0×00 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...
- DexHunter在ART虚拟机模式下的脱壳原理分析
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/78494620 DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理分析 ...
- DexHunter在Dalvik虚拟机模式下的脱壳原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78494671 在前面的博客<DexHunter的原理分析和使用说明(一)&g ...
- Android平台dalvik模式下java Hook框架ddi的分析(1)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75710411 一.前 言 在前面的博客中已经学习了作者crmulliner编写的, ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
随机推荐
- SLI的相关学习
今天帮人安装前年的机皇-微星GT80S的操作系统,安装好后用鲁大师测试下跑分,发现双显卡和单显卡鲁大师的跑分竟然一样,就像副显卡根本没有工作,听主人所这台机器能跑到36万以上. 然后就苦逼的尝试,把B ...
- spring学习 五 依赖注入的方式
依赖注入有两种方式: 1 构造注入,如果<bean>标签下使用<contructor-arg>,则是构造注入 2 setter注入,就是调用setter方法注入,如果<b ...
- 数组方法concat & slice
掌握数组的操作方法: concat() / slice() concat() 语法: arrayObject.concat(arrayX,arrayY,....,arrayZ) 功能:用于连接两个或 ...
- Rigidbody.Is Kinematic和碰撞体
Rigidbody组件拥有一个Is Kinematic的属性,该属性可以将其从引擎的控制中移除,从而可以用脚本控制GO的运动.注意:尽量不要使用脚本控制该属性的开关. Colliders(碰撞器) C ...
- 对SVC和SVR的理解
首先: support vector classify(SVC)支持分类机做二分类的,找出分类面,解决分类问题 support vector regression(SCR)支持回归机做曲线拟合.函数回 ...
- JSP错误
1.<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodin ...
- Pappus一阶矩公式
- BT656与BT1120的区别
从ITU-R BT1120文档上可知,BT1120支持的是1080p: 文档定义一帧为1 125 总行数和1 080 有效行:每行有效像素为1920图像频率60. 50. 30. 25 和 24H ...
- wget批量下载http文件
eg:http://hgdownload.soe.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeAwgDnaseUniform/ 下载该路径下的所有文件 wge ...
- 2017-11-29 由runnable说起Android中的子线程和主线程
1.首先纠正一个观点,就是runnable运行在子线程中是错误的观念.runnable只是创建了一个执行任务的对象,但是它本身并不会创建一个新的子线程,Runable只是给你接口让你实现工作线程的工作 ...