#1 18-09-2011 11:54

VintProg_Pro
Registered: 17-06-2010
Posts: 153

Не возможно с инжектить?

есть код на C++

__declspec(naked) void  sub_4C5680_Code()
{
__asm cmp     si, 750
__asm jb      0xE9
__asm test    dl, dl
__asm push    004C5AA9h
__asm ret
};

вот этот участок пытаюсь с инжектить


.text:004C5AA0                                   loc_4C5AA0:                             ; CODE XREF: sub_4C5680+41Cj
.text:004C5AA0 048 46                                            inc     esi
.text:004C5AA1 048 66 83 FE 4B                               cmp     si, 4Bh        
.text:004C5AA5 048 72 E9                                        jb      short loc_4C5A90
.text:004C5AA7 048 84 D2                                        test    dl, dl
.text:004C5AA9 048 75 6C                                        jnz     short loc_4C5B17
.text:004C5AAB 048 0F B7 05 40 0A A1 00                 movzx   eax, ds:word_A10A40
void injectFunction(DWORD address, DWORD function) 
{
DWORD Old;
	VirtualProtect( PVOID(address), 16, PAGE_READWRITE, &Old);
	BYTE * patch = (BYTE *)address;
	*patch = 0xE9;	// JMP
	*(DWORD *)(patch+1) = (function-(address+5));	
	VirtualProtect( PVOID(address), 16, Old, &Old);
}

вот как инжектю

injectFunction(0x04C5AA1, (DWORD)sub_4C5680_Code);

Что не так? Друзья помогите!

Offline

#2 18-09-2011 13:59

listener
From: Vice City
Registered: 09-11-2006
Posts: 615
Website

Re: Не возможно с инжектить?

А скажи-ка мне, куда у тебя переходит jb ?

И вообще, инжектить куски - это очень неблагодарное занятие. Там вся функция меньше килобайта - быстрее и проще заменить ее целиком.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#3 19-09-2011 05:25

VintProg_Pro
Registered: 17-06-2010
Posts: 153

Re: Не возможно с инжектить?

Да про этот JB я думал, наверное надо прыгать на абсолютный адрес, но какой инструкцией указывается?

Offline

Board footer

Powered by FluxBB