0x01:confused_flxg
这是Hackergame 2018的一道题目
拿到题目,是一个压缩包,进行解压后发现是一个.exe可执行程序,双击可以正常运行
随意输入,总是会出来一个倒序的base64编码后的字符串
我们用python进行解码
得到一个假的flag 不用管他
Exeinfo PE载入可以发现是VC++写的64位程序,并且没有加壳
我们直接使用IDA x64载入
shift + F12可以看到程序中的一些字符串
我们双击正确的引用
可以看到有好多跳转
我们可以从下向上进行分析
在最近的jnz跳转处 按F5 查看伪代码
如下所示:
void __usercall sub_7FF7EBA1498F(__int64 a1@)
{
unsigned __int8 *v1; // rax
unsigned __int8 v2; // dl
int v3; // eax
*(a1 + 112) = a1 + 384;
*(a1 + 40) = -1i64;
do
++*(a1 + 40);
while ( *(*(a1 + 112) + *(a1 + 40)) );
*(a1 + 64) = *(a1 + 40);
qmemcpy((a1 + 800), a9eetw4DFh4xu, 0x39ui64); // qmemcpy将内存中的字符串进行拷贝
memset((a1 + 857), 0, 0x8Fui64); // memset()函数初始化了一块内存空间 类似于char getflxg[200] = { 0 }
sub_7FF7EBA11590(a1 + 144, (a1 + 384), *(a1 + 64));// 进行base64加密
memset((a1 + 176), 0, 0xC8ui64); // 再初始化一块空间
*(a1 + 80) = sub_7FF7EBA11A40(a1 + 144);
*(a1 + 48) = a1 + 176;
*