首页
论坛
课程
招聘
[原创]Android区一道逆向题的一种新解法
2020-9-26 18:16 2616

[原创]Android区一道逆向题的一种新解法

2020-9-26 18:16
2616


我是新手,想转正。

在Android区看到一篇优秀贴,链接为 https://bbs.pediy.com/thread-262150.htm 

文章从过反调试和IDA动静态调试角度解题,讲得非常细致。

下面我打算根据hanbingle大佬九月份刚讲的密码学课程内容,直接用frida主动调用获取flag。


下面是我的解题过程,apk可以直接从上面链接文章附件处下载。


首先直接JADX打开APK,没有加壳,直接可以看到核心代码如下,用户输入直接通过JNI函数greywolf对输入字符串做检测。

利用IDA打开libwolf.so,没有找到greywolf函数,所以该函数肯定是通过registerNatives注册的,于是直接用frida拿到greywolf偏移,为0X14075。

然后IDA快捷键按G,输入0X14075,直接跳转到greywolf函数(函数名称换成了bc)处,再F5查看伪代码,如下。该函数只有line15和line17两处return,先分析第二处return。

跟踪wolf_de函数,看到明显的RC4解密算法,且密钥就是unk_4E13A,所以直接调用wolf_de,传入待解密字符串,其返回值就是解密结果,我们直接利用frida去主动调用wolf_de,去解密bc函数中line16行“5B694AADB2DC559E44B84637A2D61F”得到“Password Error~”,效果如下。

所以要想验证成功,必然走到line15行的j_jk函数,继续跟踪此函数,同样手法在jk函数中line15可以解析得到正确显示,所以跟踪dc函数。

跟踪上图dc函数,一切皆从return往上跟踪,最后在ds函数中看到如下代码,该代码将输入字符与line24解密字符串比较,相等则为真。

所以直接主动调用,直接看到flag为“hello5.1”,上机验证正确。


[2022冬季班]《安卓高级研修班(网课)》月薪三万班招生中~

收藏
点赞4
打赏
分享
最新回复 (1)
雪    币: 601
活跃值: 活跃值 (748)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Lateautumn4 活跃值 2020-11-11 16:14
2
0
赞,稍后试试
游客
登录 | 注册 方可回帖
返回