|
Re:1
来玩蛇吧
题目给了两个文件AnhengRe.exe和AnhengRe.pyc。
Notepad++打开发现是python3.6编译的
直接走python逆向的流程
- .exe反编译成.pyc。使用的工具是pyinstxtractor或archive_viewer(官方),得到的文件缺少了12字节文件头,下载一个python3.6,用010editor扒一个python3.6的.pyc文件看看文件头的前12字节,copy过去即可。
- .pyc反编译成.py。使用的工具是easyPython decompiler或者uncompyle6或者在线反编译网站https://tool.lu/pyc/
- 读代码,代码的验证算法较简单,不做赘述。
Re:2
老司机
程序流程:
- 用户输入flag
- 限制用户输入长度为40
- SMC,
for ( i = 0; i < nullsub_1 - sub_401000; ++i )
*(sub_401000 + i) ^= 0xBBu;
解SMC脚本模板
auto addr = {起始地址}; //这里填入要解密字节串的起始地址
auto i = 0;
for(i=0;addr+i<{结束地址};i++) //循环结束的条件为字节串的结束地址
{
PatchByte(addr+i,Byte(addr+i)^0xBB); //异或的数字根据情况修改
}
- 限制输入前五个字符是flag{
- 执行函数 sub_4010B0,异或六个字符unk_4021B8^0x86,得到this_i
- Base64解密c19zbWNf,得到s_smc_
- 执行函数sub_401000,走8*8的迷宫“--------g + ++ + ++ ++ + #+ ++ ++++ ++ ++++ ++ +--------”,2是上,q是左,w是右,a是下,g是起点,#是终点。走迷宫路径为waaaaawwwww22222qqqaaw。
- 所有一起拼接得到flag{this_is_smc_waaaaawwwww22222qqqaaw}
|