hola
![Smilie](http://www.clubdelphi.com/foros/images/smilies/smile.gif)
tengo una duda acerca de usar ASM en delphi y una definicion en C++ que espero que puedan ayudarme
OK tengo estas definiciones y funciones
Código:
#define jmp(frm, to) (int)(((int)to - (int)frm) - 5)
Código:
bool Check(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(; *szMask; ++szMask, ++pData, ++bMask)
if(*szMask == 'x' && *pData != *bMask )
return false;
return (*szMask) == NULL;
Código:
DWORD FindPattern(BYTE *bMask, char* szMask, DWORD dwOffset)
{
DWORD dwAddress = 0x00400000;
DWORD dwLen = 0x00B00000;
for(DWORD i=0; i < dwLen; i++)
if(Check((BYTE*)(dwAddress + i), bMask, szMask))
return (DWORD)(dwAddress + i + dwOffset);
return 0x00400000;
}
ASM:
Código:
alloc(ItemEdit, 256)
label(CS)
label(back)
registersymbol(counter)
alloc(counter, 64)
counter:
db 00 00
ItemEdit:
mov [counter], eax
cmp eax,1F72C8 //Blue Arrows
je CS
@@@@@@@
mov [edi+34],eax
mov edi, [ebp-14]
jmp 49421b
CS:
mov [edi+34],0
mov edi, [ebp-14]
jmp back
4956F8:
jmp ItemEdit
nop
back:
[disable]
4956F8:
mov [edi+34], eax
mov edi, [ebp-14]
obiamente en C++ y quiero transladarlas a delphi alguna ayuda? =D
y una interpretacion de este procedure
Código Delphi
[-]procedure hook(target, newfunc
ointer);
var
jmpto:dword;
begin
jmpto:=dword(newfunc)-dword(target)-5;
VirtualProtect(target, 5, PAGE_EXECUTE_READWRITE, nil);
pbyte(target)^:=;
pdword(dword(target)+1)^:=jmpto;
end;