[转]Android逆向之动态调试总结 神乎(共五篇).docx 立即下载
2025-08-25
约7.9千字
约12页
0
17KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

[转]Android逆向之动态调试总结 神乎(共五篇).docx

[转]Android逆向之动态调试总结神乎(共五篇).docx

预览

免费试读已结束,剩余 7 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

[转]Android逆向之动态调试总结神乎(共五篇)

第一篇:[转]Android逆向之动态调试总结神乎[转]Android逆向之动态调试总结神乎一、在SO中关键函数上下断点刚学逆向调试时。大多都满足于在SO中某关键函数上下断点。然后通过操作应用程序,去触发这个断点,然后进行调试详细的步骤可以参见非虫大大的《Android软件安全与逆向分析》简单说:在libsyclover.so文件中有一个函数jnicall1。每次单击按钮的时候,便会调用此函数。1.静态载入此so文件,找到函数的偏移地址为:0x132C2.执行android_server3.端口转发adbforwardtcp:23946tcp:239464.运行程序5.IDA附加然后会弹出点击OK之后,在弹出的列表框中选择需要附加的进程即可6.下断点附加完成之后,会停在libc.so这个模块中。此时按下Ctrl+S,弹出模块列表框,搜索so文件名。记录下基地址:0×76072000(RX权限)和静态分析时得到的偏移地址0x132C相加得到0x7607332CG跳转到此位置F2下好断点!7.触发断点下好断点,便F9执行,此时状态是runing此时,去应用中单击按钮,程序便会断在刚刚下好的断点处~ok~这种调试方法局限性很大,适合于比较初级的调试。这种调试手法在现在已经满足不了需求了。二、在JNI_OnLoad函数上下断点JNI_OnLoad函数大概功能就是在程序加载so的时候,会执行JNI_OnLoad函数,做一系列的准备工作。很多时候,程序猿们会将一些重要信息放在此函数中,而不是通过某种事件来重复触发。包括说将反调试函数放置在此函数中。因此,调试手段发生了改变,上述调试方法基本上被淘汰。1.静态分析,找到JNI_OnLoad函数的偏移:0×15042.执行android_server3.端口转发adbforwardtcp:23946tcp:239464.以调试模式启动程序adbshellamstart-D-ncom.example.mytestcm/.MainActivity此时,手机界面会出现WaitingForDebugger页面5.打开ddms或者Eclipse(必要,为了使用jdb命令)6.IDA附加7.设置调试选项Debugger—DebuggerOptions8.F9运行程序IDA中,F9运行程序,此时是runing状态。在命令行中执行:jdb-connectcom.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700其中port=8700是从ddms中看到的。此时程序会断下来9.下断点Ctrl+S然后搜索到so文件名记录下基地址是:0×76118000加上JNI_OnLoad函数的偏移地址0×1504为0×76119504G跳转到0×76119504,下断点A.触发断点下好断点之后,直接F9运行吧,就能断在JNI_OnLoad函数处~当这种调试手法出现之后,将特殊函数,或者反调试函数放在JNI_OnLoad中也不是那么的安全了。此时,程序猿们通过分析系统对SO文件的加载链接过程发现,JNI_OnLoad函数并不是最开始执行的。在JNI_OnLoad函数执行之前,还会执行init段和init_array中的一系列函数。因此,现在的调试方法,都是将断点下在init_array中~至于下断点的方法,可以类比于在JNI_OnLoad中下断点的方法,在init_array的函数中下断点。还有一种方法便是通过在linker模块中,通过对其中函数下断点,然后也能单步到init_array中下面便详细介绍下如何给任意系统函数下断点三、给任意系统函数下断点1.需要准备的有:与你调试环境一致的系统源码,这个也可以在http://androidxref.com/网站上在线查阅。root之后的手机,方便将系统的一些so文件dump至本地,静态获取到系统函数的偏移地址2.流程执行android_server端口转发adbforwardtcp:23946tcp:23946调试模式启动程序adbshellamstart-D-n包名/类名IDA附加静态找到目标函数对应所在模块的偏移地址Ctrl+S找到对应模块的基地址,两个地址相加得到最终地址G跳转至地址,然后下断F9运行执行jdb-connectcom.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700断下,进行调试四、在dvmDexFileOpenPartial函数下断点,dump出明文dex发展至今,从去年到现在,apk的加解密发展非常迅速。国内出现了很多针对apk的加壳保护方案。主要也体现在对dex的保护和对so的保护!针对dex的保护,很
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

[转]Android逆向之动态调试总结 神乎(共五篇)

文档大小:17KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用