Цитата:
Сообщение от 4ipolino
кто использовал данный вариант поделитесь пропатченой nwindow.dll (или патчем)
|
Вот отрывок из моего динамического патчера:
Код:
/* Replace first instruction of code at src with jump to repl */
bool replaceFuncAtAddr(void* src, void* repl, uint8_t bak[static 6]);
/* Replace data in .text. Back up is written to bak and should be at least as
* large as replSz
*/
bool patchText(void* dst, const uint8_t* repl, uint8_t* bak, size_t replSz);
__attribute__ ((stdcall))
int repl_CompileUIScript(void* a0) {
return 0;
}
/* ... */
/* Compile Interface.xdat from UIEditor Interface *.xml */
uint8_t movb_1_ecx[] = {0xb1, 0x01};
patchText((void*)(0x103a0855 + nwindow_offs), movb_1_ecx, NULL, sizeof(movb_1_ecx));
/* Disable UIScript recompile.. */
replaceFuncAtAddr((void*)(0x103a09d0 + nwindow_offs), repl_CompileUIScript, NULL);
При загрузке nwindow рассчитывается nwindow_offs – смещение адреса загрузки nwindow.dll, и выполняется непосредственно патчинг.