![]() |
|
خطأ error i/o 104 عند انشاء ملف exe - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : خطأ error i/o 104 عند انشاء ملف exe (/showthread.php?tid=5067) |
خطأ error i/o 104 عند انشاء ملف exe - مبرمج هاوي - 25-03-2013 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته خطأ error i/o 104 عند انشاء ملف exe شرح فكرة البرنامج المراد برمجته : برنامج يقوم بقراءة سورس اي ملف exe وتشفيرها عن طريق خوارزمية RC4 وانتاج ملف مشفر exe جديد كود : [align=left]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,rc4, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f,n:TextFile;
r,w:string;
begin
if not SaveDialog1.Execute then
exit;
while not Eof(f) do
begin
Read(f,r);
AssignFile(f,SaveDialog1.FileName);
Rewrite(f);
Write(f,rc4code(r,'123'));
end;
closefile(f);
AssignFile(n,'crypted.exe');
Rewrite(n);
write(n, RC4Code(r,'123'));
closefile(n);
ShowMessage(SysErrorMessage(GetLastError));
try
if not SaveDialog1.Execute then
exit;
AssignFile(f,SaveDialog1.FileName);
//Append(f);
while not eof(f) do
begin
Rewrite(f);
write(f,RC4Code(r,'123'));
end;
closefile(f);
ShowMessage('Crypted !');
finally
end;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then
exit;
edit1.Text:=OpenDialog1.FileName;
end;
end.
[/align]وهذه هي وحدة ال RC4 [/COLOR] كود : [align=left]
{************************************************************}
{ RC4 }
{ Copyright (c) 2004 Hagen Reddmann }
{************************************************************}
unit RC4;
interface
uses
SysUtils;
type
TRC4Context = record
D: array[Byte] of Byte;
I,J: Byte;
end;
procedure RC4Init(var RC4: TRC4Context; const Key: String);
procedure RC4Done(var RC4: TRC4Context);
procedure RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer); overload;
function RC4Code(var RC4: TRC4Context; const Value: String): String; overload;
function RC4Code(const Value, Password: String): String; overload;
implementation
procedure RC4Init(var RC4: TRC4Context; const Key: String);
var
R,S,T,K: Byte;
U,L: Integer;
begin
{$R-}
{$Q-}
L := Length(Key);
with RC4 do
begin
I := 0;
J := 0;
for S := 0 to 255 do D[S] := S;
R := 0;
U := 0;
for S := 0 to 255 do
begin
if U < L then K := PByteArray(Key)[U] else K := 0;
Inc(U);
if U >= L then U := 0;
Inc(R, D[S] + K);
T := D[S];
D[S] := D[R];
D[R] := T;
end;
end;
end;
procedure RC4Done(var RC4: TRC4Context);
begin
FillChar(RC4, SizeOf(RC4), 0);
end;
procedure RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer); overload;
var
S: Integer;
T: Byte;
begin
with RC4 do
for S := 0 to Count -1 do
begin
Inc(I);
T := D[I];
Inc(J, T);
D[I] := D[J];
D[J] := T;
Inc(T, D[I]);
TByteArray(Dest)[S] := TByteArray(Source)[S] xor D[T];
end;
end;
function RC4Code(var RC4: TRC4Context; const Value: String): String; overload;
var
Count: Integer;
begin
Count := Length(Value);
SetLength(Result, Count);
RC4Code(RC4, Value[1], Result[1], Count);
end;
function RC4Code(const Value, Password: String): String; overload;
var
RC4: TRC4Context;
begin
RC4Init(RC4, Password);
try
Result := RC4Code(RC4, Value);
finally
RC4Done(RC4);
end;
end;
end.
[/align]وهو برمجة برنامج يقوم بقراءة سورس الملف وتمريرة على خوارزمية تشفير حيث انه عند التنفيذ يقوم بفك التشفير والعمل ... خطأ error i/o 104 عند انشاء ملف exe - مبرمج هاوي - 26-03-2013 بعد كثير من المحاولات ولله الحمد توصلت الى الحل بنسبة 90% تقريبا وهذا هو الكود للبروجكت اما الكود للوحدة ثابت وهذا كود البرنامج الجديد :- كود : [align=left]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, rc4, StdCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f:TextFile;
t:string;
begin
try
AssignFile(f,Edit1.Text);
Rewrite(f);
write(f,RC4Code(edit1.Text,'PASSWORD'));
closefile(f);
ShowMessage('Crypted !');
finally
end;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then
exit;
edit1.Text:=OpenDialog1.FileName;
end;
end.
[/align]الان لم يتبقى الا كيفية تشغيل الملف بعد تشفيره لكن الامر الذي استغربة هو لماذا التشفير يكون باللغة الصينية !!؟ خطأ error i/o 104 عند انشاء ملف exe - SMP3 - 26-03-2013 إقتباس :الان لم يتبقى الا كيفية تشغيل الملف بعد تشفيره لكن الامر الذي استغربة هو لماذا التشفير يكون باللغة الصينية !!؟و ما المشكل أن يكون التشفير باللغة الصينية ؟ لتشغيل الملف يجب أن تقوم باعادة فكه ثم تشغيله + لماذا استخدمت TextFile !!! .. TextFile خاص بالملفات النصية فقط txt وغيرها .. خطأ error i/o 104 عند انشاء ملف exe - مبرمج هاوي - 27-03-2013 استخدمتها على اساس تعامل مع جميع الملفات سواء كانت نصية او تنفيذية او فيديو ... الخ يعني الهدف من البرنامج تشفير او تعمية لكن ما زلت اتسائل كيف يمكن ان اقوم بفك الملف بعد تشفيرة هل لهذا علاقة بـ RunPe ام ان هناك خوارزمية او طريقة اخرى خطأ error i/o 104 عند انشاء ملف exe - SMP3 - 27-03-2013 كما قلت لك سابقا النوع TextFile خاص بالملفات النصية فقط إقتباس :Text files provide a simple, convenient way of storing textual data. They do provide mechanisms for reading and writing numerical data stored as text (see Write), but it is safer and wiser to use structured records when storing anything other than plain text strings.لتقم بعملية الفك يجب أن تستخدم نفس المفتاح .. استخدم نفس الخوارزمية |