-
-
[原创]ollvm算法还原案例分享
-
发表于:
2020-7-13 14:55
10769
-
样本来自看雪3W班5月题
本题主要是还原so的算法函数,关键算法函数很好定位,主要还原方法是frida
+ida调试
+ida trace
1、找到对应产生结果的函数public native byte[] e(byte[] arg1)
:
2、固定入参,打印参数
得到结果:
3、ida打开对应so,找到jbyteArray __fastcall Java_com_kanxue_ollvm5_MainActivity_e(JNIEnv *env_, __int64 a2, jbyteArray ary)
函数,hook发现sub_184EC
调用三次,其中第三次的arg1为结果函数
查找sub_184EC
引用,找到函数sub_13CE4
4、hook sub_184EC
, 根据结果可知参数类型, 第2个参数是input,第5个参数是ouput, 即sub_184EC
为关键算法函数
frida写一个主动调用,trace一下
从trace的结果来看只看到input没看到output
再返回仔细看,尝试hook sub_13808试试
一步一步调试,发现第一轮最先生成的是
然后才生成结果
根据trace + 第一轮生成结果比对 还原出最终算法代码如下
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-7-20 14:55
被咸鱼炒白菜编辑
,原因: