Rustdroid
附件拖入jadx
apk解包找到so文件拖入ida,定位到check函数。先检查格式
对RC4熟悉的话,能看出来是初始化S盒
然后是轻微魔改RC4
脚本
ez_learn
附件拖入ida
下断点调试,窗口一闪而过,应该有反调试。函数列表中能找到TlsCallback函数,发现果然是它在搞鬼,直接patch。然后就能断在断点处了
发现main函数是通过这样的结构跳转到另外一个函数,相当于是程序自己修改了控制流
先读入,然后判断长度
对栈空间进行初始化,继续向下分析就知道本题的程序的变量基本上都是在栈中,包括函数的传参和返回值
输入一共分成两个部分,每个部分十六字节,都是调用func1
进入func1,先调用func2,初始化了一个全局变量,通过不同的输入发现和输入没关系,所以直接跳过分析
func2结束后就是一个32次的大循环,每次都先后调用func3、func4、func5
对每个函数的分析就跳过了,直接上分析结论
一开始是想用z3求解的,但是中间有取索引的部分,众所周知,z3的变量是不能用作索引的(怎么又是这个问题),所以思考能不能逆向运算。诶,我有一个思路,十六个字节可以被分成四个部分,每个部分四个字节,运算是由后三个部分运算得到的结果与第一个部分做异或得到第五个部分。第五部分又作为下一次运算中的第四部分参与运算。所以当已知最后的四个部分时,可以通过不断的向上求解上一部分最终得到原文。脚本
re1
附件拖入jadx
解包apk找到so文件拖入ida
下断点试图调试,但是没断成功。怀疑有动态注册或者有反调试
动态注册无疑,在这下断就能断下来了
步过strlen函数却发现数据发生改变,那就重来并步入,发现进入了另一个函数,应该是被hook了
然后经过四遍同一个函数后就是比较
然后是循环0x42即该函数的参数遍调用下面三个函数。同样是被hook的,仔细研究发现是魔改xtea加密
脚本。这里又被坑了,加号的优先级居然高于异或,细节决定成败啊
尾语
玩服务器,找dk盾
这么友好的题目,为什么没人做呢。各位佬是不是都去打各种线下赛去了呜呜呜,能不能带带我求求了