simplecheck

下载下来有3个文件,一个exe,2个elf文件

先把exe文件放进ida里看看

伪码里有用的主要是下面部分

输入的key,然后在if里执行check_key函数

BOOL __cdecl check_key(int a1)
{
  signed int i; // [esp+8h] [ebp-8h]
  int v3; // [esp+Ch] [ebp-4h]

  v3 = 0;
  for ( i = 0; i <= 4; ++i )
    v3 += *(_DWORD *)(4 * i + a1);
  return v3 == -559038737;
}

不过这里计算了一下,是不可能满足条件的,所以要执行下面的interesting_function函数

想到的是使用OD动调跳转

于是打开OD,先搜索一下key

然后看见下面的跳转输出"Wrong"的部分,于是将JZ修改为JNZ

然后运行,随便输入一个key

这时候最坑的地方在于它的输出是乱码

= =询问阿伟得知可以通过IDA的远程调试跑出来

但是我这里一直调不出来

= =于是跟着WP学了下GDB调ELF文件

先在主函数下断点, 接着输入"n"来单步过,直到提示输入key之后,到后面的test eax eax的地方

这个时候使用 "i r eax"查看寄存器的值

于是修改使其为1 "set $eax=1"

接着c就可以了

"flag_is_you_know_cracking!!!"

posted @ 2020-09-23 21:15  阿那哒  阅读(122)  评论(1编辑  收藏  举报