PDA

View Full Version : حرفه ای: نحوه ی تغییر پراکسی اینترنت اکسپلورر به زبان اسمبلی



msdn1223
یک شنبه 07 خرداد 1391, 16:17 عصر
سلام

من میخوام با کدهای اسمبلی تنظیمات پراکسی اینترنت اکسپلورر رو تغییر بدم

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

میگن که با استفاده از یه فایل dll ویندوز باید اینکارو کرد ولی من نمیدونم چطور

اگه کسی میتونه راهنمایی بکنه

ممنونم

xman_1365_x
یک شنبه 07 خرداد 1391, 16:34 عصر
در ویندوز از طریق رجیستری و توابع api قابل انجام هست ، برای کپی کردن در اسمبلی کافیه api های نوشته شده در c رو ببینید و انتقال بدین به اسمبلی

How to programmatically query and set proxy settings under Internet Explorer (http://support.microsoft.com/kb/226473)
Change Internet Explorer 7 Proxy Setting without Restarting Internet Explorer (http://www.codeproject.com/Articles/20756/Change-Internet-Explorer-7-Proxy-Setting-without-R)
How do I find out the browser's proxy settings? (http://stackoverflow.com/questions/202547/how-do-i-find-out-the-browsers-proxy-settings)
winhttp (http://msdn.microsoft.com/en-us/library/aa384096)
موفق باشی

msdn1223
یک شنبه 07 خرداد 1391, 16:39 عصر
ممنون دوست عزیز

ولی من با این کدها کار نکردم و رجیستری و ....

خیلی سخته؟ خواهش میکنم اگه ممکنه شما بیشتر راهنمایی کنید:ناراحت:

برنامش چند خط میشه؟؟

xman_1365_x
یک شنبه 07 خرداد 1391, 16:53 عصر
اول این (www.acm.uiuc.edu/sigwin/old/workshops/winasmtut.pdf) ایبوک رو مطالعه کنید
بعد هم این (http://win32assembly.online.fr/)سایت
بعد هم لینک اولی که در پست قبل دادم
3 تا تابع api هست که باید مقدار دهی کنید کنید و تابع رو فراخوانی کنید چیزی نمیشه اگر کنسول بنویسید فکر کنم کل برنامه 30 خطی بشه
اگر براتون سخته در کنسول با زبان سی بنویسید بعد ارسال پارامترها در اسمبلی بلعکس سی هست ، همین
قبلا چند نمونه ساده کار با api رو گفتم، در سایت جستجو کنید
موفق باشی

msdn1223
یک شنبه 07 خرداد 1391, 17:06 عصر
ممنونم

شما ببین من این کد رو دارم نوشتن که همینکارو میکنه، تو ایبوکی هم که شما معرفی کردی دستورات invoke و ... رو نوشته ولی مشکل اینه من با emuulator کار میکنم و این کدها رو که مینویسم اصلا نمیشناسه! آیا باید با برنامه ی debug فایل اجرایی درست کنم تا این کدها کار کنن؟
اینم روالی که نوشتن و میگن پراکسی اینترنت اکسپلورر رو عوض میکنه: چطور اجراش کنم؟ با چه برنامه ای؟



Proxy_Change PROC STDCALL,src:DWORD
; ------------------------------------
; this code opens the windows registry,
; replaces the proxy server address,
; & then sets enable to 0 or 1
; ------------------------------------


invoke RegOpenKey,HKEY_CURRENT_USER,ADDR lpSubKey,ADDR lpFullKey
cmp eax,ERROR_SUCCESS
je cont
invoke MessageBox,0,offset ErrMsg,offset AppName,MB_OK
ret


cont:
mov esi, src
cmp BYTE PTR [esi],48
je off


on:
mov arg,1
invoke RegSetValueEx,lpFullKey,addr lpValueName2,NULL,
00000004h,addr arg,4
invoke RegSetValueEx,lpFullKey,addr lpValueName,
NULL,00000001h,offset ProxyAddr,32
jmp done


off:
mov arg,0
invoke RegSetValueEx,lpFullKey,addr lpValueName2,NULL,
00000004h,addr arg,4
invoke RegSetValueEx,lpFullKey,addr lpValueName,
NULL,00000001h,offset FakeProxyAddr,32


done:
invoke RegCloseKey,lpFullKey
invoke MessageBox,0,addr Finish,offset AppName,MB_OK
ret


Proxy_Change ENDP

xman_1365_x
یک شنبه 07 خرداد 1391, 18:55 عصر
شما ببین من این کد رو دارم نوشتن که همینکارو میکنه، تو ایبوکی هم که شما معرفی کردی دستورات invoke و ... رو نوشته ولی مشکل اینه من با emuulator کار میکنم و این کدها رو که مینویسم اصلا نمیشناسه! آیا باید با برنامه ی debug فایل اجرایی درست کنم تا این کدها کار کنن؟
اینم روالی که نوشتن و میگن پراکسی اینترنت اکسپلورر رو عوض میکنه: چطور اجراش کنم؟ با چه برنامه ای؟

invoke مربوطه به masm هست و برای ساده کردن فراخوانی توابع در یک خط به کار میره اسمبلر در هنگام اسمبل کردن مجددا به شکل اول درش میاره تا پردازنده بشناسه ، کلا masm شبه دستورات و ماکرو های زیادی داره که برای کوتاه سازی کد بکار میاد
اولی فراخوانی عادی تابع و دومی با استفاده از invoke



push par4
push par3
push par2
push par1
call FunctionName
mov retval, eax

With the MASM "invoke" syntax, you code as follows,

invoke FunctionName,par1, par2, par3, par4
mov retval, eax

emu8086 قابلیت شبیه سازی کد های ویندوزی رو نداره برای این کار باید با masm کدتون رو اسمبل کنید بعد با دیباگر هایی مثل WinDbg,ollydbg استفاده کنید و برای آنالیز هم ida بکار میاد

این تابعی هم که قرار دادین فقط رجیستری رو تغییر میده که ساده هست فقط یک آدرس میگیره که چک میکنه محتواش '0' باشه یه تغییر در رجیستری میده در غیر اینصورت تغییرات دیگه
خیلی ساده یه برنامه کنسول 32 بیتی ایجاد میکنید و در اون این تابع رو فراخوانی میکنید یا با invoke یا با روش اول هر کدوم راحت ترین
اگر کتاب مشحون هم بخونید بدک نیست کمی با اسمبلی 80386 آشنا بشین بعد برین سراغ کار اسمبلی ویندوز(کار با کنسول و gui و api های ویندوز یا رجیستری و ...)
موفق باشی

msdn1223
یک شنبه 07 خرداد 1391, 19:19 عصر
سلام

جناب xman_1365_x، بسیار مچکر به خاطر راهنمایی هاتون

ولی من تا بیام اینا رو کار کنم ببینم چیه و بعد بیام مشکل خودمو با این برنامه (تغییر پراکسی) حل کنم چیزی که نباید بشه شده!

شما یا هرکدوم از دیگر دوستان اگه میتونن این برنامه رو در اختیار من قرار بدن

مبدونم همه گرفتارن و بالاخره هرکی مشکلات خودشو داره، اگر هم خیلی براتون زحمت داره هزینه ی نوشتن این برنامه رو بگید و برام تحویل بدید

آخه فعلا اصلا فرصت خواندن و یادگیری این مسائلی که فرمودین رو ندارم

به هرحال ممنون میشم اگه به هر طریقی (با هزینه و یا بدون هزینه) به من کمک کنید

منتظر پاسخ شما هستم، ممنون