运行程序 flag显示乱码

攻防世界 csaw2013reversing2  CSAW CTF 2014

IDA打开查看程序逻辑

攻防世界 csaw2013reversing2  CSAW CTF 2014

 1 int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
 2 {
 3   int v3; // ecx
 4   CHAR *lpMem; // [esp+8h] [ebp-Ch]
 5   HANDLE hHeap; // [esp+10h] [ebp-4h]
 6 
 7   hHeap = HeapCreate(0x40000u, 0, 0);
 8   lpMem = (CHAR *)HeapAlloc(hHeap, 8u, unk_409B34 + 1);
 9   memcpy_s(lpMem, unk_409B34, dword_409B10, unk_409B34);
10   if ( sub_40102A() || IsDebuggerPresent() )
11   {
12     __debugbreak();
13     sub_401000(v3 + 4, lpMem);                 14
 1 unsigned int __fastcall sub_401000(int a1, char *a2)
 2 {
 3   int v2; // esi
 4   char *v3; // eax
 5   unsigned int v4; // ecx
 6   unsigned int result; // eax
 7 
 8   v2 = dword_409B38;
 9   v3 = &a2[strlen(a2 + 1) + 2];
10   v4 = 0;
11   result = ((unsigned int)(v3 - (a2 + 2)) >> 2) + 1;
12   if ( result )
13   {
14     do
15       *(_DWORD *)&a2[4 * v4++] ^= v2;
16     while ( v4 < result );
17   }
18   return result;
19 }
View Code
15     ExitProcess(0xFFFFFFFF);
16   }
17   MessageBoxA(0, lpMem + 1, "Flag", 2u);
18   HeapFree(hHeap, 0, lpMem);
19   HeapDestroy(hHeap);
20   ExitProcess(0);
21 }

相关文章:

  • 2021-08-11
  • 2021-09-02
  • 2021-12-12
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-02
  • 2021-04-24
  • 2022-01-21
  • 2021-08-05
  • 2021-09-23
相关资源
相似解决方案