APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

2024-02-29 1206阅读

温馨提示:这篇文章已超过393天没有更新,请注意相关的内容是否还可用!

APP攻防–安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

目录标题

  • APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术
    • JEB环境配置
    • JEB动态调试
    • LSPosed模块
    • 自定义Hook

      JEB环境配置

      1. 安装java环境变量(最好jdk11)
      2. 安装adb环境变量

      设置adb环境变量最好以Android命名

      1. 启动开发者模式

      设置–>关于平板电脑–>版本号(单机五次)

      APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

      1. 开启USB调试

      设置–>系统–>高级–>开发者选项–>USB调试

      APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

      开启USB调试目的是为了后续让JEB能够获取模拟器上的进程

      APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

      1. 安装激活JEB

      软件安装包和破解参考吾爱破解文章JEB动态调试Smali-真机/模拟器(详细,新手必看)

      JEB动态调试

      使用的吾爱破解中大佬课程《安卓逆向那点事》中提供的练习demo第四关来练习动态调试。

      • 在进行动态调试前必须在apk中加入允许动态调试,一般在application标签中加入即可。其他加入动态调试方法相较于加入代码来说有点复杂,可以参考《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩
        android:debuggable="true"
        
        • JEB中打开的apk必须也加入了动态调试才能和模拟器中的进程进行互动,查看方法如下

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在对第四关进行练习时,需要输入密钥,可以对关键字进行搜索

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          找到关键字所在位置

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          解析为java代码后发现控制程序逻辑的是一个if语句,在执行check()函数后,通过check()函数的返回值来判断if语句的执行逻辑,这里只需要将check()函数的返回值修改为真即可成功绕过密钥判断。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          双击查看check()函数,这里有检测提交的密钥是否带关键字flag{}

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在函数返回值的地方判断变量v7是否与一串加密数据是否一致,如果一致就返回为真。有两种方式可以绕过密钥检测,一种是从逆向的角度将return的值固定为true,另外一种方法是通过动态调试的方式我们可以通过断点调试来获取这段加密数据,从而成功获取密钥。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          逆向修改返回值:

          在修改返回值的方法中,我们可以将代码中检测flag{}关键字的检测返回值一并进行固定修改,顺带将关键字检测也一并绕过

          在以下三个返回值的地方我们需要全部固定为true

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          对应的smail代码如下

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在return返回之前使用const进行重新赋值,由于JEB不能重新打包,使用MT管理器进行修改,修改效果如下

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在进行修改后对apk进行重新编译后并签名安装即可成功绕过,绕过效果如下,关键字检测以及密钥检测全部成功绕过。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          断点调试密钥:

          在进行断点调试的时候首先判断需要在那里下断点,我们想要通过断点调试得到什么。

          我们需要通过断点调试使得check()函数的最终返回值为true,需要得到与v7进行对比的一串密钥,所以我们在进行断点调试的时候需要在密钥得到的时候、返回值之前进行断点,并且在发送调试数据时必须带有flag{}关键字通过关键字检测才能使程序正常执行。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          开启调试

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          下断点,在下断点时需要在smail语法视图中

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          发送数据,在开启断点调试后,进行发送数据的时候并不会提示密钥错误,因为程序在执行过程中被断点调试拦截了

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          成功断点后,一步一步执行程序的同时观察和分析局部变量

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          断点调试执行过程checkNotNullExpressionValue()–>encodeToString(),在encodeToString()函数返回值发现特殊变量

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在执行到areEqual()函数时,我们发送的数据是和该变量进行比较。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          通过尝试将密钥换成flag{VEFREgwEAA==}即可成功认证密钥。

          LSPosed模块

          安装Magisk、LSPosed以及算法助手

          XPosed框架因只支持安卓8及以下,故高版本应使用Magisk+LSPosed

          参考文章雷电模拟器9.0.56安装Magisk+LSPosd

          算法助手

          通过LSPosed模块中所提供得集成功能可以大大节省时间。

          在使用算法助手时,需要现在LSPosed模块中将进行调试得目标APP选中,系统框架是必须勾选的。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          勾选目标APP后,在将算法助手中得APP勾选即可

          LSPosed模块中,具有很多集成的功能

          比如抓取加密算法

          在面对具有加密算法得目标时候,使用算法助手中抓取算法功能可以很快获取到加密算法得位置,或者加密算法采用得加密密钥、偏移量等关键信息

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          通过算法助手启动APP在登录时调用加密算法,调用结束后可以在算法助手得日志处看到加密算法得调用过程以及加密细节

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          自定义Hook

          在算法助手功能中有一项功能可以添加自定义hook

          所谓hook技术,通俗来讲就是可以改变程序得执行逻辑,类似与bp抓包得时候修改数据包再将数据包放出,hook可以将程序中得变量或者返回值进行修改。

          在添加hook时,需要将关键程序得执行逻辑搞清楚,将关键变量或者返回值进行修改。

          例如在之前案例中得某小说APP中,通过关键字定位到关键逻辑,进行反编译后分析程序执行逻辑

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          if语句是否执行根据y5得返回值来判断,如果y5得返回值为true,即可成功进入if语句。我们可以通过自定义hook模块将y5得返回值固定。

          使用JEB将鼠标放置在方法上即可查看方法得详细信息

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          根据y5方法所在得类,以及返回值类型构造自定义hook

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          将所添加的hook勾选后,使用算法助手启动即可

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在没有勾选自定义得hook模块时,目标APP正常显示逻辑,vip并没有成功开通

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在勾选自定义hook后,启动之后目标APP成功开通vip

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

          在算法助手得日志记录中可以看到算法助手通过自定义得hook将目标APP中得y5()方法进行了拦截并修改了返回值。

          APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]