本文作者: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)的更多相关文章

  1. ART模式下基于Xposed Hook开发脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365 Dalvik模式下的Android加固技术已经很成熟了,Dalvik ...

  2. Android逆向进阶(7)——揭开Hook的神秘面纱

    本文作者:i春秋作家——HAI_ 0×00 前言 HAI_逆向使用手册(想尝试一下新的写法) 其他 Android逆向进阶 系列课程 <<<<<<< 人物说明 ...

  3. ART模式下基于dex2oat脱壳的原理分析

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483 一般情况下,Android Dex文件在加载到内存之前需要先对dex ...

  4. 基于Frida框架打造Art模式下的脱壳工具(OpenMemory)的原理分析

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956614 作者dstmath在看雪论坛公布一个Android的art模式下基 ...

  5. Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)

    本文作者:HAI_ 0×00 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...

  6. DexHunter在ART虚拟机模式下的脱壳原理分析

    本文博客地址: http://blog.csdn.net/qq1084283172/article/details/78494620 DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理分析 ...

  7. DexHunter在Dalvik虚拟机模式下的脱壳原理分析

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78494671 在前面的博客<DexHunter的原理分析和使用说明(一)&g ...

  8. Android平台dalvik模式下java Hook框架ddi的分析(1)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75710411 一.前 言 在前面的博客中已经学习了作者crmulliner编写的, ...

  9. Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...

随机推荐

  1. 20155312张竞予 20170510实践一:在IDEA中以TDD的方式对String类和Arrays类进行学习

    实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...

  2. Spring框架简介

    1.发明者:Rod Johnson 2.轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子 2.2 IT行业:直接只用写好的代码 3.Spring框架宗旨:不重新发明技术,让原有技术使用起来更加方便 ...

  3. 2019.01.20 bzoj3999: [TJOI2015]旅游(树链剖分)

    传送门 树链剖分菜题. 题意不清差评. 题意简述(保证清晰):给一棵带权的树,每次从aaa走到bbb,在走过的路径上任意找两个点,求后访问的点与先访问的点点权差的最大值. 思路: 考虑暴力:维护路径的 ...

  4. Mybatis在oracle数据库中插入数据后返回自增值ID

    1.将id设置成自增序列 CREATE OR REPLACE TRIGGER "DATALIB"."TRIG_USER_ADD" BEFORE INSERT O ...

  5. excel2007vba绘图1

    参考:http://club.excelhome.net/thread-480025-1-1.html '----------------------------------------------- ...

  6. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  7. 第09章:MongoDB-CRUD操作--文档--修改--update

    ①语法 db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boole ...

  8. KindEditor4.x整合教程-Xproer.WordPaster

    1.1. 集成到KindEditor4.x 主要步骤如下: 1.上传插件文件夹 2.上传WordPaster文件夹   3.在引用页面为KindEditor增加插件按钮 <html xmlns= ...

  9. 动态创建控件 #Create(...)

    在类中创建一个控件对象;例:CButton m_btn; 用Create创建一个对象(#其实已经与其绑定)m_btn.Create(.....); #注意Create()函数的参数 问题一:点击一个b ...

  10. 笔记:认识 head 标签 待 更新中……

    文档的头部描述了文档的各种属性和信息,包括文档的标题等.绝大多数文档头部包含的数据都不会真正作为内容显示给读者. 下面这些标签可用在 head 部分: <head> <title&g ...