美文网首页逆向
Android逆向破解:动态分析技巧

Android逆向破解:动态分析技巧

作者: itfitness | 来源:发表于2020-12-17 22:20 被阅读0次

    目录

    准备

    这里所有的演示都是用的我自己写的一个简单的登录验证的应用,如下图所示。


    打印Log法

    所谓打印Log法就是在反编译的smali代码中,找到关键点,并在关键点处插入Log打印方法,以此来获取关键信息,执行步骤如下:
    1.设置应用可调试
    AndroidManifest.xml文件中在applicatio标签下加入android:debuggable="true"


    2.插入Log
    在关键点处右键->插入代码->Log

    这里我直接把v2打印出来(ps:当然这些关键信息在真实项目中是不可能这么明显的,这里为了演示所以写的简单)

    3.回编译并安装运行
    这里注意千万别忘了保存代码后再回编译。
    4.查看Log信息
    我们在应用程序中输入一个错误的用户名,然后点击登录,并且用Android Studio的Logcat视图来查看Log信息,信息如下,我们打印出了登录需要的正确的用户名。

    栈跟踪法

    简单来说就是在关键位置打印出执行的系列方法,然后可以通过Logcat查看,具体操作如下:
    1.在关键位置插入代码
    这里我是在登录方法的末尾加入的

    new-instance v0,Ljava/lang/Exception;
    #汉字需要用Unicode进行编码
    const-string v1,"\u6808\u8ddf\u8e2a\u6cd5"
    invoke-direct {v0,v1},Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
    invoke-virtual {v0},Ljava/lang/Exception;->printStackTrace()V
    #对应Java中的代码是 new Exception("栈跟踪法").printStackTrace();
    

    2.Logcat中查看信息
    Android Studio的Logcat视图中会打印如下图所示的信息,通过该信息我们可以得知,当我们点击按钮的时候,执行的方法顺序是onClick->access$000->login

    Method Profiling

    这种方法是通过Android SDK自带的工具Device Monitor来对一段时间内执行的方法进行分析,具体操作如下:
    1.运行Device Monitor
    这里如果你开启的Android Studio则需要将Android Studio关掉,然后需要找到你本地Android SDK的tools目录下的monitor.bat双击运行。


    启动后是这样的:

    2.监控方法
    选中你调试的程序,点击Start Method Profiling

    然后输入信息点击登录按钮:

    然后点击Stop Method Profiling

    这时候会出现如下窗口:

    然后我们可以通过搜索关键词从中找到我们执行的onClick方法,其中Parents表示该方法的父方法(调用该方法的方法),Children表示该方法的子方法(该方法所调用的方法)。

    UI查看

    我们可以通过查看Activity的布局信息,从中找到关键点。
    1.adb命令查看

    adb shell dumpsys activity top
    

    通过该命令我们可以在命令行中查看到Activity的信息


    2.Device Monitor查看
    通过Device Monitor我们可以直观的查看到Activity对应的布局中的控件信息,操作步骤如下:
    1):点击Dump View Hierarchy for UI Automator

    2):在弹出的窗口中,通过鼠标点击相应控件,来查看控件的信息

    相关文章

      网友评论

        本文标题:Android逆向破解:动态分析技巧

        本文链接:https://www.haomeiwen.com/subject/jarggktx.html