Zewnętrzne wywołanie funkcji po przez ASM

0

Zrobiłem taki króciutki kodzik na przetestowanie, a mianowicie odwołanie się do funkcji wewnątrz mojego programu po przez asembler.

void Func(int a, char b, float c)
{
	cout << "Wyswietl tekst" << endl;
	printf("int: %d\n",a);
	printf("char: %c\n",b);
	printf("float: %f",c);
} 

int main()
{
	int a = 3;
	char b = 'Y';
	float c = 53.3666;
	void *address = &Func;
	_asm
	{
		push c
		push b
		push a
		call address
	}
	getchar();
	return 0;
}

Ok wszystko działa. No tak! Ale ja chciałbym wywołać ją po przez drugi program, aby ta funkcja wykonała się (oczywiście) w tym pierwszym programie. Jak to zrobić? Znając sam adres, nie pomaga gdyż wywołując zewnętrznie ten adres funkcji to program drugi się "rozwala". Co z tym fantem zrobić?

0

Się rozwala, bo pamięć jednego programu a pamięć drugiego to zupełnie odrębne światy: wskaźnik z jednego nie będzie prawidłowy w drugim.
Zamiast tak kombinować, wyeksportuj funkcję (tak, exe może eksportować podobnie jak dll), do tego jakieś współdzielenie pamięci — albo w ogóle nie eksportuj a zastosuj komunikację międzyprocesową (IPC, są różne metody).

0

A gdybym tak się wdarł de el elką do procesu to mógłbym już bezpośrednio odwoływać się do tego adresu funkcji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1