吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5843|回复: 6
收起左侧

[会员申请] 申 请 I D:QTrace2019【申请通过】

[复制链接]
吾爱游客  发表于 2019-12-10 17:08
1、申 请 I D:QTrace2019
2、个人邮箱:jeff_chau@163.com
3、原创技术文章:QTrace动态逆向分析Android程序


QTrace动态逆向分析Android程序一、QTrace概述    QTrace是Android软件动态分析工具,它就像一个X光扫描仪,实时打印一个类中所有函数的执行情况(比如函数堆栈,相关变量等), 同时还可以用UML序列图的方式展示程序的执行情况。         所以可以借助QTrace来分析混淆的程序,  可以在混淆代码中快速的定位到相关的代码, 并理清代码的运行。QTrace官网:http://www.qtrace.topQTrace下载地址:https://pan.baidu.com/s/1Dm_Jweh4-BNe6vcY_zRZUA         (注:要动态分析程序,首先要保证程序可以Debug的, 或者需要root手机。如何将程序重新打包成可debug的或者root手机,网络上相关文档一大把,自己baidu一下, 这里不再赘述>二、如何逆向分析     逆向分析时,最麻烦的事情当然是程序被混淆了。一则包名被混淆了,所以无法知道该看那个类。 二则每个类的代码被混淆了,根本无法知道执行了那个函数。下图为一个混淆后的程序,如果要分析一个功能,从类名根本无法判断该从那个文件开始分析。   本文将演示QTrace如何解决这两个问题.三、类文件的定位1.定位当前Activity这个执行adb dumpsys就可以得到了。打开QTrace, 打开Terminal面板。点击Current Activity图标:2.根据类加载信息定位使用到的类          定位到Activity往往还是不够的,毕竟Activity类文件只占了类文件的一小部分。分析一个功能,还需要看下它使用到了那些类。           由于Android与Java一样,对于一个要使用的类,都是需要使用时才加载的,所以可以根据加载的类,来分析一个功能执行时大概会调用那些相关的类。查看类加载信息具体操作如下:1.打开QTrace,  同时保证电脑ADB连接上手机2.执行运行->调试进程,选择要调试的程序3.打开控制台面板, 在该面板上可以看到类加载信息下图就是执行了一个处理后,类的加载信息, 分析该功能,可以从如下类入手。                  注意:       1.类加载后,下次就不会加载了。第一次执行某个功能会提示类加载信息,第二次执行往往就不会提供类加载信息了。     2.之前执行别的功能,已经加载了某类,及时该功能需要这个类,也不会提示类加载信息。     虽然,分析类加载有诸多限制,但是打印类加载信息成本很低的,所以还是一个非常有效的方法。3.跟踪类实例化(跟踪new一个类)        分析一个功能使用到了那些类,还有更精确的方法: 跟踪类的初始化。比如一个功能, 会使用到某些类, 同时会new来构造这些类实例。 如果能监视类的初始化,就能看到这个功能使用到了那些类。   该方案说起来简单,做起来缺不容易,如果用Android Studio, 则需要一个个打开类文件,然后在类的构造函数上打断点。解决QTrace则可以一步到位设置断点。 具体方法如下:1.打开QTrace,  同时保证电脑ADB连接上手机2.执行运行->调试进程,选择要调试的程序3.打开左侧''设备''面板.        该面板列出了,当前程序所有已经加载的类。​    比如这个例子中,要监视a.开头的类,选择目录a, 执行右键菜单'实例初始化断点', 完成断点设置。
  • 断点的结果也还是在控制台查看
QTrace可以批量的设置类的断点,不用一个个的设置。并且该方法开销不大,在一般性能的手机上测试,都不会出现手机卡顿。四、函数的定位上一节讨论了定位使用到的类的方法。这一节会进一步的讨论,如何定位使用到的函数。比如点击一个Button, 到底执行那些函数呢。在上面的'跟踪类实例化'例子中,我们分析到了这个功能,调用的类都是在a.a.a.b包下。 我们接着分析这个功能时,那些函数会被执行。具体方法如下:1.监视函数运行1.打开QTrace,  同时保证电脑ADB连接上手机2.执行运行->调试进程,选择要调试的程序3.打开左侧''设备''面板.   选择a.a.a.a目录,执行右键菜单'类断点'4.结果还是在控制台面板中。注意: 该方法会有较大的开销,需要性能较好的手机进行测试,不要一下监视太多的类,同时注意在''断点'','序列图跟踪'页面中去掉不需要的断点设置。2.监视函数堆栈上面例子中,打印的信息只包含执行了什么函数,以及执行该函数时的变量信息。在很多时候,还需要知道该函数是谁调用的,也就是需要查看函数栈信息。要打印堆栈信息,在设置断点时,修改脚本就可以了。1.打开断点面板, 删除已有的断点设置.2.打开左侧''设备''面板.   选择a.a.a.a目录, 重新设置类断点。   设置脚本内容为<trace>3.打印的结果如下五、UML 序列图           如上分析函数的方法,都是一个个函数分析的。QTrace还提供了UML序列图的方式展示了函数之间的调用关系,可以更直观,更快速的分析程序执行的脉络。           具体方法如下:1.打开QTrace,  同时保证电脑ADB连接上手机2.执行运行->调试进程,选择要调试的程序3.打开左侧''设备''面板.   选择a目录,执行右键菜单'序列图跟踪'4.UML序列图显示如下从UML序列图就可以很直观的看到程序是如何执行的。六、程序的调试对于分析程序执行,单步执行等这些基本的Debug方法也是必须的。反编译程序后,用Eclipse,Android Studio都可以进行Debug。QTrace也提供了相同的功能,这里说明下QTrace如何调试程序。1.反编译程序QTrace支持反编译APK, jar。 打开左侧'源码'面板,将apk文件拖到'源码'面板, 然后添加路径到源码。 QTrace会自动完成APK的反编译,反编译后的源码可以用于调试。也可以采用别的反编译工具进行反编译得到源码,然后将源码路径添加到项目。2.调试如果反编译后的代码行信息对的,那么可以打开对应的源码文件,然后在对应的代码行上打断点(按F9)。如果反编译后的代码行信息不对,那么可以采用函数断点。选择函数声明,按F9打断点。保证类型为函数,同时保证选择了'断住', '生效'选项。QTrace的调试方法与AndroidStudio,Eclipse是一样的,可以逐行调试,可以查看变量。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-12-10 17:53
I D:QTrace2019
邮箱:jeff_chau@163.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登陆后把文章整理一下,太乱了,发到移动安全区吧。
泽樟 发表于 2019-12-10 18:59
wax126 发表于 2019-12-11 06:03
QTrace2019 发表于 2019-12-24 14:21
新人报到
QTrace2019 发表于 2019-12-24 14:24
Hmily 发表于 2019-12-10 17:53
I D:QTrace2019
邮箱:

前来报道,谢谢
头像被屏蔽
ivyboy 发表于 2019-12-30 16:05
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表