666
老题新做了属于是.本来是一道入门级题目,但是当年想不出来是因为对这种类似crypt的题目比较生疏.越学越发现密码学确实对逆向手来说很重要,趁着水课时间来回忆一下.
IDA Pro打开,就不看main了,直接进入核心函数:
1 | int __fastcall encode(const char *a1, __int64 a2) |
key是一个全局变量,恒为0x12 .v3其实就是一个tmp数组不用管,for循环里的可以简化为:
1 | *(_BYTE *)(a2 + i) = key ^ (a1[i] + 6); |
解密脚本:
1 | s = [0x69, 0x7A, 0x77, 0x68, 0x72, 0x6F, 0x7A, 0x22, 0x22, 0x77, 0x22, 0x76, 0x2E, 0x4B, 0x22, 0x2E, 0x4E, 0x69] |
水完一节课,去吃饭了冲冲冲.