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 ...
随机推荐
- 20155312张竞予 20170510实践一:在IDEA中以TDD的方式对String类和Arrays类进行学习
实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...
- Spring框架简介
1.发明者:Rod Johnson 2.轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子 2.2 IT行业:直接只用写好的代码 3.Spring框架宗旨:不重新发明技术,让原有技术使用起来更加方便 ...
- 2019.01.20 bzoj3999: [TJOI2015]旅游(树链剖分)
传送门 树链剖分菜题. 题意不清差评. 题意简述(保证清晰):给一棵带权的树,每次从aaa走到bbb,在走过的路径上任意找两个点,求后访问的点与先访问的点点权差的最大值. 思路: 考虑暴力:维护路径的 ...
- Mybatis在oracle数据库中插入数据后返回自增值ID
1.将id设置成自增序列 CREATE OR REPLACE TRIGGER "DATALIB"."TRIG_USER_ADD" BEFORE INSERT O ...
- excel2007vba绘图1
参考:http://club.excelhome.net/thread-480025-1-1.html '----------------------------------------------- ...
- mysql学习之路_高级数据操作
关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...
- 第09章:MongoDB-CRUD操作--文档--修改--update
①语法 db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boole ...
- KindEditor4.x整合教程-Xproer.WordPaster
1.1. 集成到KindEditor4.x 主要步骤如下: 1.上传插件文件夹 2.上传WordPaster文件夹 3.在引用页面为KindEditor增加插件按钮 <html xmlns= ...
- 动态创建控件 #Create(...)
在类中创建一个控件对象;例:CButton m_btn; 用Create创建一个对象(#其实已经与其绑定)m_btn.Create(.....); #注意Create()函数的参数 问题一:点击一个b ...
- 笔记:认识 head 标签 待 更新中……
文档的头部描述了文档的各种属性和信息,包括文档的标题等.绝大多数文档头部包含的数据都不会真正作为内容显示给读者. 下面这些标签可用在 head 部分: <head> <title&g ...