Dane po kompilacji w funkcji?

0

Witam,
Zna ktoś sposób na takie coś:
funkcja
{
dane binarne, skompilowane, których kompilator ma nie kompilować
}

Chodzi o to, że muszę włożyć w funkcję dane, które są już skompilowane (czyli jakieś wartości heksadecymalne np. EA098339, EA004322, 8905544 itd. itp.) i by kompilator skompilował mi tylko wejście i wyjście z funkcji:
funkcja{
i
}
i połączył te dane heksadecymalne z tym co skompiluje tak, że funkcja z tego powstanie.

0

A po co to? Użyj inlineassembler.

0

Dużo tłumaczenia po co.:) W pracy jest mi to potrzebne do testu.

0
typedef int FUN();
FUN *fun=(FUN*)"\x0";
int x=fun();
0

@_13th_Dragon, metoda dobra jedynie w średniowieczu. Kompilatory zazwyczaj nie umieszczają stringów w obszarach oznaczonych jako wykonywalne, DEP wygeneruje wyjątek jeżeli będzie włączony dla procesu. Prawidłowe rozwiązanie to inline assembler + __declspec(naked) lub __attribute__((naked)). Alternatywą jest stworzenie oddzielnego pliku do translacji assemblerem.

0

Zadeklaruj stałą, której nie będziesz używał.

0

TomRiddle, po cholerę? Dlaczego spamujesz w tematach, o których nie masz zielonego pojęcia?

W wypadku kompilatorów Microsoftu można ewentualnie zastosować statyczną tablicę char z __declspec(allocate(".text")) lub __attribute__((section(".text"))) w GCC/clang.

0
_13th_Dragon napisał(a)

To tylko schemat, przydziela się pamięć przez GlobalAlloc i śmiga.

Przecież GlobalAlloc == LocalAlloc == RtlAllocateHeap z domyślną stertą procesu, która NIE MA praw do wykonywania, ma PAGE_READWRITE, właśnie ze względów bezpieczeństwa.

opis GlobalAlloc napisał(a)

To execute dynamically generated code, use the VirtualAlloc function to allocate memory and the VirtualProtect function to grant PAGE_EXECUTE access.

Pamięć można przydzielić od razu z PAGE_EXECUTE_READWRITE, bez późniejszej zmiany atrybutów. Dodatkowo do dynamicznie generowanego kodu można używać oddzielnie stworzonej sterty (HeapCreate z flagą HEAP_CREATE_ENABLE_EXECUTE). Natomiast nigdy nie należy domyślnej stercie przyznawać prawa do wykonywania, chociażby ze względu na brak pełnej kontroli nad jej strukturą.

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