1
DLL 삽입을 사용하여 프로그램에서 알려진 함수 (함수 유형, 이름 및 argumets을 알고 있음)를 호출 할 수 있습니까?DLL에서 호출하는 함수
void func(string text)
{
cout << text << endl;
}
어떻게이 DLL에서 호출 :
예를 들어 내 프로그램의 기능은 다음 있는가?
DLL 삽입을 사용하여 프로그램에서 알려진 함수 (함수 유형, 이름 및 argumets을 알고 있음)를 호출 할 수 있습니까?DLL에서 호출하는 함수
void func(string text)
{
cout << text << endl;
}
어떻게이 DLL에서 호출 :
예를 들어 내 프로그램의 기능은 다음 있는가?
프로토 타입과 메모리의 주소 만 주어진 임의의 함수를 호출 할 수 있지만 다른 프로세스 주소 공간에서 호출 할 수 있어야합니다 (공유 라이브러리에 연결하거나 디버거에 연결하여 수행 할 수 있음)
I 메모리의 실행 부분에 코드를 복사하고이 같은 그것을 실행도 시도했다 그러나typedef int func(void);
func* f = (func*)0xabcd123;
int i = f(); // execute
: 그래서
char code[] = {0x55,0x48,0x89,0xe5,0x89,0x7d,0xfc,0x48,0x89,0x75,
0xf0,0xb8,0x2a,0x00,0x00,0x00,0xc9,
0xc3,0x00}; // it is just compiled: return 42
// (with prologue, etc)
void *buf;
/* copy code to executable buffer */
buf = mmap (0,sizeof(code),PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANON,-1,0);
memcpy (buf, code, sizeof(code));
/* run code */
int i = ((int (*) (void))buf)();
printf("the code returned: %d\n", i);
를 사용하면 코드의 크기를 알고 있다면 그것은 가능한 보인다 실행.
function func이 DLL에 있고 외부에서 호출하려고하거나 DLL 외부에서 호출하려고하며 DLL에서 호출하려고합니까? – 4pie0
아니요, DLL을 사용하는 .exe에있는 func를 호출하고 싶습니다. – user3141711
'is in is.exe '란 무엇을 의미합니까? 당신은 함수를 작성하고,'main' 함수를 작성하고 .exe를 생성 했습니까? 그리고 이미 컴파일 된 .exe 내부에서 그 기능을 사용하고 싶습니까? 불가능합니다. –