通过逆向工程

时间:2018-03-18 23:46:27

标签: c assembly x86

我试图了解有关x86程序集的更多信息。我有一个神秘功能的汇编代码。我所知道的这个函数是它必须返回一个整数并且有一个整数作为参数:

int mystery(int n){}

此功能的程序集是

0000000000400526 <mystery_util>:
  400526:    89 f8                    mov    %edi,%eax
  400528:    d1 e8                    shr    %eax
  40052a:    83 e7 01                 and    $0x1,%edi
  40052d:    01 f8                    add    %edi,%eax
  40052f:    c3                       retq   

0000000000400530 <mystery>:
  400530:    89 f8                    mov    %edi,%eax
  400532:    8d 3c fd 00 00 00 00     lea    0x0(,%rdi,8),%edi
  400539:    29 c7                    sub    %eax,%edi
  40053b:    83 c7 04                 add    $0x4,%edi
  40053e:    e8 e3 ff ff ff           callq  400526 <mystery_util>
  400543:    f3 c3                    repz retq

我不明白如何将其写为C函数。如果有一个callq,那就意味着它有两种不同的功能吗?

我试图在一个返回整数的函数中写出来。我看到它如何返回一个布尔值但是有没有办法返回一个整数?

0 个答案:

没有答案