吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5720|回复: 98
收起左侧

[Android 原创] 安卓逆向劝退指南1

  [复制链接]
全拼 发表于 2023-11-30 23:25
本帖最后由 全拼 于 2023-11-30 23:43 编辑

说一下写这系列的原因,第一肯定是因为有空,其次是介于短视频的发展,很多懂哥在抖音或者b站上面看到了很多使用mt管理器破解会员的视频,觉得安卓逆向不过如此么,然后自己动手过后,就是为啥闪退?怎么进去直接黑屏?我就改了个包名,啥都没动啊,所以希望看了这篇文章能让大家千万不要相信营销号。
营销号.jpg

从我自己的角度来说,个人感觉安卓逆向的学习曲线是比较陡峭的,外加这一块也比较独立,经常打靶机的小伙伴可能还会在靶机里遇到pwn提权或者re获得账号密码的情况,联动安卓逆向的靶机目前我是真没见过。
没见过世面.jpg

所以这篇文章的主要目的就是劝退,我会写的比较细致,让大家体会到江湖的险恶
江湖险恶,不行就撤.jpg
题目链接:https://github.com/wm-team/WMCTF-2023/tree/main/Reverse/ezAndroid
首先就是最常见的直接把apk拖入jadx,发现两个native函数,打开IDA
微信图片_20231130220623.png
微信图片_20231130221036.png

很显然是动态注册,查看jni_onload,看这个架势是有混淆的,不过还能看
微信图片_20231130221144.png

先看一下init,发现有四个函数,一个一个看,第一个是在往.bss区域塞数据(劝退点:什么是bss区域)
微信图片_20231130221330.png
第二个是函数像是在换表
微信图片_20231130221530.png

看看第三个,看着也是在初始化
微信图片_20231130221649.png

最后是第四个,看这个图片有经验的就知道估计是反调试。。。别问为什么,要问就问自己为什么不知道一路跟进去虽然有混淆。但是逻辑还是比较简单的。
微信图片_20231130221758.png

就是简单的一个strstr检测frida的反调试,所以直接hook libso里面的strstr函数就行了(别问我脚本,要不然就不叫劝退指南了。)
微信图片_20231130221928.png

看完init段就该看正文了,先使用frida直接过了反调试,后面很多字段就可以直接hook出来,我hook了几个给大家看看,至于动态注册的流程我就不赘述了,
微信图片_20231130222444.png

可能会有很多新手,会发现明明用到了v12,v13怎么注册的时候只有v11.这是因为,他们在一个栈上,而且是连续的。混淆的时候经常会出现这种情况,打pwn的选手应该会对这个非常熟悉,是的这又是一个劝退点
微信图片_20231130222904.png

接着往下看,很显然sub_35A4就是我们要找的CheckUsername的地址,直接进入函数,一大堆蛇皮混淆,这种情况下,最好的办法就是直接倒着看,有个memcmp函数,那么很显然这个username应该是写死的。那么逻辑应该就是先加密完然后再与写定的值进行比较。如此一来那么sub_6C2C就相当可疑。自己可以尝试查看一下sub_6C2C参数的交叉引用,你会发现这个最核心的逻辑就在这个函数上。
微信图片_20231130223321.png

进入sub_6C2C函数后,一看就是rc4算法,明晃晃的256,看不出来的可以劝退。用CyberChef测试过后,带入app发现不对,还是return false。是的能解出来值,但是不对,好像被魔改了。。如果对rc4算法有研究的估计一眼就看出来,看不出来也可以用土办法。你已经知道账号的位数了,是10位的,那么自己传10个1,进去然后和正经算法做个对比就知道是多了一层异或。真正出问题的地方在于这里。               
他多异或了一层下标
微信图片_20231130224326.png

于是我们可以获得账号Re_1s_eaSy根据java层的逻辑走,我们可以发现x = Re_1s_eaSy123456但是这个完全没有交叉引用,这就很奇怪  先把这个放一边,去看check2函数sub_3F0C,拉到最下面,熟悉的memcmp函数,一般当username写死了,那么密码一般也是写死的,当然了不排除使用timestamp当随机变量的。这种在实战中非常常见。如果使用timestamp当作随机变量再加上强一点的混淆,这道题目就会变难不少。

微信图片_20231130224719.png

仔细看的话很容易就看出来了这个密码最后加密出来是16位的,而且通过交叉引用一路往上跟踪,就可以获得从native层调用这个x的流程。
首先需要判断这个是什么算法。最开始我们发现了一个s盒修改的点,这是一个由256个元素的s盒,外加密钥Re_1s_eaSy123456也是凑足了128位的长度,
微信图片_20231130225542.png

容易联想到的就是aes换了s盒,如果结果尝试出来不行,那么只能硬着头皮继续分析,比较幸运的是,这题就到此为止了。总的来说感觉这题考察的点还是相当多的,动态注册,反调试,代码混淆,算法魔改。就一般实战的原生安卓app如果不是特别牛逼的大厂或者企业级加固也就差不多这样了,最多就弄个防抓包。而且实战中rc4用的其实不怎么多(不知道为啥ctf总喜欢弄两个rc4),aes还是不少的,换表可以注意一下。
byebye.jpg

免费评分

参与人数 19威望 +1 吾爱币 +38 热心值 +14 收起 理由
ddian + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
junjia215 + 1 + 1 谢谢@Thanks!
Yangzaipython + 1 谢谢@Thanks!
lay1L + 1 我很赞同!
GeorgeBean + 1 + 1 我很赞同!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
freebanner + 1 鼓励转贴优秀软件安全工具和文档!
mala-tang + 1 + 1 我很赞同!
Q7791 + 1 + 1 我很赞同!
ahu3862 + 1 + 1 谢谢@Thanks!
ACCDD + 1 + 1 我很赞同!
唐小样儿 + 1 + 1 我很赞同!
bhwxha + 1 + 1 我很赞同!
nis415 + 1 + 1 用心讨论,共获提升!
Atnil + 1 谢谢@Thanks!
局外人K + 1 + 1 我很赞同!
chinawolf2000 + 1 + 1 热心回复!
riluoxingchen + 1 谢谢@Thanks!
kuiur0810 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

坦然 发表于 2023-12-1 09:58
一般看到so层,直接关闭
hwjqc 发表于 2023-12-1 08:20
orange52pojie 发表于 2023-12-1 08:27
侃遍天下无二人 发表于 2023-11-30 23:57
谢谢,人已经被劝退了,这就去打游戏....
bhwxha 发表于 2023-12-1 09:42
大厂的算法难度比这个高得多,而且现在安卓端风控特别强,不是有了算法就能不停跑数据,很容易跑一会就被风控给拦截、拉黑!
lukbinx 发表于 2023-12-1 08:23
一大批人也只是尝试逆向看看能不能达到自己的目的,要么退,要么继续学,继续研究达到目的
riluoxingchen 发表于 2023-11-30 23:54
成功被劝退,感谢楼主....
w220913 发表于 2023-12-1 06:07
楼主的文章很好。我已经进入游戏了。
shallies 发表于 2023-12-1 07:25
好吧,我被劝退了。这就是大神
stsy14332 发表于 2023-12-1 08:28
太难了,新手完全不会
davide201 发表于 2023-12-1 08:31
逆向就是攻防战,看谁坚持到最后,没思路时太容易放弃了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表