Quote:
Originally Posted by vi0l3nt
kennst dich mit ASM funktionen aus? oder irgender sonst? ^^
hätte da mal 1-2 fragen. könnts mich gern per pm mal anschreiben
|
Was meinst du genau, wie du z.B. Funktionen in WoW aufrufen kannst?
Wenn ja, dann hab ich hier was ^^
Code:
var
sigAddLine: Array[1..12] of Byte = ($55, $8B, , $57, $8B, $7D, $08, $85, , $0F, $84, );
maskAddLine: PChar = 'xxxxxxxxxxxx';
function bDataCompare(pData, bMask: PByte; szMask: Pointer): Boolean;
begin
While (Byte(szMask^) <> $00) Do
begin
If (Byte(szMask^) = Byte('x')) and (pData^ <> bMask^) Then
begin
result := false;
exit;
end;
pData := PByte(DWORD(pData)+1);
bMask := PByte(DWORD(bMask)+1);
szMask := Pointer(DWORD(szMask)+1);
end;
result := (Byte(szMask^) = $00);
end;
function dwFindPattern(dwAddress, dwLen: DWORD; bMask: PByte; szMask: PChar): DWORD;
var
i: Integer;
begin
result := 0;
For i := 0 To dwLen-1 Do
begin
If bDataCompare(PByte(dwAddress+i),bMask,szMask) Then
begin
result := dwAddress+i;
Exit;
end;
end;
end;
procedure WoWConsole_AddLine(szText: String);
var
dwAddLine: DWord;
begin
dwAddLine := dwFindPattern(DWORD(GetModuleHandle(nil)), $03000000, @SigAddLine, MaskAddLine);
asm
push 7
push szText
call dwAddLine
add esp, 8
end;
end;
Nicht ganz fehlerfrei und perfekt aber funktioniert.