PDA

View Full Version : سوال: بدست آوردن آپکد



BeginnerProgrammer
پنج شنبه 25 آذر 1389, 17:24 عصر
سلام دوستان
چطوری میشه آپکد یک دستورو بدست آورد؟:ناراحت:

xman_1365_x
پنج شنبه 25 آذر 1389, 20:10 عصر
راه زياده مثلا:
1-خودتان طريقه بدست آوردنش رو ياد بگيريد از روي جدول مربوطه البته به جز اين جدول بايد كد گذاري آدرس موثر هم ياد بگيريد يكم پيچيدست
63711
2-توسط نرم افزار هايي كه diassembel مي كنند هم آپكد رو ميده هم دستور اسمبلي
براي نمونه olly dbg توي گوگل بزنيد پيداش مي كنيد.

BeginnerProgrammer
پنج شنبه 25 آذر 1389, 23:06 عصر
از لینکی که گذاشتین چیزی نفهمیدم:ناراحت:
شما اگه بخواین آپکد دو دستور زیرو بدست بیارین چکار میکنید؟


mov eax,54
inc eax

xman_1365_x
پنج شنبه 25 آذر 1389, 23:50 عصر
تا ماه ديگه خدانگهدار:عصبانی++:
http://pdos.csail.mit.edu/6.858/2010/readings/i386/c17.htm


CPU Disasm
Address Hex dump Command Comments
00401093 |. B8 36000000 MOV EAX,36 ;36h = 54d
00401098 |. 40 INC EAX
00401099 |? B8 00000000 MOV EAX,0

xman_1365_x
جمعه 26 آذر 1389, 12:34 عصر
ببينيد هر دستور اسمبلي يك معادل به زبان ماشين داره
برنامه اي كه مياد اين كد اسمبلي رو تبديل به زبان ماشين مي كنه بايد اينو به معادلش تبديل كنه حالا چطور؟
خوب اون منابع كه دادم نگاه كنيد + كتاب مهندس نيك مهر متوجه ميشي هر دستور يك عدد خاص نسبت دادن مثلا
http://pdos.csail.mit.edu/6.858/2010/readings/i386/MOV.htm


MOV -- Move Data

Opcode Instruction Clocks Description

88 /r MOV r/m8,r8 2/2 Move byte register to r/m byte
89 /r MOV r/m16,r16 2/2 Move word register to r/m word
89 /r MOV r/m32,r32 2/2 Move dword register to r/m dword
8A /r MOV r8,r/m8 2/4 Move r/m byte to byte register
8B /r MOV r16,r/m16 2/4 Move r/m word to word register
8B /r MOV r32,r/m32 2/4 Move r/m dword to dword register
8C /r MOV r/m16,Sreg 2/2 Move segment register to r/m word
8D /r MOV Sreg,r/m16 2/5,pm=18/19 Move r/m word to segment register
A0 MOV AL,moffs8 4 Move byte at (seg:offset) to AL
A1 MOV AX,moffs16 4 Move word at (seg:offset) to AX
A1 MOV EAX,moffs32 4 Move dword at (seg:offset) to EAX
A2 MOV moffs8,AL 2 Move AL to (seg:offset)
A3 MOV moffs16,AX 2 Move AX to (seg:offset)
A3 MOV moffs32,EAX 2 Move EAX to (seg:offset)
B0 + rb MOV reg8,imm8 2 Move immediate byte to register
B8 + rw MOV reg16,imm16 2 Move immediate word to register
B8 + rd MOV reg32,imm32 2 Move immediate dword to register
C6 MOV r/m8,imm8 2/2 Move immediate byte to r/m byte
C7 MOV r/m16,imm16 2/2 Move immediate word to r/m word
C7 MOV r/m32,imm32 2/2 Move immediate dword to r/m dword


دستور شما
MOV EAX,36
خوب حالا اين خط معادل با كاري كه شما ميخواستي انجام بدي نيست؟

MOV reg32,imm32
بعد ميبيني براي آپ كدش نوشته B8
تموم شد رفت اون مقادير جلوشم كه معادل عدد شما هست به باينري
فقط يك مقدار در مورد بعضي دستورات فرق ميكنه كه بايد با استفاده از جدول كدگزاري آدرس موثر به همراه جدول آپكد بدست بياريد.
براي دستور بعد هم
http://pdos.csail.mit.edu/6.858/2010/readings/i386/INC.htm
خودتون ببينيد شبيه كدومه آپ كدشم هست ديدين آسونه :چشمک:
حالا متوجه شدين ؟

BeginnerProgrammer
جمعه 26 آذر 1389, 12:39 عصر
خیلی ممنون متوجه شدم، آپکد اون دستورم میشه FF درسته؟:لبخندساده:

xman_1365_x
جمعه 26 آذر 1389, 13:10 عصر
خیلی ممنون متوجه شدم، آپکد اون دستورم میشه FF درسته؟:لبخندساده:
هنوز خوب متوجه نشدين،نخير ميشه 40 خودم نوشته بودم كه در پست هاي قبل :لبخند: بريد به همون لينك بيشتر توجه كنيد ميفهميد چرا!

xman_1365_x
جمعه 26 آذر 1389, 13:19 عصر
راهنمايي هم ميكنم
توي جدول آپ كدش درسته ff اما


FE /0 INC r/m8
FF /0 INC r/m16
FF /6 INC r/m32

اين r/m جلوش نوشته نكتش همينجاست كه گفتم از روي يك جدول ديگه هم بايد كمك بگيري كه بهش ميگن كد كذاري آدرس موثر

BeginnerProgrammer
جمعه 26 آذر 1389, 14:07 عصر
خب جدولش کجاس ؟اگه هست لطفا دقیق اشاره کنید :عصبانی++:لینکای بالا که نبود البته من متن انگلیسیشو نخوندم ولی جمله پایین داخل فایل زیپ بود:افسرده:
40+ rd INC r32 Increment doubleword register by 1

xman_1365_x
جمعه 26 آذر 1389, 14:38 عصر
بريد همه پست هامو چه خصوصي چه پابليك دوباره بخونيد
http://pdos.csail.mit.edu/6.858/2010/readings/i386/appa.htm
خودتون تحقيق كنيد،دنبال جواب نباشيد.
آخرين جوابم تا ماه آينده