PDA

View Full Version : تبدیل تابع به زبان ماشین



amir_civil
دوشنبه 16 مهر 1386, 22:27 عصر
سلام دوستان
به عنوان مثال دستور زیر:

MessageBox(NULL,"amir,"civil",MB_OK);
وقتی به زبان ماشین تبدیل بشه به چه صورت در میاد
ممنون

vcldeveloper
سه شنبه 17 مهر 1386, 02:05 صبح
بستگی به کامپایلر شما داره. می تونید با یه کامپایل اینو کامپایل کنید و ببینید به چه کدی تبدیل میشه.

amir_civil
سه شنبه 17 مهر 1386, 13:07 عصر
سلام
با چه کامپایلری
من فقط این قطعه رو لازم دارم نه کل برنامه رو

ICEMAN
چهارشنبه 25 مهر 1386, 08:48 صبح
می نونی به زبان اسمبلی بنویسی و بعد کد compile شده رو تو hex editor باز کنی
http://www.milw0rm.com/shellcode/1443


"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xeb\x37\x59\x88\x 51\x0a\xbb"
"\x77\x1d\x80\x7c" //***LoadLibraryA(libraryname) IN WinXP sp2***
"\x51\xff\xd3\xeb\x39\x59\x31\xd2\x88\x51\x0b\x51\x 50\xbb"
"\x28\xac\x80\x7c" //***GetProcAddress(hmodule,functionname) IN sp2***
"\xff\xd3\xeb\x39\x59\x31\xd2\x88\x51\x06\x31\xd2\x 52\x51"
"\x51\x52\xff\xd0\x31\xd2\x50\xb8\xa2\xca\x81\x7c\x ff\xd0\xe8\xc4\xff"
"\xff\xff\x75\x73\x65\x72\x33\x32\x2e\x64\x6c\x6c\x 4e\xe8\xc2\xff\xff"
"\xff\x4d\x65\x73\x73\x61\x67\x65\x42\x6f\x78\x41\x 4e\xe8\xc2\xff\xff"
"\xff\x4f\x6d\x65\x67\x61\x37\x4e";

saeedIRHA
چهارشنبه 25 مهر 1386, 12:26 عصر
این shellcode ی هست که که من در milw0rm ثبت کردم;
اگر می خوای بگو کد اسمبلیش رو هم بزارم برات اینجا
و بگم چطور کامپایلش کنی البته همون طور که در milw0rm
هم گفتم کد اسمبلیش کار خودم نیست , فقط تغییرش دادم

*نکته :
این برنامه هم شاید به دردت خورد
برایه پیدا کردن آدرس توابع در DLL ها نوشتمش با Visual C++.NET

http://91.184.86.154/~SaEeD/getProcAddrs.jpg

ICEMAN
شنبه 28 مهر 1386, 08:00 صبح
فکر کردم خودم گفتم که این shellcode کار کی هست شرمنده (; ( ولی تو لینک milw0rm ی دادم اطلاعات کاملی هست )
اگه لطف کنی ،کد اسمبلی ش رو بذاری ممنون میشن ؟

amir_civil
شنبه 28 مهر 1386, 09:23 صبح
سلام
ممنون ازهمه
اگر کد اسمبلی روهم بزارید ممنون میشم و کامپایلر مورد نظر رو هم بگید
در ضمن ما اگه این تابع رو با سی++ بنویسم و یه فایل اجرایی تبدیل بشه چه جوری با هگز ادیتور اون تابع رو پیدا کنیم
راستی این برنامه رو برای تابعMessageBoxچک کنید من کردم ولی کار نکرد
user32.dll
ممنون

saeedIRHA
شنبه 28 مهر 1386, 11:56 صبح
;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 هست

http://omega7.homelinux.net/SaEeD-Home/GetProcAddr2.JPG

وقتی یک بار هم امتحان نکردی اینطوری با قاطعیت نگو کار نمیکنه
بعدش هم اینو برای استفاده شخصیم نوشتمش

amir_civil
شنبه 28 مهر 1386, 14:24 عصر
سلام
ممنون از کد

وقتی یک بار هم امتحان نکردی اینطوری با قاطعیت نگو کار نمیکنه
من گفتم در مورد تابع MessageBoxدرست کار نمیکنه اونوقت شما تابع دیگه رو مثال میزنید:اشتباه:
شما باید میگفتید که برای هرتابع باید به صورت زیر بنویسید
MessageBox==>MessageBoxA
تا برنامه درست کار کنه

saeedIRHA
شنبه 28 مهر 1386, 14:53 عصر
سلام
ممنون از کد

من گفتم در مورد تابع MessageBoxدرست کار نمیکنه اونوقت شما تابع دیگه رو مثال میزنید:اشتباه:
شما باید میگفتید که برای هرتابع باید به صورت زیر بنویسید
MessageBox==>MessageBoxA
تا برنامه درست کار کنه
تابع MessageBox به 2 صورت
MessageBoxA==>ascii و
MessageBoxW==>unicode
هست دیگه فرض بر این هست که کاربر در این حد
اطلاعات داره با توجه به سئوال مطرح شده