调试Android原生程序远程调试.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 Android恶意代码动态分析 * 学习目标 了解软件动态调试方法 掌握代码注入法和栈跟踪法 掌握使用IDA Pro调试Android原生程序的调试方法 1 简介 软件调试 (1)源码级调试 (2)汇编级调试 动态调试Android程序 (1)动态调试Android SDK程序 (2)动态调试Android 原生程序 动态调试Android SDK程序 (1)Dalvik虚拟机实现了JDWP(Java Debug Wire Protocol,Java调试有线协议),可以直接使用支持JDWP协议的调试器来调试Android程序。 (2)DDMS与Eclipse ADT插件 (3)Dalvik虚拟机中所有对调试支持的实现代码位于Android系统源码的dalvik/vm/jdwp目录下。每一个启用调试的Dalvik虚拟机实例都会启动一个JDWP线程。 动态调试Android 原生程序 原生程序使用传统的Linux程序调试方法如GNU调试服务器来连接进行调试。原生程序分为动态链接库与普通可执行程序两种。前者大多内置于Android程序中,在调试时需要先启动Android程序加载它,然后使用远程附加的方式来调试,后者可以直接使用远程运行的方式来调试它。 2 代码注入法 所谓的代码注入是指首先反编译Android程序,然后在反汇编出的smali文件中添加Log调用的代码,最后重新打包程序运行来查看输出结果。 例子:注册码验证模型程序,要求不修改程序,找出用户名admin的注册码 将修改完成的代码使用APKtool重新打包,签名并在此运该程序。输入用户名“admin”与任意的注册码,此时仍然会弹出注册码错误的提示,但Log.v()方法却“偷偷的”输出了正确的注册码。 3 栈跟踪法 栈跟踪法同样属于代码注入的范畴,它主要是手动想反编译后的smali文件中加入栈跟踪信息输出的代码。 与注入Log输出的代码不同,栈跟踪法只需要知道大概的代码注入点,而且注入代码后的反馈信息比Log注入要详细的多。 例子:运行本小节的例子stackTrace,程序运行后弹出了Toast,我们的要求是:这个Toast是何时被调用的? 使用Apktool反编译,然后添加相应的代码 New Exception(“print trace”).printStackTrace(); 对应的smali代码 new-instance v0, Ljava/lang/Exception; const-string v1, “print trace” invoke-direct{v0,v1}, Ljava/lang/Exception;-init(Ljava/lang/String;)V Invoke-virtual{v0},Ljava/lang/Exception;-printStackTrace()V 使用Apttool重新打包,签名后再次运行程序 Adb logcat –s System.err:V*:W查看logCat输出信息 4 使用IDA Pro调试Android原生程序 IDA Pro从6.1版本开始,支持动态调试Android原生程序。 两种类型 (1)调试Android原生程序(远程调试) (2)调试Android原生动态链接库(远程附加) Android中的原生程序 Android NDK“安卓原生开发套件”。它是一款强大的工具,可以将原生C、C++代码的强大功能和Android应用的图形界面结合在一起,解决软件的跨平台问题。 Android NDK从R8版本开始,支持生成x86、MIPs、ARM三种架构的原生程序。 4 使用IDA Pro调试Android原生程序 调试Android原生程序(远程调试) 所谓“远程调试”是指通过网络调试在另一个网络上的计算机运行的代码的过程。利用远程调试,我们可以使用Windows GUI版本的IDA作为一个前端接口,调试IDA支持的任何平台上的会话。 运行IDA PRO界面的计算机被称为“调试器客户端”。 运行被调试的应用程序的计算机被称为“调试器服务器 ”。 4 使用IDA Pro调试Android原生程序 远程调试主要用于下面一些特殊应用: 用于调试病毒/木马/恶意软件:通过这种方法,调试器客户端可以与可能受到这些软件攻击的计算机隔离。 调试那些在一台计算机上运行遇到问题,而且没有被拷贝安装在其他计算机上的应用程序。 调式分布式应用程序 它始终在你的主工作站上运行,因此你无需将IDA配置、文件和不同的调试相关资源拷贝到其它机器上。 4 使用IDA Pro调试Android原生程序 远程调试步骤 1.在IDA 6.1的目录下有一个android_server,是

文档评论(0)

sunhongz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档