-
-
[原创]2019 KCTF 总决赛第七题-脱机算法
-
发表于: 2019-12-19 16:17 5967
-
1-题目改了androidx.appcompat.app.AppCmpatActivity; 在里面找到showAssist native
2-SO解密了2部分内存数据块,存放起来
3-手动抠出算法,内存加密函数2个,func1和func2 ,函数1直接可看,函数2 肉眼解一下 ollvm就可以找出算法
4-第二个函数func2是char加密,实际是个映射表,跑一遍255个字节就出来了
5-最后的比较函数根据第三步的表倒推出最原始的输入数据的一组地址
/**********************************************找到对应的判断函数*********************************************************/
registernative 对应的函数地址是 0x19f81
ida修改下sp,可以看到函数了
之后就是 通过 jni调用GetText获取输入值,这里假设先输入 gabcdefghijklmn来测试
最终根据JNI函数来找到内存字符串
跟着字符串走到 0x9ce4处,这里是把输入的字符 每隔8个传入,开头是解密一块内存,但是后边的运算是要用到这4个数组,
比较运气好的是 是连续的 大概0xC00长度位一块
所以直接dump保存下来到文件,后面解析用到
这部分代码用来第一次进行计算, 大致是前4个字节和猴子哥字节分别保存起来,然后用 字节对应到上面的4个数组元素来进行 加减异或运算 ,然后ROR4 再运算 ,大概是4组数据
处理完之后 ,把加密后的2个数据 ,v37和v35的值传入到 DF18进行第二个加密
这部分代码在附件里 像是被ollvm的,,不过肉眼过一下流程看看还好
继续往下跟 最终结果是通过 strcmp来比较的
可以看到只要前半部分能对应上就可以通过
然后 68dd8a0f7065609e3106fb2bb1059423e80fb1347318ffeb83b8a074a7e6c9cf
找出这个字符串
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!