PDA

View Full Version : حرفه ای: شنود پروسه های در حال اجرا



arashmidos2020
چهارشنبه 28 بهمن 1388, 17:17 عصر
سلام با توجه به بحثی که در http://www.barnamenevis.org/forum/showthread.php?t=204356 شده فکر کردم این بحث رو باید در تاپیک جداگانه ای بپرسم.آیا می شه با گرفتن PId پروسه های در حل اجرا توابع و متغیرهایی که استفاده می کنند را نیز بدست آورد؟؟؟
چیزهایی که تا الان بدست آوردم:
پروسه ها فضایی برای آدرس دهی دارند با اینجکت کردن به قسمتی از جدول حافطه هر پروسه میشه توابع مورد استفاده اون پروسه رو بدست آورد.
تو یک کتابخانه میشه اینجکت کرد و تمام توابع هاشو بدست آورد
بازم یک سوال دیگه:
آیا هر پروسه در جدول آدرس دهی خودش شبیه ساختار یک PE فایل عمل می کنه؟ یعنی آدرس دهیش به همون ترتیبه که در یک PE فایل هست؟؟
اساتید کمک کنند لطفا.
لطفا اگر میشه نظراتتون رو هم واسه لینوکس بگید و هم تو ویندوز.
متشکرم

arashmidos2020
چهارشنبه 28 بهمن 1388, 21:05 عصر
در حال انتظار و جستجو ......

hoax3r
چهارشنبه 28 بهمن 1388, 21:55 عصر
.آیا می شه با گرفتن PId پروسه های در حل اجرا توابع و متغیرهایی که استفاده می کنند را نیز بدست آورد؟؟؟

نه


یا هر پروسه در جدول آدرس دهی خودش شبیه ساختار یک PE فایل عمل می کنه؟ یعنی آدرس دهیش به همون ترتیبه که در یک PE فایل هست؟؟

فایل با فرمت PE وقتی داخل حافظه لود میشه، بخشی از یه پروسه میشه، در نتیجه "شبیه ساختار یک PE فایل عمل می کنه" معنا نداره
آدرس ها هم با هم متفاوتن ولی میشه به هم تبدیلشون کرد تو هم لینکی که دادم یه تابع در این مورد داره با نام RVA2Offset
کلا پیشنهاد میکنم قبل اینکه بیشتر درگیر جزءیات این پروژه ای که می خواین بسازین بشین یکم بیشتر روی فرمت PE تحقیق کنید

در مورد لینکوس هم متاسفانه اطلاعی ندارم به چه صورته

arashmidos2020
چهارشنبه 28 بهمن 1388, 22:27 عصر
بسیار ممنون فقط یک سوال دیگه.
اینکه ما آفست و همه توابع Api استفاده شده در یک Pe file رو می تونیم بدست بیاریم شکی نیست(با توجه به همون لینکه) اما من هنوز برام مشخص نشده که:
چطور پروسه های در حال اجرا رو رو بگیرم و باهاشون مثل یک Pe file برخورد کنم؟متوجه میشید مشکل کجاست؟
یهنی با توجه به حرفی که زدید باید آدرس پروسه های در حال اجرا رو پیدا کنیم(که خودش یک بحث دیگه هست) و سپس در فضای آدرس دهی هر پروسه یک تابع مثل GetImportProcName(در همون پروژه) استفاده کنیم ؟

(بله،چشم هنوزم دارم مثال سه و جهار اون لینک رو می خونم)

hoax3r
چهارشنبه 28 بهمن 1388, 23:07 عصر
چطور پروسه های در حال اجرا رو رو بگیرم و باهاشون مثل یک Pe file برخورد کنم؟متوجه میشید مشکل کجاست؟

خوب شما باید مسیر فایلی که اجرا شده رو بگیرین، برای این کار راه های مختلفی است یه راهش استفاده از تابع Module32First ایت
این مثال رو ببینید، قبل استفاده باید PID پروسه مورد نظر رو داشته باشید. من برای اینکه کد اضافی ننویسم مستقیم یه PID از سیستم خودم رو داخل برنامه تست کردم



#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

