Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

Share what I know............... learn what I don’t

آخرین نظرات

۲ مطلب با کلمه‌ی کلیدی «تزریق کد» ثبت شده است

DLL injection and Hooking

۳۱
شهریور

در اینجا قصد داریم تا در مورد DLL Injection و استفاده از آن برای انجام Inline Hooking در پروسس راه دور را بصورت تئوری توضیح دهیم.
در ویندوز هر پروسس فضای آدرس مجازی مختص به خودش را دارد که در آن می توان هر DLL را در هر زمانی لود یا آنلود کرد. اما این لود و آنلود شدن DLL توسط خود پروسس انجام می گیرد. گاهی وقت ها ما تمایل داریم یک DLL را بدون اینکه پروسس بفهمد در داخل پروسس لود کنیم.دلایل زیادی برای این کار وجود دارد (قانونی و غیر قانونی) . برای مثال یک بدافزار نویس ممکن است بخواهد تا فعالیت های مخربش را با لود کردن یک DLL در یک پروسس قابل اطمینان مخفی کند یا ممکن است بخواهد دستگاه های امنیتی را bypass کند از طرف دیگر یک شخص ممکن است بخواهد عملکرد های برنامه ای را توسعه دهد.
ما در اینجا راه های تزریق code/DLL در داخل یک پروسس راه دور (Remote process) را نشان می دهیم .سپس ما آنرا برای هوک کردن API خاصی در پروسس هدف توسعه می دهیم تا بتوانیم کارهای خودمان را انجام دهیم.

روش ها و ابزارهای متفاوتی برای اینکار وجود داره, و برای اهداف مختلفی هم این کار انجام میشه.در اینجا هم ما از روش دستی و تزریق کدهای اسمبلی بجهت آموزش استفاده میکنیم.

کار اصلی ما:

 

1- لود کردن dll توی حافظه هستش (LoadLibraryA)

نکته:توجه داشته باشید که dll توی مسیر فایل باشه وگرنه نمیتونه لودش کنه

 

2- بدست آوردن آدرس تابعی که میخوایم فراخوانی کنیم(GetProcAddress)

 

3- فراخوانی تابع

 

4- آزاد سازی dll (FreeLibrary)  (این کار الزامی نیست میتونید فقط برای مخفی کاری این کارو انجام بدید)