我有一些汇编代码,我想找出调用函数原型,以便我可以从 c++ 代码中获取所有函数。
我真正想做的是将dll注入正在运行的进程中,并从我的dll中调用正在运行的进程的函数。现在我已经成功注入了我的 dll,但不知道如何进行“调用”。
我是新手,对汇编代码知之甚少。我的 dll 是用 Visual c++ 2012 编写的。
下面是运行过程的代码:
CPU Disasm
Address Hex dump Command Comments
6013BE24 /$ 53 PUSH EBX
6013BE25 |. 8B1D 10461860 MOV EBX,DWORD PTR DS:[60184610]
6013BE2B |. 8B1B MOV EBX,DWORD PTR DS:[EBX]
6013BE2D |. 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]
6013BE30 |. FFD3 CALL EBX
6013BE32 |. 5B POP EBX
6013BE33 \. C3 RETN
你可以看到6013BE30
它正在调用函数,函数(EBX)在004BAFAC
CPU Disasm
Address Hex dump Command Comments
004BAFAC /$ 55 PUSH EBP ; Test.004BAFAC(guessed void)
004BAFAD |. 8BEC MOV EBP,ESP
004BAFAF |. 53 PUSH EBX
004BAFB0 |. 8BD8 MOV EBX,EAX
004BAFB2 |. 8B43 08 MOV EAX,DWORD PTR DS:[EBX+8]
004BAFB5 |. E8 3EF40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFBA |. 8B43 0C MOV EAX,DWORD PTR DS:[EBX+0C]
004BAFBD |. E8 36F40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFC2 |. 8B43 14 MOV EAX,DWORD PTR DS:[EBX+14]
004BAFC5 |. E8 2EF40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFCA |. 8B43 18 MOV EAX,DWORD PTR DS:[EBX+18]
004BAFCD |. E8 26F40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFD2 |. 8B43 1C MOV EAX,DWORD PTR DS:[EBX+1C]
004BAFD5 |. E8 1EF40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFDA |. 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10]
004BAFDD |. E8 16F40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFE2 |. 8B43 20 MOV EAX,DWORD PTR DS:[EBX+20]
004BAFE5 |. E8 0EF40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFEA |. 8B43 44 MOV EAX,DWORD PTR DS:[EBX+44]
004BAFED |. E8 06F40B00 CALL 0057A3F8 ; [Test.0057A3F8
004BAFF2 |. 8B43 44 MOV EAX,DWORD PTR DS:[EBX+44]
那么如何004BAFAC
从Visual C++调用函数呢?