سلام دوستان
به عنوان مثال دستور زیر:
MessageBox(NULL,"amir,"civil",MB_OK);
وقتی به زبان ماشین تبدیل بشه به چه صورت در میاد
ممنون
سلام دوستان
به عنوان مثال دستور زیر:
MessageBox(NULL,"amir,"civil",MB_OK);
وقتی به زبان ماشین تبدیل بشه به چه صورت در میاد
ممنون
بستگی به کامپایلر شما داره. می تونید با یه کامپایل اینو کامپایل کنید و ببینید به چه کدی تبدیل میشه.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
سلام
با چه کامپایلری
من فقط این قطعه رو لازم دارم نه کل برنامه رو
می نونی به زبان اسمبلی بنویسی و بعد کد compile شده رو تو hex editor باز کنی
http://www.milw0rm.com/shellcode/1443
"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xeb\x37\x59\x88\ x51\x0a\xbb"
"\x77\x1d\x80\x7c" //***LoadLibraryA(libraryname) IN WinXP sp2***
"\x51\xff\xd3\xeb\x39\x59\x31\xd2\x88\x51\x0b\x51\ x50\xbb"
"\x28\xac\x80\x7c" //***GetProcAddress(hmodule,functionname) IN sp2***
"\xff\xd3\xeb\x39\x59\x31\xd2\x88\x51\x06\x31\xd2\ x52\x51"
"\x51\x52\xff\xd0\x31\xd2\x50\xb8\xa2\xca\x81\x7c\ xff\xd0\xe8\xc4\xff"
"\xff\xff\x75\x73\x65\x72\x33\x32\x2e\x64\x6c\x6c\ x4e\xe8\xc2\xff\xff"
"\xff\x4d\x65\x73\x73\x61\x67\x65\x42\x6f\x78\x41\ x4e\xe8\xc2\xff\xff"
"\xff\x4f\x6d\x65\x67\x61\x37\x4e";
این shellcode ی هست که که من در milw0rm ثبت کردم;
اگر می خوای بگو کد اسمبلیش رو هم بزارم برات اینجا
و بگم چطور کامپایلش کنی البته همون طور که در milw0rm
هم گفتم کد اسمبلیش کار خودم نیست , فقط تغییرش دادم
*نکته :
این برنامه هم شاید به دردت خورد
برایه پیدا کردن آدرس توابع در DLL ها نوشتمش با Visual C++.NET
فکر کردم خودم گفتم که این shellcode کار کی هست شرمنده (; ( ولی تو لینک milw0rm ی دادم اطلاعات کاملی هست )
اگه لطف کنی ،کد اسمبلی ش رو بذاری ممنون میشن ؟
سلام
ممنون ازهمه
اگر کد اسمبلی روهم بزارید ممنون میشم و کامپایلر مورد نظر رو هم بگید
در ضمن ما اگه این تابع رو با سی++ بنویسم و یه فایل اجرایی تبدیل بشه چه جوری با هگز ادیتور اون تابع رو پیدا کنیم
راستی این برنامه رو برای تابعMessageBoxچک کنید من کردم ولی کار نکرد
user32.dll
ممنون
;msgbox.asm
[SECTION .text]
global _start
_start:
;eax holds return value
;ebx will hold function addresses
;ecx will hold string pointers
;edx will hold NULL
xor eax,eax
xor ebx,ebx ;zero out the registers
xor ecx,ecx
xor edx,edx
jmp short GetLibrary
LibraryReturn:
pop ecx ;get the library string
mov [ecx + 10], dl ;insert NULL
mov ebx, 0x77e7d961 ;LoadLibraryA(libraryname);
push ecx ;beginning of user32.dll
call ebx ;eax will hold the module handle
jmp short FunctionName
FunctionReturn:
pop ecx ;get the address of the Function string
xor edx,edx
mov [ecx + 11],dl ;insert NULL
push ecx
push eax
mov ebx, 0x77e7b332 ;GetProcAddress(hmodule,functionname);
call ebx ;eax now holds the address of MessageBoxA
jmp short Message
MessageReturn:
pop ecx ;get the message string
xor edx,edx
mov [ecx+3],dl ;insert the NULL
xor edx,edx
push edx ;MB_OK
push ecx ;title
push ecx ;message
push edx ;NULL window handle
call eax ;MessageBoxA(windowhandle,msg,title,type); Address
ender:
xor edx,edx
push eax
mov eax, 0x77e798fd ;exitprocess(exitcode);
call eax ;exit cleanly so we don't crash the parent program
;the N at the end of each string signifies the location of the NULL
;character that needs to be inserted
GetLibrary:
call LibraryReturn
db 'user32.dllN'
FunctionName
call FunctionReturn
db 'MessageBoxAN'
Message
call MessageReturn
db 'HeyN'
این کد اصلی هست که توسط steve hanna نوشته شده
اسمش رو search کن مقاله اش رو پیدا میکنی در مورده نحویه کامپایلش هم توضیح داده
درمورده این برنامه هم باید بگم که کار میکنه
فقط باید اسم تابع رو درست بزنی و هم case sensitive هست
وقتی یک بار هم امتحان نکردی اینطوری با قاطعیت نگو کار نمیکنه
بعدش هم اینو برای استفاده شخصیم نوشتمش
سلام
ممنون از کد
من گفتم در مورد تابع MessageBoxدرست کار نمیکنه اونوقت شما تابع دیگه رو مثال میزنیدوقتی یک بار هم امتحان نکردی اینطوری با قاطعیت نگو کار نمیکنه
شما باید میگفتید که برای هرتابع باید به صورت زیر بنویسید
MessageBox==>MessageBoxA
تا برنامه درست کار کنه