BUUCTF-REVER-[DDCTF2018]破解密钥
0x1分析java层
发现CTFLib.vaildata 来进行判断
进入之后发现check代码在so层
0x2 分析so层代码
找到关键加密位置 非常简单 只需要动调获得V7就可以了
0x3 坑点
Sub_3C60函数里有TracePid反调试 方法有很多 可以frida hook 改变真机内核源码 改内存
0x4 脚本编写
list1=[0xA9 ,0xDE ,0xAD ,0x01 ,0x83 ,0xBB ,0x4B ,0x31 ,0xB7 ,0x84 ,0x54 ,0xDD ,0x8F ,0x65 ,0x0C ,0x44 ,0xBD ,0x13 ,0xAB ,0xB4 ,0xAE ,0x73 ,0x54 ,0xD9 ,0x69 ,0x64 ,0x32 ,0x0A ,0xAC ,0x36 ,0x0B ,0x97]
list2=[0xED ,0x9A ,0xEE ,0x55 ,0xC5 ,0xC0 ,0x0C ,0x5E ,0xD8 ,0xE0 ,0x1E ,0xB2 ,0xED ,0x49 ,0x4F ,0x2B ,0xD3 ,0x74 ,0xD9 ,0xD5 ,0xDA ,0x06 ,0x38 ,0xB8 ,0x1D ,0x0D ,0x5D ,0x64 ,0xDF ,0x17 ,0x2A ,0xEA]
res=[]
for i in range(len(list1)):
res.append(chr(list1[i]^list2[i]))
print ("".join(res))
DDCTF{GoodJob,Congratulations!!}
0x5总结
这题最大的学习就是动调so 和 过反调试 学到了各种过trace反调试的方法