(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考)
注意到程序调用了Encode函数对明文进行加密,点进去发现是对外部DLL的调用
静态分析DLL中的Encode函数可以得到
写出对应的解密脚本如下
#include <iostream> #include <vector> int main() { std::vector<int> Block = {73, 83, 67, 67}; // #ISCC std::vector<int> v4 = {2, 0, 3, 1, 6, 4, 7, 5, 10, 8, 11, 9}; std::vector<int> enc = {};//填入之前exe分析出来的v8数组 std::vector<int> enc_back(12), enc_front(12); std::vector<int> flag(24); int i; for (i = 0; i < 12; i++) { enc_back[i] = enc[i]; enc_front[i] = enc[i + 12]; } for (i = 0; i < 12; i++) { flag[2 * i + 1] = enc_front[v4[i]]; } for (i = 0; i < 12; i++) { enc_back[i] ^= Block[i & 3]; } for (i = 0; i < 12; i++) { flag[2 * i] = enc_back[i]; } for (i = 0; i < 24; i++) { std::cout << static_cast<char>(flag[i]); } return 0; |