عمل hook للــ CreateDirectory
#1
السلام عليكم

احاول تعلم api hooking
تعلمت كيف اعرف اسم جديد بدل دالة api لاكن كيف الاستعمال؟
مثلا حاولت عمل hook للــ CreateDirectory ولم افلح
هذا هوا الكود
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls;

type
  TForm1 
= class(TForm)
    
Button1: TButton;
    
procedure Button1Click(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;

implementation
{$R *.dfm}
var

 
HookED: function(lpPatch:PAnsiChar;lpSecurityAttributes: PsecurityAttributes):BOOL; stdcall;

procedure TForm1.Button1Click(Sender: TObject);
Var
  
h : THandle;
Begin

  h
:= GetModuleHandle('kernel32.dll');
  if 
h = 0 then
    h
:= LoadLibrary('kernel32.dll');
  @
HookED:= GetProcAddress(h, 'CreateDirectory');
  
HookED('C:\hey',nil);
  
freelibrary(h);
end;
end. 
تظهر رسالة
إقتباس :Access violation at address 00000000. Read of address 00000000.
الرد
#2
هذا الخطأ يا صديق

كود :
HookED:= GetProcAddress(esi, 'CreateDirectoryA');
الرد
#3
الله يجازيك الف خير لقد افدتني كثيرا ...

الخطا في عدم اضافة حرف a فقد ضبت معي

PHP كود :
@HookED:= GetProcAddress(h, 'CreateDirectoryA'); 
لقد كنت شكيت في الامر لكني اظفت Ex بدل A Big Grin

الان نتعلم الباقي ...

كل الشكر لك اخي Smile
الرد
#4
السلام عليكم
فقط للتوضيح , هذا ليس Hook ؟ بل فقط إستدعاء للدالة CreateDirectoryA
A = AnsiXXX /W = WideXXX لتحديد نوع المسار !.
- لتجنب الخطأ , كان يجب التحقق من القيمة المرجعه HookED قبل إستخدامها
او Try/Except مستقبلا... بالتوفيق,,
I'M Fly Like A G6

الرد
#5
صدمتني :S

يعني هذا مو api hooking ممكن تعطيني مثال عن الــ hooking

بالنسبة للتحقق من القيمة ..فقد كان نجاح تغير الدالة هوا ما يهمني ..لهذا ما اهتميت بالاخطاء او التحقق منها ....

شكرا لك على تصحيحك هذا الخطأ القاتل Big Grin
الرد
#6
راجع المواضيع التالية :
LoadDriver SSDT Hook
[Api Hooking [HOT PATCHING , تطبيق بسيط !
Api Hook مثال بسيط, Hook للدالة TerminateProcess
بالتوفيق,,
I'M Fly Like A G6

الرد
#7
الله يحفظك ويبارك فيك على المتابعة لاكنني لازلت لم استوعب الامر

اذا ما فيها استغلال طيبة ممكن تعدل الكود اعلاه وتجله api hooking بدل استدعاء الدالة ....

اذا كان الامر متعبا يمكنك تقسيمه على ايام مافي مشكلة هذا اذا اردت Smile


هكذا سافهم بطريقة اسهل لاني فاهم الكود اعلاه سأرى التعديل الذي سيحصل فقط .... ....ام هناك تعديل كامل Big Grin
وجزاك الله خيرا
الرد


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


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