Wenn man solche Dinge einfach mal mit Copy&Paste von woher einfügt, dann ist es auch kein Wunder. Schon allein da beide Funktionen völlig sinnfrei sind. Jeder der sich die Mühe macht das Programm mit dem Debugger anzuschauen, kann von den beiden Proceduren nicht mal eine Sekunde in die Irre geführt werden.
Delphi-Quellcode:
procedure AntiProcDump;
assembler;
asm
MOV EAX, fs:[30h]
TEST EAX, EAX
JS @is9x
@isNT:
MOV EAX, [EAX+0Ch]
MOV EAX, [EAX+0Ch]
ADD DWORD PTR [EAX+20h], 2000h
{increase size variable}
JMP @finished
@is9x:
PUSH 0
CALL GetModuleHandleA
TEST EDX, EDX
JNS @finished
{Most probably incompatible!!!}
CMP DWORD PTR [EDX+8], -1
JNE @finished
{Most probably incompatible!!!}
MOV EDX, [EDX+4]
{get address of internaly used}
{PE header}
ADD DWORD PTR [EDX+50h], 2000h
{increase size variable}
@finished:
end;
procedure antidebug;
assembler;
asm
jmp @jump;
db $b8;
// fake mov-instruction
@fake1: jmp @ende;
@endlos:
int 3
xor ax,ax
jmp @endlos;
@jump:
jmp @fake1
@ende:
end;
Schmeiss die einfach raus, sind eh nutzlos - dann hast du schonmal eine grosse Problemquelle beseitigt.