最近在看雪Android区看到九月份的一篇优秀贴, 文章从过反调试和IDA动静态调试角度解题,甚至还得解析得到RC4密钥,讲得非常细致,虽然我也是新手,但是这么去逆向,让人觉得太难懂了。
明明有强大的frida工具,可以无需过反调试,无需IDA去动静态调试,无需获取RC4密钥,直接用主动调用获取flag,何必走繁琐的路呢?
首先直接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”,上机验证正确。
责任编辑:YYX
全部0条评论
快来发表一下你的评论吧 !