其他分享
首页 > 其他分享> > no-strings-attached

no-strings-attached

作者:互联网

0x01

拿到程序,直接IDA放进去看一下,结果如图:

我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看。

void authenticate()
{
  wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch]
  wchar_t *s2; // [esp+801Ch] [ebp-Ch]

  s2 = (wchar_t *)decrypt(&s, &dword_8048A90);
  if ( fgetws(ws, 0x2000, stdin) )
  {
    ws[wcslen(ws) - 1] = 0;
    if ( !wcscmp(ws, s2) )
      wprintf(&unk_8048B44);
    else
      wprintf(&unk_8048BA4);
  }
  free(s2);
}

这里可以看出,关键的地方在

decrypt(&s, &dword_8048A90);

所以我们在decrypt结束处下断电,然后观察寄存器的值,这里我们使用gdb,因为这个程序是linux下运行的,所以我们使用gdb

0x02

1.打开gdb

2.向gdb中加载文件

3.在decrypt()结束处下断(通过IDA我们可以知道结束处的地址为0x08048707)

4.r 运行

5.查看寄存器

6.将寄存器eax中的值直接以字符串形式输出,拿到flag

标签:no,attached,寄存器,decrypt,gdb,ws,s2,wchar,strings
来源: https://www.cnblogs.com/Jleixin/p/13027367.html