int main()
{
DWORD dwPID = 584; // PID of process

MODULEENTRY32 module = {sizeof(MODULEENTRY32)};

HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
if ( Module32First(hSnap, &module) )
printf("%s\n", module.szExePath);

CloseHandle(hSnap);

return 0;
}


بعد که مسیر فایل مشخص شد حالا روی فایل (فرمت PE) هر کاری بخواین میتونین انجام بدین


یهنی با توجه به حرفی که زدید باید آدرس پروسه های در حال اجرا رو پیدا کنیم(که خودش یک بحث دیگه هست) و سپس در فضای آدرس دهی هر پروسه یک تابع مثل GetImportProcName(در همون پروژه) استفاده کنیم ؟

وقتی با فایل سرو کار داشته باشیم دیگه احتیاجی به پروسه نیست ، خود من اگه بخوام همچین کاری کنم این راه رو ترجیح میدم
ولی اگه نخواین فایل رو بخونین و مستقیم از پروسه اطلاعات رو بگیرین اون موقع قضیه کمی متفاوت میشه

tdkhakpur
پنج شنبه 29 بهمن 1388, 00:22 صبح
یهنی با توجه به حرفی که زدید باید آدرس پروسه های در حال اجرا رو پیدا کنیم(که خودش یک بحث دیگه هست) و سپس در فضای آدرس دهی هر پروسه یک تابع مثل GetImportProcName(در همون پروژه) استفاده کنیم ؟

کلا ساختار ویندوز و نحوه اجرای pe فایلها به این صورت هست که وقتی یک pe فایل اجرا میشود اجرای مجدد این نوع فایل ها دوباره توسط ویندوز به همان فایل باز شده قبلی ارجا داده میشود ولی با یه سری پارامترهای جانبی که به pe فایل ارسال میشود لذا راه نفوذ برای تداخل در کارهای توابع موجود در این نوع فایلها باز میشود و شما میتوانید ادرس ساختار را به توابع خودتان ارجا داده و کنترل جریان توابع را بدین شکل بدست بیارید.
این کار شما همان هوک شدن هست که میتوانید با جستجو بحثهای دیگری را هم بدست بیارید.

arashmidos2020
یک شنبه 02 اسفند 1388, 23:04 عصر
کلا ساختار ویندوز و نحوه اجرای pe فایلها به این صورت هست که وقتی یک pe فایل اجرا میشود اجرای مجدد این نوع فایل ها دوباره توسط ویندوز به همان فایل باز شده قبلی ارجا داده میشود ولی با یه سری پارامترهای جانبی که به pe فایل ارسال میشود لذا راه نفوذ برای تداخل در کارهای توابع موجود در این نوع فایلها باز میشود و شما میتوانید ادرس ساختار را به توابع خودتان ارجا داده و کنترل جریان توابع را بدین شکل بدست بیارید.
این کار شما همان هوک شدن هست که میتوانید با جستجو بحثهای دیگری را هم بدست بیارید.

یعنی شما می گی به همین سادگی به داخل فایل دسترسی پیدا می کنم؟ مثلا وقتی برای یک فایل exe مثل noepad.exe که می خوام بگیرم به من اجازه دسترسی نمی ده و نمی زاره بخونم.این راهی داره؟

ali zi zeperto
دوشنبه 03 اسفند 1388, 07:31 صبح
سلام.این کتاب (biginning linux programming)که لینکش رو دادم رو نگاه کن.فصل یازدهمش در مورد همین چیزاست.من یه خورده ازش خوندم به نظرم خیلی کتاب خوبیه و کمکت می کنه.یه نگاه بندازی ضرر نمی کنی.
http://www.filefactory.com/file/b024c94/n/Beginning_Linux_Programming.pdf

tdkhakpur
دوشنبه 03 اسفند 1388, 13:36 عصر
یعنی شما می گی به همین سادگی به داخل فایل دسترسی پیدا می کنم؟ مثلا وقتی برای یک فایل exe مثل noepad.exe که می خوام بگیرم به من اجازه دسترسی نمی ده و نمی زاره بخونم.این راهی داره؟
منظورم dll هاست.