علیرضا110
شنبه 28 شهریور 1394, 14:42 عصر
با سلام به دوستان خوش اخلاق و با حال
سوالم اينست كه : چطوري ميشود از داخل دلفي يك كد ماشين را به صورت مستقيم به داخل يك فايلي كه ساختيم (exe)بفرستيم
وكد در فايل اجرايي عمل كند مثلا يك پيام بفرستد
اينم بگم كه كامپايلر نمي خواهمها. بلكه يك چيز ساده اي كه فقط كدهاي اوليه يك exe را داشته باشه و به فايل بفرستد
وكدهامون را به hex تبديل كنيم وبين كدها قرار بديم تا اجرا شود
يك چيزي شبيه اين كد:
{ --- header-1 (DOS) at $00 --- }
SetAddr($0);
WriteS('MZ'); // "MZ" signature
SetAddr($3C);
Write4($40); // header-2 position
{ --- header-2 (WIN32-PE) at $40 --- }
SetAddr($40);
WriteS('PE'#0#0); // "PE" signature
Write2($14c); // i386
Write2($1); // number of sections <------------------------------------
Write4($0); // date/time
Write4($0); // symbol
Write4($0); // symbol count
Write2($E0); // header-3 size
Write2($10F); // flags 10E 10F
Write2($10B); // "magic" number
Write2($0); // linker version
Write4($200); // code size (?) <------------------------------------
Write4($200); // initialized data (?) <------------------------------------
Write4($0); // unitialized data
Write4($1000); // code entry point position <------------------------------------
Write4($1000); // code offset in memory
Write4($1000); // data offset in memory
Write4($400000); // image base in memory
Write4($1000); // memory section aligment
Write4($200); // file section aligment
_ImageBase:=$400000;
_MemAlign:=$1000;
_FileAlign:=$200;
Write4($4); // os version hi 0x4?
Write4($0); // image version hi
Write4($4); // subsystem version hi
Write4($0); // ...
Write4($2000); // file size in memory (?) <------------------------------------
Write4($200); // all headers size (?)
Write4($0); // checksum
Write2($3); // 2=window,3=console <------------------------------------
Write2($0); // dll flags
Write4($1000); // stack reserved
Write4($1000); // stack size
Write4($10000); // heap reserved
Write4($0); // heap size
Write4($0); // ...
Write4($10); // count
دوستان لطف كنيد يك كمكي بكنيد خيلي متشكر ميشوم
اگه هم مطلبش هست بزاريد
سوالم اينست كه : چطوري ميشود از داخل دلفي يك كد ماشين را به صورت مستقيم به داخل يك فايلي كه ساختيم (exe)بفرستيم
وكد در فايل اجرايي عمل كند مثلا يك پيام بفرستد
اينم بگم كه كامپايلر نمي خواهمها. بلكه يك چيز ساده اي كه فقط كدهاي اوليه يك exe را داشته باشه و به فايل بفرستد
وكدهامون را به hex تبديل كنيم وبين كدها قرار بديم تا اجرا شود
يك چيزي شبيه اين كد:
{ --- header-1 (DOS) at $00 --- }
SetAddr($0);
WriteS('MZ'); // "MZ" signature
SetAddr($3C);
Write4($40); // header-2 position
{ --- header-2 (WIN32-PE) at $40 --- }
SetAddr($40);
WriteS('PE'#0#0); // "PE" signature
Write2($14c); // i386
Write2($1); // number of sections <------------------------------------
Write4($0); // date/time
Write4($0); // symbol
Write4($0); // symbol count
Write2($E0); // header-3 size
Write2($10F); // flags 10E 10F
Write2($10B); // "magic" number
Write2($0); // linker version
Write4($200); // code size (?) <------------------------------------
Write4($200); // initialized data (?) <------------------------------------
Write4($0); // unitialized data
Write4($1000); // code entry point position <------------------------------------
Write4($1000); // code offset in memory
Write4($1000); // data offset in memory
Write4($400000); // image base in memory
Write4($1000); // memory section aligment
Write4($200); // file section aligment
_ImageBase:=$400000;
_MemAlign:=$1000;
_FileAlign:=$200;
Write4($4); // os version hi 0x4?
Write4($0); // image version hi
Write4($4); // subsystem version hi
Write4($0); // ...
Write4($2000); // file size in memory (?) <------------------------------------
Write4($200); // all headers size (?)
Write4($0); // checksum
Write2($3); // 2=window,3=console <------------------------------------
Write2($0); // dll flags
Write4($1000); // stack reserved
Write4($1000); // stack size
Write4($10000); // heap reserved
Write4($0); // heap size
Write4($0); // ...
Write4($10); // count
دوستان لطف كنيد يك كمكي بكنيد خيلي متشكر ميشوم
اگه هم مطلبش هست بزاريد