به نام خدا
00FF
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
5051525354565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
808182838485868788898A8B8C8D8E8F
909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
کد بالا را از چپ به راست و بصورت ردیف و افقی ، دقیقا به همین شکل ، با دست در ستون وسط هگز ادیتور و به ترتیب الفبای زبان ماشین و در قالب کدهای هگزادسیمال ، تایپ کنید .
توجه داشته باشید که کدهای ستون وسط هگز ادیتور باید دقیقا به همین شکل دیده شوند . پس حتما باید هر ردیف را طبق همین شکل از چپ به راست و بصورت افقی تایپ کنید .
نکته : در هر ردیف بعد از عدد 9 ، حرف A باید نوشته شود . یعنی بخش دوم هر کد هگز باید از این قاعده پیروی کند .
مثال :
090A
191A
E9EA
بعد از A نوبت به حرف B می رسد تا اینکه به حرف F می رسید . بعد از کد 0F نوبت به کد 10 ( یک صفر ) می رسد
مثال :
0A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
بعد از 1F ( یک اف ) نوبت به کد 20 ( دو صفر ) می رسد:
202122232425262728292A2B2C2D2E2F
بعد از کد 2F نوبت به کد 30 (سه صفر ) می رسد و بعد نوبت به کد 31 ( سه یک ) می رسد تا اینکه به کد 3F ( سه اف ) برسیم .
303132333435363738393A3B3C3DE3F
دقیقا طبق همین روال و بصورت افقی بقیه ی کدها را بنویسید تا اینکه تمام 256 کد زبان ماشین ، در ستون وسط هگز ادیتور ، به شکل بالا (شکل بالای پست ) نوشته شوند .
توجه داشته باشید که برای فهم بهتر کدهای زبان ماشین و جلوگیری از بروز اشتباه در حین نوشتن الفبای زبان ماشین ، لازمست اعداد را به این شکل در ذهن تان تلفظ نمایید :
مثال : عدد 10 را باید در ذهن تان بصورت ( یک صفر ) تلفظ کنید تا بتوانید عدد بعدی یعنی 11 ( یک یک ) را بنویسید .
یا مثلا عدد 90 را باید بصورت ( نه صفر ) در ذهن تان ، تلفظ کنید تا بدانید که عدد بعدی ، 9A (نه آ ) و بعد 9B ( نه بی ) .... و بعد 9F ( نه اف ) و البته بعد A0 ( آ صفر ) و البته بعد نوبت به عدد A1 ( آ یک ) می رسد .
یعنی بعد از هر 9 یک A می آید و بعد از هر A یک B می آید تا به F برسد و بعد از هر F یک 0 می آید و بعد یک 1 می آید تا به 9 برسد و بعد یک A می آید تا به F برسد الی آخر ...
اینکار تا جایی پیش می رود که به آخرین کد این الفبا یعنی کد FF ( اف اف ) برسیم و اینجا می توانیم یک نفس راحت بکشیم و استراحت نماییم !!
کد 55 را باید بصورت (پنج پنج ) تلفظ کنید تا بتوانید کد بعدی اش یعنی 56 ( پنچ شش ) را به خاطر بیاورید و دچار اشتباه نشوید . بعد از کد 59 ( پنج نه ) نوبت به کد 5A ( پنج آ) و بعد نوبت به کد 5B ( پنج ب ) می رسد .
کد 67 ( شش هفت ) بعد از کد 66 (شش شش ) و قبل از کد 68 (شش هشت ) نوشته می شود .
کد 5F ( پنج اف ) بعد از کد 5E ( پنج ای ) و قبل از کد 6F ( شش اف ) نوشته می شود .
کد 70 ( هفت صفر ) بعد از کد 6F ( شش اف ) می آید و الی آخر ....
یعنی اصولا بعد از هر F یک کد 0 ( صفر ) می آید . که این کد 0 ( صفر) باید در ردیف بعدی نوشته شود .
برای فهم بهتر این ترتیب و این قاعده ، به کد ابتدای این پست با دقت نگاه کنید .
کدها را بصورت افقی و از چپ به راست و بصورت ردیف به ردیف بخوانید .
هرگز کدهای این برنامه را بصورت عمودی و ستونی تلفظ نکنید بلکه بصورت ردیفی و افقی از چپ به راست بخوانید و بنویسید .
کدهای هر ردیف ( افقی ) را جدا از ردیف قبل و بعد ، و به صورت از چپ به راست ، بخوانید و تلفظ کنید و بنویسید تا اینکه ردیف به پایان برسد و به ردیف پایینی برسید .
در ردیف پایینی نیز طبق همین قاعده ، کدها را بخوانید و بنویسید . یعنی بصورت افقی و از چپ به راست .
اینکار را ادامه دهید تا تمام ردیفها نوشته شود . آنوقت برنامه ی شما دقیقا طبق الفبای زبان ماشین ، ساخته می شود . کدهای الفبای زبان ماشین همیشه فقط شامل 256 کد می باشد . نه یک کد کمتر و نه یک کد بیشتر .
این حالت ، حالت پیشفرض و استاندارد انسی (ANSI) می باشد که پیشفرض شرکت آی بی ام (IBM) می باشد .
شرکت مایکروسافت در سیستم عامل داس و ویندوزهای قدیمی ( ویندوزهای قبل از ایکس پی ) از همین قانون کد پیچ انسی شرکت آی بی ام پیروی می کرد . تا اینکه بحث زبانهای یونیکد ( چینی - ژاپنی - عربی - فارسی - عبری - کره ای - هندی - روسی - و ..... ) پیش آمد که در نتیجه تعداد کدهای زبان ماشین در کد پیج مایکروسافت به 65535 رسید که این عدد یک مضرب از همین عدد 256 می باشد . یعنی 256 ضربدر 256 = 65535 .
256=ANSI
256*256=65535=UNICODE
استاندارد یونیکد ( پشتیبانی از تمام زبانهای دنیا ) از ویندوز ایکس پی شروع شد و الان در ویندوز 10 نیز رسما و با جزئیات متنوع برای اکثر لهجه ها ( مثلا لهجه ی کردی یا ترکی از زبان فارسی ) ، بکار می رود .
هرچند، بسیاری از سیستم عاملهای رقیب ، متاسفانه به این نیاز زبانهای یونیکد بی اهمیت بوده اند و از کمترین تعداد زبان طبیعی پشتیبانی می نمایند .
بنابراین تعداد کدهای زبان ماشین کماکان همین 256 کد می باشد . پس لازم نیست نگران باشید .
یعنی در برنامه نویسی با زبان ماشین یا انجام هرکار دیگری ، شما همیشه برای هر کاری حتی تولید نرم افزارهای یونیکد ، کافیست همین 256 کد را بکار گیرید و البته بین هر کد زبان ماشین، یک کد دیگر از همین 256 کد مثلا 00 یا 2e یا C7 یا هر کد دیگری بنویسید تا یونیکد رعایت شود . این کد اضافی ، از میان همین 256 کد انتخاب می شود و از جای دیگری نمی آید . پس باز هم ما با همین 256 کد سروکار داریم .
بنابراین سیستم زبان ماشین ، بسیار ساده و قابل فهم است .
بهرحال همیشه با همین 256 کد سروکار دارید و هرگز تعداد کدها تحت هیچ شرایطی از 256 کد بیشتر نخواهد شد . لذا به خاطر سپردن این 256 کد نباید کار چندان دشواری باشد .
با همین 256 کد زبان ماشین می توانید دنیا را تغییر دهید و کارهای شگفت انگیز انجام دهید ( مثل آهنگسازی یا نوشتن داستان و رمان یا نوشتن متون رمزی و یا حتی نقاشی کردن یا طراحی وب سایت یا طراحی آیکون یا طراحی فونت یا طراحی کرسر یا طراحی و ساخت انیمیشن و ساخت فایلهای مختلف با پسوندهای مختلف و معماریهای مختلف یا طراحی رابط کاربر گرافیکی سیستم عاملها و نرم افزارها یا طراحی تجربه ی کاربری نرم افزارهای جدید و ........ ) .
فراموش نکنید که زبان ماشین ، یک زبان همه منظوره است .
+
بگذریم...
به بحث اصلی برمی گردم ...
اینطوری ترتیب حروف الفبای زبان ماشین به شکل صحیح ، رعایت می شود و این برنامه به شکل صحیح و با دست ، ساخته می شود .
تکرار می کنم تک تک ردیفهای بالا که به حرف F خاتمه یافته اند باید طوری نوشته شوند که در ستون وسط هگز ادیتور دقیقا به همین شکل دیده شوند .
یعنی هر ردیف باید بصورت چپ به راست ، خوانده و نوشته شود . هرگز کدهای بالا را به صورت بالا به پایین نخوانید و ننویسید . اشتباه نکنید . این کدها باید از چپ به راست و بصورت افقی خوانده و نوشته شوند .
هیچ ارتباطی بین کدهای هر ردیف با ردیف بالایی یا پایین نیست. بلکه هر کد تنها با کدهای ماقبل و مابعد خودش که به ترتیب در سمت چپ و سمت راست او نوشته شده اند ارتباط دارد .
بنابراین کدهای بالا را بصورت ردیف هایی از سمت چپ به راست ( از کد 0 تا کد F ) تلفظ کرده و بصورت چپ به راست باید نوشته شود .
طوریکه نتیجه ی نهایی به این شکلی در آید که در ابتدای این پست مشاهده می فرمایید .
برای خواندن کدهای بالا باید انها را بصورت ردیف و افقی و از چپ به راست تلفظ نمایید و به همین شکل نیز بنویسید . تا اینکه هر ردیف به اتمام برسد .
بعد به ردیف بعدی که رسیدیم باید به الفبای خالص زبان ماشین فکر کنیم یعنی :
0123456789ABCDEF
همانطور که ملاحظه می فرمایید بعد از هر کد 0 ، کد 1 و بعد از هر کد 1 ، کد 2 .... و بعد از هر کد 9 ، کد A می آید .
بعد از هر کد A ، کد B می آید و .... بعد از هر کد F مجددا کد 0 می آید .
مثلا کد EF بعد از کد EE و قبل از کد F0 نوشته می شود .
خلاصه اینکه باید ترتیب حروف الفبای زبان ماشین را به شکلی که در بالا گفتم رعایت کنید .
حالا فرض بر اینست که شما کارتان را بدون اشتباه و با دقت فراوان و با صبر و حوصله انجام داده اید و در ستون وسط هگز ادیتور ، تعداد 256 کد هگز زبان ماشین به شکلی که در بالا مشاهده می فرمایید نوشته شده اند ، حالا به سراغ مرحله ی بعد می رویم :
خب فرض بر اینست که کارتان را با دقت انجام داده اید و این کدهای زبان ماشین را دقیقا طبق دستور الفبایی نوشته اید :
حالا باید این کدها را در قالب یک فایل روی هارد ذخیره کنید و یک نام دلخواه مثلا 00FF به ان بدهید و انرا با پسوند exe در درایو D یا هر جای دیگری ، ذخیره نمایید .
حالا از هگز ادیتور خارج شوید . روی فایل 00FF.exe دابل کلیک کنید . اگر ویندوز ایکس پی یا ویندوز 98 یا ویندوز 2000 داشته باشید ، شاهد باز شدن یک پنجره با یک محیط شبیه به خط فرمان داس خواهید بود که در آن تعدادی خط سفید چشمک زن در حال جابجایی هستند !!
این عملا یک برنامه ی ساده ی سازگار با سیستم عاملهای داس و ویندوز می باشد که مستقیما با زبان ماشین نوشته شده است .
متاسفانه این برنامه تحت ویندوز 10 اجرا نمی شود . زیرا ویندوز 10 فقط برخی نرم افزارهای خاص را اجرا می کند و اجازه ی اجرا به هر نرم افزاری را نمی دهد .
بهرحال این برنامه فقط از کدهای هگزادسیمال زبان ماشین که شامل کدهای 00 تا FF می باشد و بصورت الفبایی نوشته شده اند ساخته شده است و یک برنامه ی بی خطر و سالم است .
اما خب ویندوز 10 احتیاط می کند و این برنامه را اجرا نمی کند .
بهرحال اگر ویندوز 98 یا ویندوز 2000 یا ویندوز ایکس پی داشته باشید شاهد اجرای این برنامه خواهید بود .
چند نکته در مورد این برنامه :
1- این برنامه منحصرا از کدهای هگزادسیمال زبان ماشین و بصورت ترتیب الفبایی ساخته شده است .
2- این برنامه اصلا و ابدا یک برنامه ی استاندارد داس یا ویندوز نیست بلکه یک برنامه ی جالب و خاص با معماری ساده و تمیز و شگفت انگیز است که من سالها پیش ، روش ساخت این برنامه را از یکی از سایتهای ایرانی یاد گرفتم و اجرا کردم . الان یادم نیست نام سایت چی بود .
3- این برنامه یکی از اسرار هگز ادیتورها و زبان ماشین را به ما نشان می دهد . این برنامه به ما یاد می دهد چطوری بدون رعایت معماری رایج فایلهای PE یا MZ براحتی تحت داس و برخی ویندوزهای قدیمی و اصیل ، نرم افزار بسازیم .
لذا این برنامه بسیار ساده و خالص و کوچک و تمیز و قابل فهم است .
4- این برنامه درواقع نوعی بازی نیز محسوب می شود . بازی با زبان ماشین یا بازی با پردازنده !!
5- این برنامه به ما ترتیب الفبای زبان ماشین در مبنای هگزادسیمال را یاد می دهد .
6- این برنامه هیچ کد اضافی ندارد و منحصرا از کدهای الفبای زبان ماشین ساخته شده است .
شبیه به چنین برنامه هایی را معمولا هکرها می سازند . ولی باید دقت کنید و حواستان جمع باشد که روی هر فایلی کلیک نکنید .
همیشه برای اینکه از سالم بودن یک برنامه مطمئن شوید سعی کنید انرا با کمک یک هگز ادیتور باز نمایید و کدهای درون اش یعنی کدهای ستون وسط هگز ادیتور را مطالعه نمایید .
بهتر است که برای ساخت چنین برنامه هایی از برنامه ی قدرتمند c32asm استفاده نمایید تا بتوانید دیس اسمبلی این برنامه را نیز مطالعه و بررسی نمایید .
من معمولا برای رمزگشایی زبان ماشین ، از برنامه ی c32asm استفاده می کنم چون دیس اسمبلر و ری اسمبلر قدرتمند دستی دارد که به من در آنالیز کد اسمبلی برنامه ، کمک می نماید .
توجه داشته باشید که کد بالا را باید با دست و در ستون وسط هگز ادیتور تایپ نمایید سپس نتیجه ی کارتان را ذخیره کنید . پسوند فایل برنامه را باید خودتان تعیین کنید . یعنی خودتان پسوند exe را به آخر نام فایل اضافه نمایید .
کد بالا شامل تمام کدهای هگزادسیمال زبان ماشین است که شامل کدهای 00 تا FF می شود .
کد بالا را دقیقا به همین شکل که می بینید و به همین ترتیب باید بنویسید . یعنی تک تک کدهای هگز را باید دقیقا به همین ترتیب تایپ نمایید و الفبا را رعایت کنید .
جالب است . نه ؟؟؟
اگر از برنامه ی c32asm برای ساخت این برنامه استفاده می کنید ترجیحا از فونت Fixedsys یا Terminal یا System استفاده کنید تا کاراکترهای کنترلی را به شکل واقعی در ستون سمت راست ببینید . حس و حال عجیبی به شما دست می دهد . به یاد سیستم عامل داس و برنامه ی مخرب و وحشتناک NC می افتید . نه ؟؟؟
البته برای دیدن کاراکترهای زبان فارسی یا سایر زبانهای یونیکد باید از یک فونت دیگه مثل آریل Arial استفاده نمایید .
+
+
وحید محمدی - وبلاگ وحیدمی