PDA

View Full Version : در مورد خواندن و ویرایش محتویات فایلهای EXE



Delphi-Man
چهارشنبه 08 خرداد 1387, 16:31 عصر
با سلام
می خواستم بدونم چطوری میشه محتویات یک فایل exe را خوند و ویرایش کرد.
مثلا یک برنامه هست با VisualC++ نوشته شده. در ریسورس ها dialogs نشون داده نمیشه، ولی caption این dialog در فایل exe موجود هست، بالفرض می خوام اونو عوض کنم. چطوری میشه؟؟

nouri2015
چهارشنبه 08 خرداد 1387, 16:59 عصر
اگر می شد این کار رو به راحتی انجام داد که فاتحه قفلهای سخت افزاری و نرم افزاری خونده بود همه ما هم می شدیم Hacker.
ابزارهائی برای این کار وجود دارد که زبان ماشین رو به کد اسمبلی تبدیل می کند از جمله این برنامه ها ollydebug است.
موفق باشید.

B_YAGHOBI
چهارشنبه 08 خرداد 1387, 17:27 عصر
با سلام
می خواستم بدونم چطوری میشه محتویات یک فایل exe را خوند و ویرایش کرد.
مثلا یک برنامه هست با VisualC++ نوشته شده. در ریسورس ها dialogs نشون داده نمیشه، ولی caption این dialog در فایل exe موجود هست، بالفرض می خوام اونو عوض کنم. چطوری میشه؟؟



فكر نكنم نيازي باشه با دلفي يه همچين برنامه ايي نوشته بشه.

ولي اگر exe كد نشده باشد مثل برنامه هايي از قبيل PECompact يا ...

برنامه هايي هستند كه Resource فايلهاي exe را ميتوانيد با آن عوض كنيد.

ولي 99 درصد برنامه هاي تجاري كد شده هستند.

مهران موسوی
چهارشنبه 08 خرداد 1387, 17:31 عصر
دوست عزيز فكر نكنم اين بحث در اين قسمت ( Delphi ) مناسب باشه ...

ولي اگر ميخوايين با dlephi اين كار رو بكين و فقط دوست داريد اون قسمت مورد نظرتون رو از بين باينري ها تغيير بدين شيوه ي كلي رو بهتون ميگم ...

يك متغيير از كلاس TFileStream تعريف كن و سپس فايلت رو با Mod نوشتن باز كن ... بعد با استفاده Seek رو به محل دلخواه ببر و نشتن رو در اون محل اغاز كن ...

يك نمونه كد هم برات نوشتم كه اشاره گر فايل رو به 0 ميبره بعد اونجا كلمه ي Test رو جايگزين كلمه قبلي ميكنه ...


var
File1: TFileStream;
i: Integer;
Caption: string;
begin

Caption := 'Test';

File1 := TFileStream.Create('C:\Test.txt', fmOpenWrite);

File1.Seek(0, soFromBeginning);

for i := 1 to Length(Caption) do
File1.Write(Caption[i], 1);

File1.Free;

Delphi-Man
چهارشنبه 08 خرداد 1387, 20:05 عصر
دوست عزيز فكر نكنم اين بحث در اين قسمت ( Delphi ) مناسب باشه ...

ولي اگر ميخوايين با dlephi اين كار رو بكين و فقط دوست داريد اون قسمت مورد نظرتون رو از بين باينري ها تغيير بدين شيوه ي كلي رو بهتون ميگم ...

يك متغيير از كلاس TFileStream تعريف كن و سپس فايلت رو با Mod نوشتن باز كن ... بعد با استفاده Seek رو به محل دلخواه ببر و نشتن رو در اون محل اغاز كن ...

يك نمونه كد هم برات نوشتم كه اشاره گر فايل رو به 0 ميبره بعد اونجا كلمه ي Test رو جايگزين كلمه قبلي ميكنه ...


var
File1: TFileStream;
i: Integer;
Caption: string;
begin

Caption := 'Test';

File1 := TFileStream.Create('C:\Test.txt', fmOpenWrite);

File1.Seek(0, soFromBeginning);

for i := 1 to Length(Caption) do
File1.Write(Caption[i], 1);

File1.Free;
دستت درد نکنه همون کدی بود که می خواستم، حالا اگه بخوایم بخونیم چی کار کنیم؟ مثلا دقیقا همینی که wrtie کردیم رو بخونیم

مهران موسوی
چهارشنبه 08 خرداد 1387, 22:56 عصر
اره .. فقط Mod خوندن ( fmOpenWrite ) رو تغيير بده .. بعد از read استفاده كن ...

Delphi-Man
چهارشنبه 08 خرداد 1387, 23:10 عصر
ممنون! قبل از این که بپرسم این کارو کردم نشد، نا امید شدم ولی بعد که شما هم همینو گفتی، دوباره با دقت بیشتری این کارو انجام دادم عمل داد.