いくつかのアセンブリ コードがあり、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++ からat 関数を呼び出す方法は?