با سلام
دوستان میشه بگید کار زیر به چه صورت در دلفی انجام می شود؟
فکر کنید یک برنامه نوشتید اید بعد اون اجراء می کنید بعد از اجراء برنامه میره داخل رم، حال ما اگه بخواهی اسم فایل اگزه که داخل رم هست عوض کنیم به چه صورت میشه؟؟؟
البته اگه PID فایل اگزه در رم که بشه تغییر داد که خیلی عالی میشه؟؟
با تشکر فراوان.
دسترسی به این اطلاعات خارج از محدوده هست و این اجازه به شما داده نمیشه که pid رو بخواهید عوض کنید ولی میتونین اسم مازولهای لود شده رو تغییر بدید
PID رو سیستم عامل انتخاب میکنه البته میشه عوض کرد من قبلا این کار رو انجام داده بودم.
الان خیلی وقته کد نمیزنم ولی یادمه که این کار رو انجام داده بودم
(۱۹-بهمن-۱۳۹۳, ۱۶:۱۲:۰۳)veyskarami نوشته است: [ -> ]PID رو سیستم عامل انتخاب میکنه البته میشه عوض کرد من قبلا این کار رو انجام داده بودم.
الان خیلی وقته کد نمیزنم ولی یادمه که این کار رو انجام داده بودم
سلام
اگر امکان دارد میتونید بیشتر توضیح بدید؟
دوستان میتونید لطف کنید بگید کد زیر چه کاری انجام میده؟؟؟؟
کد:
Procedure FuncNewEntry;
begin
asm
PUSH $9E71C8 //the new asm code you want to add.
end;
end;
Function ChangeEntry(PID:Cardinal;TargetOffest:DWORD;FuncProcedure:Pointer):Pointer;
var
lpNumberOfBytesWritten:ULONG_PTR;
begin
PID := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
Win32Check(WriteProcessMemory(PID, Pointer(TargetOffest), FuncProcedure, sizeof(@FuncProcedure), lpNumberOfBytesWritten));
CloseHandle(pid);
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
PPID:Cardinal;
begin
GetWindowThreadProcessId(FindWindow(nil,PChar('Test')), @PPid);
ChangeEntry(PPid,$00741FA5,@FuncNewEntry);
end;