| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 记录一次android签名验证分析 -> 正文阅读 |
|
[移动开发]记录一次android签名验证分析 |
这个时候打开apk 发现白屏, 屏幕一直都是白屏. apk没有挂. adb shell 然后 logcat | grep com.tt.ttt 查看应用信息, 发现 ? ?发现都是died fore top 这种提示信息, 于是搜索了一下?died fore top, 发现是内存泄露,一般是jni问题, 于是在jadx中全局搜索了一下 loadlibrary, 结果如下 ?stringFog是这个app通用的字符串加密, 可以通过 frida hook 自调用查看so库名称, 不过在这个类下发现了一系列可疑的native函数,? 其中 validitySign 格外养眼 查看谁调用了这个函数 只有这一处, 不搞so, 尝试着smali中 删除这部分代码, 回编, apk正常运行. 上述方法一:? 修改smali把签名验证逻辑删除,搞定收工.不过本着学习的态度, 可以继续看看so, validitySign这个函数是静态注册, 实现如下 进入这个验证函数内部看看 发现有一个比较操作, 当计算所得的签名与固定字符串比对相同时,则验证成功. 我们可以修改逻辑,把逻辑改成 =>? 当签名与固定字符串比对不同时,则验证成功 CBZ ? R0, loc_83BE CBZ 指令是 compare branch zero , 当R0为0时,则跳转, R0存放的?c函数strcmp的结果 所以一种改法是将?CBZ 改为?CBNZ 推荐一个在线的arm <=> hex 转换站点??https://armconverter.com/ ?CBZ ? R0, loc_83BE? 这条指令对应的hex 是00B3,?loc_83BE是函数相对于本条指令的偏移 ? ? ?可以看到偏移是0x44, 然后紧接着arm to hex 试试, 发现是可以来回转换的? 然后将 cbz 改为 cbnz? cbnz这条指令对应的机器码用16进制表示是 00BB 然后打开二进制修改工具, 找到对应的位置 将 837A 处的00B3?修改为 00BB, 然后回编, 发现程序正常运行. ? 上述方法二:? 修改so层代码逻辑,搞定收工, 回家收衣服.仅限于学习交流, 侵删!!!! |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:51:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |