Android安全–一次简单的脱壳Dump dex实践
2016-07-06 19:29
267 查看
这篇脱壳是参考别人自己进行的一次简单的实践,主要是为了了解脱壳的流程以及工具的使用。
下面直接进入正题吧:
例子下载地址:
链接: http://pan.baidu.com/s/1c08Ufeg 密码:
n8dc
首先把apk后缀改成.zip打开,发现dex文件只有1.23kb,所以真正的代码肯定不在这里,而是在运行中解密出来动态加载的。
话不多说,直接上工具,首先找到IDA目录dbgsrv下面的android_server文件,然后push到手机上面,然后加上可执行权限,再运行。如图所示:
运行后在端口23946端口监听。
安装apk文件。
端口转发,让IDA可以连接本地端口进行远程调试。
以调试模式启动程序:
adb shell am start –D -n 包名/包名+类名
程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,AndroidManifest.xml文件可以使用apktool工具反编译得到。
然后打开IDA,attach要调试的进程:
hostname设为本机127.0.0.1
找到应用的进行,并记下进程号:
进程号为2696,使用 forward jdwp:<pid>
转换端口以连接到指定的 JDWP 进程。
使用jdb附加调试应用程序。
然后找到程序加载的模块libdvm.so,找到其中的函dvmdexfileopenpartialPKviPP6DvmDex,在这个函数下断点。
为什么要在这个函数下断点,因为这个函数是加载dex文件的,R0就是加载的dex文件的地址。
然后点击IDA的继续,程序便会断在这个函数上面。
这时查看R0的值,然后显示其内存如下:
我们看到了dex文件的标志。
然后打开idc脚本,修改dump的内存起始地址和结束地址,起始地址就是R0的值,结束地址就是R0加上dex文件的大小,然dex文件的大小在dex header的0×20处,也就是0xFAEB4。
点击run,之后会在D盘下面生成一个1M左右的dex文件,这就是我们dump出来的dex文件。
使用dex2jar转成jar文件,再使用jd-gui.exe打开,得到程序代码:
也可以把dex文件替换回去,打包运行。
就是一个简单的例子,也是为了让自己加深印象,熟悉工具的使用,希望大家能够自动手动脱下壳~
下面直接进入正题吧:
例子下载地址:
链接: http://pan.baidu.com/s/1c08Ufeg 密码:
n8dc
首先把apk后缀改成.zip打开,发现dex文件只有1.23kb,所以真正的代码肯定不在这里,而是在运行中解密出来动态加载的。
话不多说,直接上工具,首先找到IDA目录dbgsrv下面的android_server文件,然后push到手机上面,然后加上可执行权限,再运行。如图所示:
运行后在端口23946端口监听。
安装apk文件。
端口转发,让IDA可以连接本地端口进行远程调试。
以调试模式启动程序:
adb shell am start –D -n 包名/包名+类名
程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,AndroidManifest.xml文件可以使用apktool工具反编译得到。
然后打开IDA,attach要调试的进程:
hostname设为本机127.0.0.1
找到应用的进行,并记下进程号:
进程号为2696,使用 forward jdwp:<pid>
转换端口以连接到指定的 JDWP 进程。
使用jdb附加调试应用程序。
然后找到程序加载的模块libdvm.so,找到其中的函dvmdexfileopenpartialPKviPP6DvmDex,在这个函数下断点。
为什么要在这个函数下断点,因为这个函数是加载dex文件的,R0就是加载的dex文件的地址。
然后点击IDA的继续,程序便会断在这个函数上面。
这时查看R0的值,然后显示其内存如下:
我们看到了dex文件的标志。
然后打开idc脚本,修改dump的内存起始地址和结束地址,起始地址就是R0的值,结束地址就是R0加上dex文件的大小,然dex文件的大小在dex header的0×20处,也就是0xFAEB4。
点击run,之后会在D盘下面生成一个1M左右的dex文件,这就是我们dump出来的dex文件。
使用dex2jar转成jar文件,再使用jd-gui.exe打开,得到程序代码:
也可以把dex文件替换回去,打包运行。
就是一个简单的例子,也是为了让自己加深印象,熟悉工具的使用,希望大家能够自动手动脱下壳~
相关文章推荐
- Android使用OpenCV实现「人脸检测」和「人脸识别」
- Drawable:button,listView
- Android开源特效最全合集
- Android之LoadMoreListView
- Android 禁用多点触控
- Android之SoundPool音效池的介绍与使用
- android 通知
- Android之权限大全
- Android社交系统----代码结构
- Android事件总线otto学习笔记
- hello world (android RecyclerView)
- 使用DrawerLayout实现简单的侧滑效果
- Android 数据库升级解决方案
- Android studio的快捷键使用说明
- 【问题解决】socket ECONNRESET 异常
- Android中蓝牙开发-1
- Android Studio插件安装教程
- Android——Handler异步消息机制
- Android开源项目
- Android的MVP模式