• Android动态逆向分析工具ZjDroid--脱壳神器



    项目地址:https://github.com/BaiduSecurityLabs/ZjDroid


    前提条件:

    1、Root手机一部

    2、须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework;


    一、ZjDroid工具介绍


    ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:
    1、DEX文件的内存dump
    2、基于Dalvik关键指针的内存BakSmali。有效破解加固应用
    3、敏感API的动态监控
    4、指定内存区域数据dump
    5、获取应用载入DEX信息。
    6、获取指定DEX文件载入类信息。


    7、dump Dalvik java堆信息。
    8、在目标进程动态执行lua脚本。



    二、ZjDroid相关命令

    1、获取APK当前载入DEX文件信息:

    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dexinfo"}'


    使用说明
    pid   调用时把pid换成目标进程的id
    查看结果:
    从Android的LogCat中查看结果,得到当前载入的dex的信息如:
    The DexFile Infomation ->
    07-27 02:29:52.728: D/zjdroid-shell-com.evernote(5365): filepath:/data/app/com.evernote-2.apk mCookie:1770063976
    End DexFile Infomation


    2、获取指定DEX文件包括可载入类名:

    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_class","dexpath":"*****"}'


    使用说明
    pid  调用时把pid换成目标进程的id
    dexpath  上一命令输出的dex文件地址,如/data/app/com.evernote-2.apk
    查看结果:
    从Android的LogCat中查看结果,得到当前载入的class信息


    4、依据Dalvik相关内存指针动态反编译指定DEX,并以文件形式保存。

    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"backsmali","dexpath":"*****"}'


    该方式能够脱壳眼下大部分流行的加固防护。

    (因为手机性能问题,执行较忙)
    例外情况:
    因为ApkProtect特定防改动检測,须要做例如以下改动就可以解固该保护:
    (1)在设备上创建特定文件夹(如/data/local)并 chmod 为777
    (2)复制zjdroid.apk到该文件夹,并改动文件名称为zjdroid.jar
     (3) 改动/data/data/de.robv.android.xposed.installer/conf/modules.list 模块代码文件改动为"zjdroid.jar"
    从启设备就可以。

    5、Dump指定DEX内存中的数据并保存到文件(数据为odex格式。可在pc上反编译)。
    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dex","dexpath":"*****"}'

    6、Dump指定内存空间区域数据到文件

    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_mem","startaddr":1234567,"length":123}'


    使用说明
    startaddr 注意此值是10进制

            length  注意此值是10进制


    7、Dump Dalvik堆栈信息到文件,文件能够通过java heap分析工具分析处理。


    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_heap"}'

    8、执行时动态调用Lua脚本
    该功能能够通过Lua脚本动态调用java代码。
    使用场景:
    能够动态调用解密函数,完毕解密。
    能够动态触发特定逻辑。


    am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"invoke","filepath":"****"}'

    luajava相关用法:
    http://www.keplerproject.org/luajava/

    8、敏感API调用监控

    三、相关命令执行结果查看:

    1、命令执行结果:
    adb shell logcat -s zjdroid-shell-{package name}

    2、敏感API调用监控输出结果:
    adb shell logcat -s zjdroid-apimonitor-{package name}

  • 相关阅读:
    常见前端面试题CSS部分
    window.location
    实时时间设置
    常用兼容处理
    背景淡入淡出切换
    常用插件
    PHP文件处理函数
    PHP的数据处理函数二(数组)
    php的数据处理函数一(字符串)
    PHP环境搭建(phpstudy)
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6970289.html
Copyright © 2020-2023  润新知