我有一个.exe文件,我想列出它的所有函数。这是可能的,并且有一些工具可以做到吗?
p/s:我尝试过IDA,但很难理解。它能解决我的问题吗?。
要做到这一点,您必须对汇编语言有很好的理解,也许从NASM文档和英特尔指令集中学习会让您达到一个很好的水平。然后才能继续此路径。
此外,对于那些只知道很少或更多汇编语言的人来说,可以调用exe的函数,主要是如果它们是独立的或不依赖于任何其他使用Asmjit之类的函数。如果你知道这里使用的调用约定,你也可以获得这个函数地址,并将它们强制转换为函数。例如,__stdcall、__cdecl和其他。如果你知道调用约定,你可以使用它来构造函数签名,包括返回类型,通常是通过POP、return指令或在函数退出或返回给调用者之前受到影响的注册表。
你必须找到一个好的调试器来帮助你找到这一切。正如你所说IDA很好,但太复杂了,所以你可以使用x86dbg或ollyDbg之类的东西,它们可以帮助你找到这些函数的入口点,并使用它来构建签名
所以像这样的核心,假设0x749593是一个函数的地址,可能需要两个参数并返回和。
typedef int (*sum)(int first, int second);
Sum mySumFunc;
将mySumFunc的地址更改为0x749593,您可以调用此函数mySumFunc(arg1, arg2 )
,它仍然可以工作。