一次Android脱壳training

一.查壳

jeb载入发现没有代码,怀疑加壳

用查壳工具查壳 (爱加密)

apktool解包

得到其

package name: loading.androidmanual

main activity name: .BeginningActivity

二.调试启动APP

安装APK到AVD模拟器

配置好IDA调试so环境(略过)

调试启动

adb shell am start -D -n 包名/包名+类名

adb shell am start -D -W -n loading.androidmanual/loading.androidmanual.BeginningActivity

设置调试模式

记录下ID为506,附加上调试器

在libdvm.so中找到dvmDexFileOpenPartial.....

并在函数头部下好断点 F9运行起来

设置jdb调试,执行后程序断下来

此时寄存器R0为dex文件的起始地址,R1为大小

R0 = 0x4C38E7B4

R1 = 0x000FAEB4

内存窗口可以清楚的看到文件头

三.dump dex file

IDA->File->scrpit command在弹出的对话框中粘贴我们的dump脚本

Message("start dump\n");

auto fp,dex_addr,addr_begin,data_len,addr_end;addr_begin=0x4C38E7B4;data_len=0x000FAEB4;addr_end=addr_begin+data_len;

fp=fopen("D:\\dump.dex","wb");for (dex_addr=addr_begin;dex_addr < addr_end;dex_addr++){    fputc(Byte(dex_addr),fp);}

Message("end dump\n");

运行脚本文件

脚本运行完毕后会在指定目录生成dump.dex文件

在用JEB打开就可以分析dex文件了

来自为知笔记(Wiz)

附件列表

时间: 2024-10-08 17:39:31

一次Android脱壳training的相关文章

android脱壳之DexExtractor原理分析[zhuan]

http://www.cnblogs.com/jiaoxiake/p/6818786.html内容如下 导语: 上一篇我们分析android脱壳使用对dvmDexFileOpenPartial下断点的原理,使用这种方法脱壳的有2个缺点: 1.  需要动态调试 2.  对抗反调试方案 为了提高工作效率, 我们不希望把宝贵的时间浪费去和加固的安全工程师去做对抗.作为一个高效率的逆向分析师, 笔者是忍不了的,所以我今天给大家带来一种的新的脱壳方法——DexExtractor脱壳法. 资源地址: Dex

android脱壳之DexExtractor原理分析

导语: 上一篇我们分析android脱壳使用对dvmDexFileOpenPartial下断点的原理,使用这种方法脱壳的有2个缺点: 1.  需要动态调试 2.  对抗反调试方案 为了提高工作效率, 我们不希望把宝贵的时间浪费去和加固的安全工程师去做对抗.作为一个高效率的逆向分析师, 笔者是忍不了的,所以我今天给大家带来一种的新的脱壳方法--DexExtractor脱壳法. 资源地址: DexExtractor源码:https://github.com/bunnyblue/DexExtracto

【Android Developers Training】 107. 认知用户当前的行为

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/location/activity-recognition.html 样例代码: ActivityRecognition.zip 行为认知会尝试检测当前用户的物理行为,比如:行走,驾驶或者静止站立.从一个行为认知客户端发出更新信息的请求,同之前的定位或者地

【Android Developers Training】 103. 查询当前地点

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/location/retrieve-current.html 样例代码: LocationUpdates.zip 地点服务自动维护用户当前的地点,所以你的应用所要做的事情就是在需要时去获取它.地点的精确度是基于你所申请的地点查询权限,以及当前设备上激活的的

【Android Developers Training】 99. 获取联系人详细信息

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/contacts-provider/retrieve-details.html 这节课将会展示如何获取一个联系人的详细数据,比如电子邮件地址,电话号码,等等.当用户获得一个联系人后,他会想要查看他的详细信息.你可以展示给他们所有的信息,或者只展示某一特定类

【Android Developers Training】 108. 使用模拟定位进行测试

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/location/location-testing.html 样例代码: LocationProvider.zip 要测试一个使用定位服务的地点认知应用,你不需要将你的设备从一个地方移动到另一个地方来生成数据.你可以将定位服务放到测试模式中.在该模式中你可

【Android Developers Training】 106. 创建并检测地理围栏

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/location/geofencing.html 地理围栏可以将用户当前地点信息和周围的地点信息相结合,它其实是用户接近潜在的感兴趣的地点的程度.要标记一个感兴趣的地点,你需要指定它的经纬度.要调整接近的位置,你还需要添加一个半径.经纬度和半径加起来就成为

【Android Developers Training】 102. 序言:让你的应用获知地点

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/location/index.html 移动应用的其中一个独一无二的特性是可以获知地点.移动用户会携带它们的设备到任何地方,你的应用会有地点感知的功能,这样的功能提供给了用户更丰富的使用体验.Google Play服务中新的地点服务API(Location

(一)Android性能优化系列---Performance Tips(文章出处:http://developer.android.com/training/articles/perf-tips.html#Myths)

本文列出的优化技巧主要是一些微小的性能提升,可能不会给你的程序性能改善产生显著的效果.决定程序整体性能的仍然取决于程序的业务逻辑设计.代码的数据结构和算法,这超出了本文的范围.你需要将这些优化技巧应用到平时的编码过程中,积少成多,也会对性能有很大的影响. 下面是写高效代码的两个基本原则: 1.不要写不需要的代码: 2.不要分配不必要的内存. android应用程序优化一个非常棘手的问题就是android硬件差异很大.不同的虚拟机.不同的SDK版本.app在不同的设备环境上运行速度和性能自然不同: