论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&H ...
APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术 ...
大号在练葵花宝典
金牌会员
|
2023-12-8 18:39:38
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
902
|
帖子
902
|
积分
2706
JEB环境配置
安装java环境变量(最好jdk11)
安装adb环境变量
设置adb环境变量最好以Android命名
启动开发者模式
设置-->关于平板电脑-->版本号(单机五次)
开启USB调试
设置-->系统-->高级-->开发者选项-->USB调试
开启USB调试目的是为了后续让JEB能够获取模拟器上的进程
安装激活JEB
软件安装包和破解参考吾爱破解文章
JEB动态调试Smali-真机/模拟器(详细,新手必看)
JEB动态调试
使用的吾爱破解中大佬课程《安卓逆向那点事》中提供的练习demo第四关来练习动态调试。
在进行动态调试前必须在apk中加入允许动态调试,一般在application标签中加入即可。其他加入动态调试方法相较于加入代码来说有点复杂,可以参考
《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩
android:debuggable="true"
复制代码
JEB中打开的apk必须也加入了动态调试才能和模拟器中的进程进行互动,查看方法如下
在对第四关进行练习时,需要输入密钥,可以对关键字进行搜索
找到关键字所在位置
解析为java代码后发现控制程序逻辑的是一个if语句,在执行check()函数后,通过check()函数的返回值来判断if语句的执行逻辑,这里只需要将check()函数的返回值修改为真即可成功绕过密钥判断。
双击查看check()函数,这里有检测提交的密钥是否带关键字flag{}
在函数返回值的地方判断变量v7是否与一串加密数据是否一致,如果一致就返回为真。有两种方式可以绕过密钥检测,一种是从逆向的角度将return的值固定为true,另外一种方法是通过动态调试的方式我们可以通过断点调试来获取这段加密数据,从而成功获取密钥。
逆向修改返回值:
在修改返回值的方法中,我们可以将代码中检测flag{}关键字的检测返回值一并进行固定修改,顺带将关键字检测也一并绕过
在以下三个返回值的地方我们需要全部固定为true
对应的smail代码如下
在return返回之前使用const进行重新赋值,由于JEB不能重新打包,使用MT管理器进行修改,修改效果如下
在进行修改后对apk进行重新编译后并签名安装即可成功绕过,绕过效果如下,关键字检测以及密钥检测全部成功绕过。
断点调试密钥:
在进行断点调试的时候首先判断需要在那里下断点,我们想要通过断点调试得到什么。
我们需要通过断点调试使得check()函数的最终返回值为true,需要得到与v7进行对比的一串密钥,所以我们在进行断点调试的时候需要在密钥得到的时候、返回值之前进行断点,并且在发送调试数据时必须带有flag{}关键字通过关键字检测才能使程序正常执行。
开启调试
下断点,在下断点时需要在smail语法视图中
发送数据,在开启断点调试后,进行发送数据的时候并不会提示密钥错误,因为程序在执行过程中被断点调试拦截了
成功断点后,一步一步执行程序的同时观察和分析局部变量
断点调试执行过程checkNotNullExpressionValue()-->encodeToString(),在encodeToString()函数返回值发现特殊变量
在执行到areEqual()函数时,我们发送的数据是和该变量进行比较。
通过尝试将密钥换成flag{VEFREgwEAA==}即可成功认证密钥。
LSPosed模块
安装Magisk、LSPosed以及算法助手
XPosed框架因只支持安卓8及以下,故高版本应使用Magisk+LSPosed
参考文章
雷电模拟器9.0.56安装Magisk+LSPosd
算法助手
通过LSPosed模块中所提供得集成功能可以大大节省时间。
在使用算法助手时,需要现在LSPosed模块中将进行调试得目标APP选中,系统框架是必须勾选的。
勾选目标APP后,在将算法助手中得APP勾选即可
LSPosed模块中,具有很多集成的功能
比如抓取加密算法
在面对具有加密算法得目标时候,使用算法助手中抓取算法功能可以很快获取到加密算法得位置,或者加密算法采用得加密密钥、偏移量等关键信息
通过算法助手启动APP在登录时调用加密算法,调用结束后可以在算法助手得日志处看到加密算法得调用过程以及加密细节
自定义Hook
在算法助手功能中有一项功能可以添加自定义hook
所谓hook技术,通俗来讲就是可以改变程序得执行逻辑,类似与bp抓包得时候修改数据包再将数据包放出,hook可以将程序中得变量或者返回值进行修改。
在添加hook时,需要将关键程序得执行逻辑搞清楚,将关键变量或者返回值进行修改。
例如在之前案例中得某小说APP中,通过关键字定位到关键逻辑,进行反编译后分析程序执行逻辑
if语句是否执行根据y5得返回值来判断,如果y5得返回值为true,即可成功进入if语句。我们可以通过自定义hook模块将y5得返回值固定。
使用JEB将鼠标放置在方法上即可查看方法得详细信息
根据y5方法所在得类,以及返回值类型构造自定义hook
将所添加的hook勾选后,使用算法助手启动即可
在没有勾选自定义得hook模块时,目标APP正常显示逻辑,vip并没有成功开通
在勾选自定义hook后,启动之后目标APP成功开通vip
在算法助手得日志记录中可以看到算法助手通过自定义得hook将目标APP中得y5()方法进行了拦截并修改了返回值。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
大号在练葵花宝典
金牌会员
这个人很懒什么都没写!
楼主热帖
记一次MySql唯一索引在left join连表查 ...
鸿蒙系统架构分析
【大话云原生】微服务篇-五星级酒店的 ...
国产开源体系openEuler_24.03_LTS摆设 ...
2021年高教杯数学建模国赛C题的解题过 ...
STM32F1与STM32CubeIDE编程实例-磁簧开 ...
C# 使用dataGridView导入导出excel(NPO ...
渗透测试过程参考
MySQL实战45讲 3
springboot请求参数的方法分享 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表