إستدعاء & إستخدام الدالة ZwTerminateProcess من User Mode
#1
السلام عليكم ورحمة الله وبركاته

إستدعاء دوال Native API مباشرة من User Mode بدون تصريح
بالإعتماد على Syscall Number

ومنه إجراء لإستخدام الدالة ZwTerminateProcess مع دعم متعدد لأنظمة التشغيل (XP/ 7/ 8/ 8.1/ 10 Win 32Bit)
تم التجربة على كل من الأنظمة (XP/7/8.1/10)

إقباس الفكرة كان من هنا إستدعاء & إستخدام Native Api من الـ User Mode

PHP كود :
function ZwTerminateProcess(hProcessDWORDuCodeDWORD): NTSTATUSstdcallassembler;
{
  
Coded By Agmcz
  Support 
for all operating systems [XP788.11032bit]
  
Tested on Windows XP/7/8.1/10.
}
asm
{$IFDEF WIN32}
  
MOV EAXFS:[$C0]
  
CMP EAX, $0
  JNZ 
@Exit
  
MOV EAXFS:[$30]
  
MOV EAX, [EAX+$A4]
  
SUB EAX, $5
  JE 
@WinXP
  DEC EAX
  JE 
@Win8_81
  SUB EAX
, $4
  JNE 
@Sys
  MOV EAX
, $0024
  JMP 
@Sys
  
@Win8_81:
  
MOV EAXEBX
  MOV EAX
, [EAX+$A8]
  
DEC EAX
  JE 
@Win7
  DEC EAX
  SUB EAX
, $2
  JAE 
@Sys
  MOV EAX
, $0023
  JMP 
@Sys
  
@Win7:
  
MOV EAX, $0172
  JMP 
@Sys
  
@WinXP:
  
MOV EAX, $0101
  
@Sys:
  
LEA EDX,[EBP+$8]
  
INT $2E
  
@Exit:
{
$ENDIF}
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 2 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • محمد عبد العزيز, Eagle Master
الرد
#2
بنكهة شل كود (171 بايت)

PHP كود :
const
 
 arrZwTerminateProcess: array[0..171of byte = (
 
   $55, $8B$EC, $64, $8B, $05$C0, $00, $00, $00, $83$F8, $00, $75, $4A,
 
   $64, $8B, $05, $30, $00, $00, $00, $8B, $80$A4, $00, $00, $00, $83$E8,
 
   $05, $74, $2E, $48, $74, $0C, $83$E8, $04, $75, $2B$B8, $24, $00, $00,
 
   $00$EB, $24, $89$D8, $8B, $80$A8, $00, $00, $00, $48, $74, $0D, $48,
 
   $83$E8, $02, $73, $13$B8, $23, $00, $00, $00$EB, $0C$B8, $72, $01,
 
   $00, $00$EB, $05$B8, $01, $01, $00, $00, $8D, $55, $08$CD, $2E, $5D,
 
   $C2, $08, $00, $8D, $40, $00, $98, $25, $40, $00, $11, $02, $2E, $31, $01,
 
   $00, $00, $00, $00, $00, $00, $00, $11, $00, $00, $00, $00, $10, $40, $00,
 
   $11, $47, $65, $6E, $65, $72, $61, $74, $65, $53, $68, $65, $6C, $6C, $43,
 
   $6F, $64, $65, $8B$C0, $55, $8B$EC, $33$C0, $55, $68$DF, $25, $40,
 
   $00, $64$FF, $30, $64, $89, $20, $33$C0, $5A, $59, $59, $64, $89, $10,
 
   $68$E6, $25, $40, $00$C3, $00);

var
 
 ZwTerminateProcess: function(hProcessDWORDuCodeDWORD): NTSTATUSstdcall;
begin
  ZwTerminateProcess 
:= @arrZwTerminateProcess;
 
 {code}
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 3 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • AX302, ESSO_X, Eagle Master
الرد
#3
172 بايت Big Grin
:: من يملك المعلومة يملك الميدان :: 
[-] كل من 1 user says قال شكرا ل AX302 على المشاركة المفيدة
  • Agmcz
الرد
#4
شل كود فيه زيادة وتكفي فقط 93 بايت

PHP كود :
const
 
 arrZwTerminateProcess: array[0..92of byte = (
 
   $55, $8B$EC, $64, $8B, $05$C0, $00, $00, $00, $83$F8, $00, $75, $4A,
 
   $64, $8B, $05, $30, $00, $00, $00, $8B, $80$A4, $00, $00, $00, $83$E8,
 
   $05, $74, $2E, $48, $74, $0C, $83$E8, $04, $75, $2B$B8, $24, $00, $00,
 
   $00$EB, $24, $89$D8, $8B, $80$A8, $00, $00, $00, $48, $74, $0D, $48,
 
   $83$E8, $02, $73, $13$B8, $23, $00, $00, $00$EB, $0C$B8, $72, $01,
 
   $00, $00$EB, $05$B8, $01, $01, $00, $00, $8D, $55, $08$CD, $2E, $5D,
 
   $C2, $08, $00);

var
 
 ZwTerminateProcess: function(hProcessDWORDuCodeDWORD): NTSTATUSstdcall;
begin
  ZwTerminateProcess 
:= @arrZwTerminateProcess;
 
 {code}
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 2 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • محمد عبد العزيز, AX302
الرد


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


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