وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

Pure Assembly

 

 

 



Pure Assembly



بنام خدا


عنوان پست


اسمبلی خالص (ناب):


آدرس پست


https://vahidmy.blog.ir/post/38




طبق قولی که در  پست قبلی دادم  ، در این پست  یک برنامه ی ساده ی کوچولو را که خودم با دست و در محیط زبان اسمبلی (FasmW.exe) نوشتم را اینجا  به شما معرفی می کنم .

این برنامه درواقع همان نرم افزار مشهور  Hello world است اما بصورت  اسمبلی خالص و ناب (اسمبلی سطح پایین).

ضمنا این نرم افزار فقط یک سکشن دارد و این یعنی اینکه  دارای کوچکترین سایز برحسب کیلوبایت می باشد و از معماری فشرده ای برخوردار است.  حجم این نرم افزار ویندوزی که بطور کامل با زبان اسمبلی ساخته شده است فقط  1 کیلوبایت یعنی دقیقا  1024 بایت می باشد  .


من سورس کامل این نرم افزار را که اتفاقا  هیچگونه ماکرویی در ان بکار نبردم  و از اسمبلی کاملا خالص و تمیز استفاده کردم  در اینجا  اورده ام . 


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


; Example of making 32-bit PE program as raw code and data  similar to Machine code programming style.
; Example of tiny (one section) Win32 program .


format PE GUI


; no section defined - fasm will automatically create .flat section for both  code and data, and set entry point at the beginning of this section.


        push    0      ; 0 = MB_OK
        push    caption
        push    message
        push    0
        call    [MessageBoxA]

        push    0
        call    [ExitProcess]


caption db 'Win32 assembly program',0
message db 'Hello World!',0




;  Linker :


data import

  dd 0,0,0,RVA kernel_name,RVA kernel_table

  dd 0,0,0,RVA user_name,RVA user_table
  dd 0,0,0,0,0

  kernel_table:
    ExitProcess dd RVA _ExitProcess
    dd 0
  user_table:
    MessageBoxA dd RVA _MessageBoxA
    dd 0

  kernel_name db 'KERNEL32.DLL',0
  user_name db 'USER32.DLL',0

  _ExitProcess dw 0
    db 'ExitProcess',0
  _MessageBoxA dw 0
    db 'MessageBoxA',0


end data




توضیح : 


عبارت format PE GUI   یک رهنمود است که به کامپایلر داخلی زبان اسمبلی می گوید که قرار است یک نرم افزار ویندوزی  قابل حمل  با رابط گرافیکی کاربر  ساخته شود. 

بطور کلی در زبان اسمبلی برای برنامه نویسی تحت محیط سیستم عاملهای مدرن مثل ویندوز ، لینوکس , مک ,  اندروید  و ......  باید از عبارت  format استفاده شود .  کاملا واضح است که منظور از  format چیست :  فرمت یا قالب  یا نرم افزار یا همان  معماری نرم افزار .


پس این رهنمود به  کامپایلر زبان اسمبلی می گوید : یک  نرم افزار قابل حمل ویندوزی با رابط گرافیکی کاربر و با فلان فرمت و فلان معماری  بساز .


رهنمود  :  هر عبارتی که  با کمک آن به  اسمبلر (کامپایلر زبان اسمبلی)  دستور بدهیم  که چه کاری انجام دهد و چه کاری انجام ندهد یا چه کاری  را به چه شکلی و با چه حالتی انجام دهد اصطلاحا رهنمود (راهنمایی)  گفته می شود. این یعنی اینکه  عملا ما  بعنوان انسان که صاحب هوش برتر هستیم به زبان اسمبلی که هوش ماشینی دارد دستور می دهیم که دقیقا چه کاری را با چه  جزئیاتی انجام دهد  و عملا  زبان اسمبلی را در امر تولید نرم افزار  ، راهنمایی و هدایت می کنیم  تا دقیقا وظیفه اش را انجام  دهد .


خوشبختانه زبان اسمبلی بشدت انعطاف پذیر و فرمانبردار است و هر رهنمود یا راهنمایی که به او بکنیم  بی چون و چرا اطاعت می کند و با دقت بسیار زیاد انجام می دهد .


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


بخشهای قرمز رنگ ،  شامل  سورس کد اصلی برنامه است  که فقط از هفت   خط  کد اسمبلی   و یک رهنمود  تشکیل شده و البته  به اضافه ی  لینکر دستی و قابل سفارشی  ( بخشهای بین دو عبارت  data import  و   end data  همان لینکر دستی فلت اسمبلر می باشند که توسط خود برنامه نویس نوشته شده و قابل سفارش و تغییر هستند  )    . یعنی هرچیزی که بین  این دو عبارت نوشته شده  جزو سورس برنامه محسوب نمی شود  بلکه  لینکر  است .  یعنی کارش تولید فایل نهایی با پسوند  exe  می باشد .


یکی از مزایای زبان اسمبلی اینست که بشدت انعطاف پذیر و قابل سفارشی شدن است یعنی ما می توانیم  حتی  لینکر  زبان اسمبلی را شخصا  با دست نوشته و به صلاحدید خود آنرا  سفارشی کنیم.  دستی بودن لینکر زبان اسمبلی ,  قابلیت حمل این زبان روی انواع  سیستم عاملها  را   امکان پذیر می کند.  در واقع , زبان اسمبلی مثل موم  در دستان برنامه نویس ,  تغییر شکل می دهد. 


 زبان اسمبلی این توانایی را دارد که سورس برنامه را  تنها با فشردن یک کلید (کلید F9 )  مستقیما به فایل باینری نهایی (exe یا dll  یا  sys) تبدیل کند . یعنی تمامی مراحل مربوط به compile  ،  Build  ،  Run   در زبان اسمبلی در کمتر از 1 ثانیه و تنها با فشردن یک کلید   انجام می شود و زحمت برنامه نویس را کم می کند  و در وقت صرفه جویی می کند .  


هیچ زبانی بجز اسمبلی از این توانایی خارق العاده و کاربرپسند  برخوردار نیست . 



اگر شما زبان دیگری سراغ دارید که چنین امتیازی دارد  به من معرفی کنید . 




عبارت  RVA    که  در بخش لینکر می بینید مخفف این عبارت است :

Relative virtual address


یعنی آدرس مجازی رابطه ای .


شما در هنگام برنامه نویسی با زبان ماشین  در محیط هگز ادیتور  ، با این  RVA  زیاد سروکار خواهید داشت .

در اینجا نیز سعی شده که به برنامه نویس بگوید که در محیط  اسمبلی می توان  شبیه به زبان ماشین در حالتی قابل فهم ، از مدل برنامه نویسی کاملا سطح پایین و شبه ماشین استفاده کرد و با ادرسهای مجازی رابطه ای سروکار داشت .


البته در زبان اسمبلی حالتی سطح پایین تر از این نیز داریم .  یعنی چند مدل مختلف برنامه نویسی  کاملا سطح پایین داریم که یکی از دیگری سطح پایین تر است و به زبان ماشین  نزدیکتر . 


سطح پایین ترین حالت ، زمانی است که شما تمامی کدهای هگزادسیمال درون یک نرم افزار را مستقیما به درون  زبان اسمبلی  کپی کرده و بعد کلید F9 را فشار دهید .  اتفاق جالبی رخ می دهد و اون نرم افزار با پسوند  bin  مجددا بازتولید می شود که بعد می توانید با دست  پسوند اش را به  exe یا  dll  یا  sys  تغییر دهید . 



بنابراین شما در زبان اسمبلی دهها مدل برنامه نویسی سطح پایین  و سطح متوسط و سطح بالا را  تجربه خواهید کرد . 


این مدل که من در اینجا به شما معرفی کردم   قابل فهم ترین مدل برنامه نویسی اسمبلی سطح پایین بود که می توانیم در اسمبلی اجرا کنیم .



البته اگر از دیدن این لینکر  وحشت کرده اید باید بگویم  که نگران نباشید زیرا اگر خدا بخواهد در پستهای بعدی بطور مفصل در مورد اجزای تشکیل دهنده ی این لینکر توضیح می دهم .

پس نیازی نیست نگران شوید .  بهرحال  این  لینکر قابل تغییر و اصلاح نیز می باشد که بعدا اگر خدا  عمری داد  به شما نشان می دهم که چطوری می توانیم در این لینکر  تغییراتی ایجاد کنیم .



شاید از اینکه مجبور باشید نام  هر تابع ویندوزی را  بجای یکبار  چندین بار بنویسید  معذب باشید . ولی خب کم کم به مرور زمان  به این وضع عادت می کنید !!!


هروقت زمان این رسید که مستقیما با هگز ادیتور (زبان ماشین) برنامه  بنویسم  انوقت به شما  نشان می دهم که  هر تابع ویندوز را باید فقط یکبار بنویسیم و این یعنی اینکه از برخی جهات ، برنامه نویسی در زبان ماشین  ، آسانتر از زبان اسمبلی است !!


در مورد حوصله سوزی  ناشی از  برنامه نویسی با هگز ادیتور  نگران نباشید .  هروقت  حوصله پیدا کردم و شارژ شدم  و مغزم  ریکاوری شد   روش برنامه نویسی با هگز ادیتور را نیز به شما یاد می دهم . البته اگر عمری باشد و خدا  یاری دهد .

فعلا همین اسمبلی را بچسبید و با آن کار کنید تا ببینم  بعدا  چی پیش میاد .  


هدف نهایی من از این وبلاگ ، اینست که  شما را به زبان ماشین برسانم و تمامی کاربردهای هگز ادیتور را به شما یاد بدهم . فقط خدا کند این وسط  مغزم  گریپاژ نکند !!


من عادت دارم از درون خودم انرژی بگیرم  بنابراین به تشویق  مردم و انگیزه و روحیه    نیازی ندارم  ( من یک انسان  درونگرا  هستم  .  ما درونگراها  انرژی لازم را از درون روح و جسم خودمان بدست می اوریم . بنابراین به تشویق مردم و حمایت جامعه  و مسئولین  و  روحیه و انگیزه  و......  نیاز نداریم  و کاملا  خودکفا هستیم .   خودمان  ،  خودبخود شارژ می شویم  )   .  به همین جهت در تنهایی و خلوت  و سکوت ،  انرژی از دست رفته را مجددا به جسم و روح و مغزم برمی گردانم و مجددا  شارژ  می شوم .  درست مثل یک باطری که بدون نیاز به برق ؛   خودش ، خودش را شارژ کند !!

+

+

+

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


تکرار می کنم: در پستهای بعدی نیز  برنامه های زبان اسمبلی را در  حالت سطح پایین  می نویسم و به شما معرفی می کنم .   پس  انتظار نداشته باشید که من از ماکرو  استفاده کنم . شرمنده . ماکرو  بی  ماکرو .


خب . حرف دیگه بسه .  

 


من علاوه بر متن سورس این برنامه ،  فایل سورس و فایل باینری برنامه را نیز در اینجا  اپلود کرده ام که می توانید دانلود نمایید ( می توانید به من اعتماد کنید چون من برنامه نویس زبانهای ماشین و اسمبلی هستم و با دست برنامه می نویسم و بر معماری نرم افزارهای ویندوز کاملا تسلط دارم و با چشم کاملا باز  ، برنامه می نویسم . پس برنامه هایم هرگز حفره ی امنیتی  یا باگ یا  بدافزار ندارند و کاملا سالم  و بی خطر و پایدار و قابل اعتماد  می باشند . ) 


لینک دانلود فایلهای  باینری و سورس نرم افزار  PureAssembly  :




http://bayanbox.ir/download/1536509506773062511/PureAssembly.zip



آخرین نکته:

در پست بعدی ،  فقط یک کار می کنم و آن اینکه این لینکر را برایتان  کالبدشکافی و آنالیز می کنم و در مورد بخشهای مختلف اش توضیح می دهم  تا ترس تان بریزد . 


بنابراین  در پست بعدی سورس برنامه را دیگه  تکرار نمی کنم بلکه فقط همین لینکر را بطور مفصل برایتان تشریح و رمزگشایی می کنم .  بجز رمزگشایی این لینکر  ، هیچ کار دیگری در پست بعدی انجام نمی دهم .

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+



وحید محمدی - وبلاگ وحیدمی



https://vahidmy.blog.ir




بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764


 



 

 

 

 

empty





بنام خدا


عنوان پست



empty




فایل خالی :


آموزش ایجاد فایل کاملا خالی توسط زبان اسمبلی



آدرس پست


 https://vahidmy.blog.ir/post/37




قبل از شروع باید بگویم که من خودم شخصا به هیچ نرم افزاری اعتماد ندارم زیرا ممکن است درون نرم افزارهایی که دانلود می کنم یک بدافزار ( ویروس ، تروجان ، کی لاگر ، روتکیت ، جاسوس افزار، کرم ، باج افزار و ....)  قرار داشته باشد و سیستم مرا  آلوده کند .


حتی به نرم افزارهای اوپن سورس و رایگان  و آزاد نیز نباید به این راحتی ها   اعتماد کرد .


اینکه فلان نرم افزار ، اوپن سورس و آزاد است و همه می توانند سورس اش را ببینند هرگز دلیل نمی شود که لزوما  سالم و بی خطر نیز باشد . خیر . این تصور اشتباه است .


هکرها خیلی راحت می توانند یک قطعه کد مخرب را طوری با مهارت در لابلای سورس برنامه قرار دهند که حتی برنامه نویسان حرفه ای متوجه نشوند و سیستم را آلوده کنند .


تنها راه برای تشخیص اینکه فلان نرم افزار واقعا سالم و بی خطر است اینست که  باینری نرم افزار را  ملاحظه کنیم . یعنی با کمک  hex editor  تک تک بایتهای تشکیل دهنده ی اون نرم افزار  را مشاهده کنیم تا اگر به کد مخربی برخورد کردیم اون کد را حذف یا  رونویسی کنیم .

اما از آنجاییکه کار کردن مستقیم با کدهای زبان ماشین کاری بسیار بسیار سخت و خسته کننده  و حوصله سوز است و وقت خیلی زیادی از ما می گیرد . بهترین راه اینست که سیستم خودمان را مرتبا  اپدیت کنیم و مخصوصا  اینکه  آنتی ویروس را مرتبا به نسخه ی جدید آپدیت نماییم و کل هارد دیسک را اسکن کنیم . اینطوری با کمترین میزان صرف وقت  بیشترین بازده را خواهیم داشت و کل هارد از وجود بدافزارها  پاک می شود .



ما باید فقط از نرم افزارهایی که شخصا خودمان می سازیم  استفاده کنیم و هرگز نرم افزارهای دیگران را دانلود و نصب نکنیم . چون ما خودمان بعنوان برنامه نویس ، دقیقا می دانیم چی نوشته ایم و از  سالم و بی خطر بودن نرم افزارمان کاملا  مطمئن هستیم .


برهمین اساس من تصمیم گرفتم  که  برای جلوگیری از آلوده شدن  احتمالی سیستم ها   ، بجای معرفی نرم افزارهای زبان اسمبلی ، خودم شخصا روش برنامه نویسی با زبان اسمبلی را در وبلاگ ام آموزش دهم و شما  را تشویق کنم که با دست خودتان  برای خودتان نرم افزار بسازید و  خودکفا باشید و سیستم تان همیشه سالم و قبراغ و سرحال و ایمن باشد .


برای شروع ، ابتدا  زبان اسمبلی (فایل  FasmW.exe) را  با دابل کلیک اجرا کنید . بعد یک مسیر برای ذخیره ی فایل سورس و باینری برنامه تان انتخاب کنید . مثلا  این مسیر می تواند خوب باشد :


D:\Assembly\Myapps



زبان اسمبلی را می توانید از پست  FasmVersions یا هر پستی که در آن نسخه های مختلف  فلت اسمبلر را برایتان  اپلود کردم  ،  دانلود کنید .  اسمبلی (فلت اسمبلر) بعد از دانلود ، هیچ نیازی به نصب یا کانفیگ ندارد . کافیست فایل فشرده را  extract نمایید .


خب حالا من فرض می کنم که شما  فایل  FasmW.exe  را پیدا کرده اید.


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


حالا  که در محیط زبان اسمبلی (FasmW.exe) قرار دارید یک فایل با نام empty را در مسیر بالا ایجاد کنید . یعنی از منوی File  گزینه ی  save as   را  انتخاب کنید و مسیر بالا را انتخاب  نمایید .    خب حالا   بدون اینکه حتی یک کلمه تایپ کنید ،  کلید  F9  را فشار دهید . ظاهرا هیچ اتفاقی نمی افتد !!


اما کافیست به مسیر بالا که تعیین کرده اید بروید و شاهد فایلهای زیر باشید :


empty.ASM


empty.BIN 


جالب بود ! نه ؟؟؟؟

شما عملا اولین برنامه تان را به همین راحتی  با  کمک زبان اسمبلی و بدون حتی یک کلمه  کد  ، با پسوند  BIN   تحت محیط ویندوز ،  ساختید . یک برنامه ی  کاملا خالی  ولی اماده ی کدنویسی پیشرفته !!


اسمبلی عادت دارد که  برنامه های کاملا خالی را  بصورت  فایل  اجرایی با پسوند  BIN (باینری)  ایجاد کند .


سوال:  این فایل  empty.BIN   به چه دردی می خورد وقتیکه هیچ کدی در ان نوشته نشده و کاملا خالی است ؟؟؟



جواب:  فایلهای  با پسوند  BIN  فایلهای  Binary (باینری)  هستند که می توانید از انها استفاده های فراوان برای موارد بعدی  داشته باشید  . کاربردهای فایلهای  bin  بسیار زیاد است .

مثلا برای ساخت فایلهای ایمیج از یک سیستم عامل کوچولو که قبلا توسط دیگران ساخته شده باشد  یا ساختن یک نرم افزار خاص یا یک فایل برای مقاصد خاص .  یا حتی ساختن یک سیستم عامل کوچولوی شخصی برای خودتان .



برای شروع  یادگیری زبان اسمبلی فعلا همین کار جالب و بامزه را انجام دهید تا در درس بعدی  یک برنامه ی کوچولو  ولی قابل اجرا و کاربردی را که خودم نوشته ام به شما معرفی کنم .

این برنامه که در پست بعدی معرفی می کنم و خودم انرا نوشته ام ، کد دارد . پس توخالی نیست و کاربرد خاص خودش را به شما  نشان می دهد .

+

+

به هرحال  با توجه به سختگیریهای  ویندوز  خصوصا برنامه ی   Windows defender    بر روی برنامه های زبان اسمبلی ، و برای جلوگیری از  آلوده شدن احتمالی سیستم ، بهتر است خودمان  با اسمبلی برنامه بنویسیم و عملا  برنامه های دیگران را بی جهت دانلود نکنیم و  امنیت  سیستم خودمان را به خطر نیاندازیم  . هرچند تمامی نرم افزارهایی که من تا به امروز  به شما معرفی کرده و در وبلاگ هایم  آپلود کرده ام  همگی سالم و بی خطر هستند  و من هرگز  با  آبروی خودم و زبان اسمبلی  بازی نمی کنم   ولی بهرحال  من به  Windows Defender  اعتماد می کنم و  از دانلود  برنامه های دیگران خودداری می کنم و اگر  ویندوز دیفندر  تشخیص داد که فلان نرم افزار ، آلوده است به حرف اش گوش می دهم و ان نرم افزار را حتی اگر سالم باشد از روی سیستم ام حذف می کنم   . احتیاط شرط عقل است .


بجای دانلود فایلهای ناشناس بهتر است خودمان فایل بسازیم  . هرچی باشه دست پخت خودمان است و به او اعتماد داریم .


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


پس برای اینکه زبان اسمبلی را احیا کنیم باید خودمان با دستهای خودمان  برنامه بسازیم و در سرتاسر وب فارسی  بازنشر کنیم .


من قصد دارم بجای اینکه به شما  ماهی بدهم ،  ماهیگیری را به شما یاد بدهم . 



لطفا نگویید : اسمبلی به درد نرم افزارهای بچه گانه و کوچک و بی ارزش می خورد و کاربردی ندارد .  خیر اینطور نیست   . هزاران نرم افزار حرفه ای و بزرگ و کارامد و قدرتمند  تا حالا با کمک اسمبلی ساخته شده اند . یعنی سورس کد شان کاملا با زبان اسمبلی نوشته شده است .


اما  من قصد دارم به امید خدا  بصورت گام به گام و پله به پله  ، اسمبلی را یاد بدهم   . 


پس طبیعی است که اولین برنامه ها ، از نظر شما  اسباب بازی  و چرت بنظر آیند .


کم کم به برنامه های بزرگ و کارامد و حرفه ای هم می رسیم  زیاد عجله نکنید  .   اگر کمی صبور باشید  روش  ساخت نرم افزارهای بزرگ  با زبان اسمبلی را شخصا در این وبلاگ به شما یاد می دهم .


این برنامه ای که اینجا آموزش دادم فقط برای دستگرمی بود . از پست بعد ، برنامه های دارای کد که کاربردی هستند را به شما معرفی خواهم کرد . انشاء ا...

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+



وحید محمدی -  وبلاگ  وحیدمی 


https://vahidmy.blog.ir





بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive




https://vahidmy.blog.ir/post/764






Good and Bad Assemblers






بنام خدا :


عنوان پست 



Good and Bad Assemblers:





اسمبلرهای خوب و بد 


اسمبلر یعنی کامپایلر زبان اسمبلی




آدرس پست 


https://vahidmy.blog.ir/post/36




توضیح :


این پست بدلیل مشکلات فنی ،  از اول بازنویسی شد . این مشکلات مربوط به عدم نمایش  این پست در   RSS (فیدخوان)  اینترنت اکسپلورر بود که رفع کردنش باعث ایجاد مشکلات بیشتری شد .


متاسفانه بدلیل هنگهای مکرر  بلاگ بیان در محیط اینترنت اکسپلورر ، بارها در حین تایپ دچار مشکل شدم  و زحماتم هدر رفت  .و خسارت سنگینی به محتویات پست وارد شد  .  یعنی محتویات پست در حین بازنویسی براثر هنگ کردن  بلاگ در محیط اینترنت اکسپلورر ، بطور کامل حذف شدند و همه ی زحماتم برباد فنا رفت !

 

لذا خیلی خلاصه و مختصر این پست را مجددا از اول  بازنویسی  و بازنشر می کنم .

امیدوارم شرکت بیان  کاری کند که  وبلاگهایش با  اینترنت اکسپلورر  سازگاری  کامل بدست بیاورند تا  دیگه شاهد این مشکلات  عجیب و زیانبار  نباشیم .

 

شروع مطلب:


اسمبلرهای خوب و بد :


اسمبلر یعنی کامپایلر زبان برنامه نویسی اسمبلی .



اسمبلرهای خوب باید حتما این خصوصیات را داشته باشند وگرنه اصیل نیستند و عملا شما را از اسمبلی دور کرده و آدرس اشتباه به شما می دهند و باعث گمراهی تان می شوند و عملا شما هرگز زبان اسمبلی را یاد نخواهید گرفت .


خصوصیات اسمبلرهای خوب و اصیل:


1- رایگان باشند .

2- اوپن سورس باشند

3- سورس شان توسط خودشان یعنی زبان اسمبلی خالص استاندارد سطح پایین  نوشته شده باشد و توسط خودشان   نیز  کامپایل شود ( اسمبلرهای خودمیزبان ) .

4- سورس محصولات شان  نیز با اسمبلی کاملا  خالص و استاندارد و سطح پایین نوشته شده باشد

5- دارای گرامر ساده و خوانا و تمیز و استاندارد باشند . یعنی برای برنامه نویسی فقط زبان اسمبلی خالص بکار رود و از هیچکدام از کلمات خاص زبانهای سطح بالا استفاده نشود .

6- قابل حمل باشند یعنی به هیچ سیستم عامل یا  پردازنده ی خاصی وابسته نباشند .

7- در تمامی مدلهای  8 و 16 و  32 و 64 بیت قادر به تولید نرم افزار یا سیستم عامل باشند

8- بشدت انعطاف پذیر باشند و توانایی تولید همه نوع فایل با  هر نوع پسوندی و حتی فایلهای بدون پسوند و حتی فایلهای کاملا خالی  را داشته باشند.

9- انجمن فعال و پویا داشته باشند .

10- دارای محیط برنامه نویسی بصورت گرافیکی باشند طوریکه براحتی بتوان در این محیط برنامه نویسی کرد . اصطلاحا  باید IDE  داشته باشند .

11- نیاز به نصب و  کانفیگ نداشته باشند  و خیلی راحت و سریع  اجرا شوند .

12- دارای سایت رسمی و فعال و پویا باشند .

13- جامعه ی کاربری بزرگ داشته باشند

14- هرچند وقت یک نسخه ی جدید از آنها  منتشر شود .

15- در انحصار هیچ شخص حقیقی یا حقوقی (شرکت یا سازمان یا موسسه  یا دانشگاه یا آزمایشگاه )  نباشند  و جزو  نرم افزارهای آزاد محسوب شوند .

16- بتوانند براحتی با زبانهای سطح بالا رقابت کنند و توانایی تولید سیستم عامل نیز داشته باشند .

17- دارای گرامر انعطاف پذیر در جهت  ایجاد انواع سبکهای برنامه نویسی باشند  و دست برنامه نویس را نبندند .

18- تا جای ممکن به زبان ماشین  نزدیک باشند و تواناییهای ذاتی زبان ماشین را به ارث برده باشند .

19-  به ماکرو وابسته نباشند . طوریکه بتوانیم بدون هرگونه ماکرو و رهنمود و تنها با کدهای خالص اسمبلی در آنها برنامه نویسی کرد .

20 - دارای نسخه های مختلف برای  سیستم عاملهای مختلف باشند و طرفداران همه ی سیستم عاملها را راضی نگه دارند.


تنها  اسمبلری که  این 20  ویژگی ارزشمند را در خود دارد ،  فلت اسمبلر (Fasm) می باشد.


البته ما یک اسمبلر خوب دیگه هم داریم که نامش  RosAsm است ولی فقط بخشی از این خصوصیات را دارد و عملا بایگانی شده و توسعه اش فقط در گیتهاب و به کندی صورت می گیرد و قابل حمل نیست  و یکسری مشکلات فنی دارد که متاسفانه هنوز برطرف نشده و هیچ سایت رسمی ندارد یعنی سایت رسمی اش عملا  فاقد هرگونه محتوایی است و شما فقط نسخه ی آرشیو شده اش را می توانید دانلود کنید .


برای انکه زبان اسمبلی بتواند قدرتمندانه  جای زبانهای سطح بالای چند منظوره خصوصا زبانهای خانواده ی  C  را بگیرد باید حتما  این 20 خصوصیت را داشته باشد تا بتواند در رقابت با انها  پیروز شود  وگرنه محکوم به شکست است. 


علت شکست زبان اسمبلی از زبانهای سطح بالا  دقیقا همین عدم توانایی رقابت بوده که این عدم توانایی رقابت  تنها  دلیلش  اختراع صدها  کامپایلر ناقص و معیوب و دروغین و بی سرو ته   برای زبان اسمبلی بوده که درنتیجه  هیچکدامشان  توانایی رقابت با زبانهای سطح بالا را نداشتند و شکست خورند .

 

خوشبختانه  فلت اسمبلر توانایی رقابت با تمامی زبانهای سطح بالا را دارد و کارهای عجیب و غریب فراوانی انجام می دهد .  عملا زبان اسمبلی حیات مجدد اش  را مدیون  فلت اسمبلر می باشد . پس خیلی راحت می توان سایر کامپایلرهای زبان اسمبلی را فراموش کرده و  فلت اسمبلر را براحتی  ، زبان اسمبلی بدانیم و  صدا بزنیم .  بله ، فلت اسمبلر  همان زبان اسمبلی است که  پوست اندازی کرده و چهره ای زیبا و قامتی برافراشته دارد و این قدرت را دارد که  زبان اسمبلی را  بر تمامی زبانهای سطح بالا  پیروز نماید . 



بنابراین  فلت اسمبلر  بعنوان اسمبلر خوب و عالی محسوب می شود . 


سایر اسمبلرها  بدلیل اینکه این خصوصیات را ندارند جزو اسمبلرهای بد و فریبنده  و دروغین محسوب می شوند ( البته بجز  RosAsm  ) . 



بعد از فلت اسمبلر (Fasm)،    ریاکت اسمبلر (RosAsm)  از لحاظ خوب و استاندارد بودن و معتبر  بودن در جایگاه  دوم قرار می گیرد .



عملا طبق تجربیات و مطالعات و  مشاهدات و آزمایشات و تحقیقات فراوانی که کردم به این نتیجه رسیدم که بجز  فلت اسمبلر و ریاکت اسمبلر  سایر کامپایلرهای زبان اسمبلی  اصلا خوب و مناسب نیستند و  برنامه نویس را فریب داده واز زبان اسمبلی دور می کنند  و او را از راه بدر می کنند .  یعنی مانع فهم زبان اسمبلی می شوند  و سرانجام او را متقاعد می کنند که مجددا به سمت زبانهای سطح بالا  حرکت کند و عملا اسمبلی را فراموش نماید که این یک فاجعه ی دردناک  محسوب می شود . 


اون افرادی که  روی زبان اسمبلی  ، غیرت    دارند  و به معنای واقعی کلمه ، دانشمند علوم رایانه ای هستند   منظور مرا از این حرفها  می فهمند .



بهرحال   از نظر من و البته از نظر بسیاری از برنامه نویسان  خارجی   ، تنها کامپایلر زبان اسمبلی که می تواند پرچم این زبان را  بر فراز قله های بلند دنیای برنامه نویسی  برافراشته کند و این زبان را به یک زبان بشدت محبوب و دوست داشتنی تبدیل کند  ،  فلت اسمبلر است . 


بنابراین از پست بعدی  منظور من از  زبان اسمبلی همان  فلت اسمبلر می باشد . 


چون بجز فلت اسمبلر ، سایر اسمبلرها همگی ناقص و معیوب هستند و نتوانسته اند هیچ قدم مثبتی بردارند و عملا متوقف شده اند . 



نتیجه ی  نهایی:  فلت اسمبلر = زبان اسمبلی = اسمبلر خوب 


از پست بعدی من  همه جا از فلت اسمبلر بعنوان  زبان اسمبلی و تحت نام اسمبلی یاد می کنم و برنامه های این اسمبلر قدرتمند را تحت  عنوان برنامه های زبان اسمبلی  به شما معرفی می کنم .


به زبان ساده تر ، من از پست بعدی ، دیگه از هیچکدام از کامپایلرهای زبان اسمبلی هیچ نامی بر زبان نمی اورم  و بجای  عبارت  فلت اسمبلر  ، از عبارت  زبان اسمبلی استفاده می کنم .


بنابراین از پست بعدی  ،  فقط  لغت  " اسمبلی" را از دهان من می شنوید و در این وبلاگ می بینید . 


یادتان باشد که  منظور من از  زبان اسمبلی در تمامی پستهای بعدی ، همان فلت اسمبلر می باشد . یعنی  Fasm  . 


پس دیگه این کامپایلر را با نام اصلی اش بکار نمی برم  بلکه از لغت عمومی  Assembly  (اسمبلی)  استفاده می کنم .


من از پست بعدی  برای برنامه نویسی با زبان اسمبلی (فلت اسمبلر)  ،  از  اسمبلی کاملا خالص استفاده می کنم . یعنی هرگز از ماکرو استفاده نمی کنم . 

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+

 

Fasm =Good  Assembler = Assembly






وحید محمدی - وبلاگ  وحیدمی 


https://vahidmy.blog.ir






بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764









نظرتون درمورد وبلاگ وحیدمی چیه









بنام  خدا  


عنوان پست 


نظرسنجی (Poll) :



آدرس پست 


https://vahidmy.blog.ir/post/35





نظرتون  در  مورد  وبلاگ  وحیدمی   چیه ؟؟



1.  عالی


2.  خوب 


3.  متوسط 


4. ضعیف 


5.  بسیار  ضعیف (آشغال و به درد نخور!!) 



عدد   گزینه  ی  مورد  نظر  رو در   زیر  این  پست وارد  کنید !


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



کد  امنیتی  رو  برداشتم.    نظرات  نیاز  به  تایید  ندارند  .   با خیال راحت  کامنت بگذارید و حرفهای دل تون رو بزنید.  هر پیشنهاد یا انتقادی که دارید  لطفا  اعلام کنید .


+

+

بروزرسانی : به دلیل حملات مکرر هکرها به وبلاگ وحیدمی ( که هنوز هم این حملات ادامه دارند )  ، بسیاری از کامنتهای شما کاربران  عزیز  توسط  کدهای مخرب هکرها ،  حذف شدند که متاسفانه امکان بازیابی کامنتهای شما دوستان عزیز ، وجود نداشت . از این بابت متاسفم و امیدوارم بتوانم بعد از خلاص شدن از شر دارک وب و هکرها با خیال راحت با  شما کاربران محترم ارتباط دوطرفه برقرار نمایم . فقط دعا کنید که شر هکرها  هرچه زودتر از سر ما کاربران کم شود و فضای مجازی ، امن و ایمن گردد .


+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+







وحید محمدی .  وبلاگ  وحیدمی  



http://vahidmy.blog.ir




بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764










A Short History of Assemblers and Loaders












بنام خدا


عنوان پست



A-Short-History-of-Assemblers-and-Loaders






تاریخچه ای کوتاه از اسمبلرها و لودرها:



آدرس پست 


https://vahidmy.blog.ir/post/34





در این پست،  قصد دارم برای  آنکه  بهتر بتوانید با زبان اسمبلی ، ارتباط برقرار کنید و با این زبان  به اصطلاح همزادپنداری (!!)  داشته باشید یک کتاب  مستند  معتبر تاریخی   در مورد تاریخچه ی  زبان برنامه نویسی  اسمبلی  را  به شما معرفی کنم :


نام کتاب :  A-Short-History-of-Assemblers-and-Loaders  


نویسنده  :   David Salomon


تاریخ نگارش :  1993 


من متوجه شدم که نویسنده ی این  کتاب ، یکی از دانشمندان علوم کامپیوتری شرکت  IBM  می باشد   .  این دانشمند ، تجربیات شخصی اش از برنامه نویسی با زبان اسمبلی در دهه های  50 تا  70 میلادی در شرکت IBM  را بصورت  مختصر  برای ما شرح می دهد . بنابراین ، کتابی که من به شما معرفی می کنم توسط یکی از دانشمندان  علوم رایانه ای شرکت  IBM  نوشته شده و یک اثر مستند و معتبر تاریخی است و هویت و اصالت دارد و می توان به آن اعتماد کرد . 


آدرس سایت نویسنده ی کتاب:


http://www.davidsalomon.name/




در این کتاب،  شما  با قدیمی ترین  اسمبلرهای دنیا و دستگاههای مربوطه شان  و تاریخچه ی دقیق این اسمبلرها و خصوصیات شان  آشنا می شوید و  به طور دقیق متوجه خواهید شد که نخستین  کاربران زبان اسمبلی چه کسانی بودند و این زبان دقیقا در چه سالی عملا در دنیای کامپیوتر بکار رفت و جایگزین زبان ماشین شد .


دانستن تاریخچه ی زبان برنامه نویسی  اسمبلی  یکی از ضروریات برنامه نویسی با این زبان است .  بهرحال برنامه نویس حق دارد بداند که زبان برنامه نویسی  که به او   معرفی می شود  نخستین بار توسط چه کسی و در کجا  و در چه تاریخی  اختراع شده و بکار رفته تا  حس نکند که با یک زبان  بی اصل و نسب  و بی هویت  روبرو شده  و درنتیجه  با شوق و ذوق بیشتری ضمن اینکه در ذهن خود سوار بر ماشین زمان شده و خود را در گذشته  قرار می دهد می تواند با دانشمندانی که  در گذشته  با زبان اسمبلی برنامه نوشته اند همزادپنداری نماید و عملا لذت برنامه نویسی با اسمبلی در او  دو چندان خواهد شد  و حس می کند که با یک زبان با هویت و شناسنامه دار و معتبر  برنامه می نویسد .  بهرحال زبان برنامه نویسی همانند بسیاری از چیزهای دیگر ، باید  هویت و شناسنامه  و اصل ونسب  داشته باشد وگرنه از درجه ی اعتبار ساقط است .


کتاب " تاریخچه ای کوتاه از اسمبلرها و لودرها "  به  معرفی قدیمی ترین اسمبلرهای تاریخ و دستگاههای مربوطه و  همچنین مقایسه انواع اسمبلرها و لودرها  می پردازد .


این کتاب عملا شناسنامه ی زبان برنامه نویسی اسمبلی می باشد و یک سند معتبر تاریخی است .


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


همچنین ، این کتاب  به  روشی خاص  ، زبان برنامه نویسی اسمبلی را  آموزش می دهد و نکات اموزشی بسیار خوبی را شرح می دهد و حتی تعدادی سوال و جواب طرح می کند و سعی می کند خواننده را با جزئیات دقیق  زبان اسمبلی آشنا نماید .


بنابراین ، این کتاب یک مستند آموزشی و خوداموز نیز محسوب می شود و شما با مطالعه ی این کتاب می توانید  به سطح خوبی از  اسمبلی دست یابید و بسیاری از ابهامات درون ذهن تان  خودبخود برطرف می شود .


جنبه ی آموزشی این کتاب را هرگز  نادیده نگیرید .  واقعا کتاب خوب و کاملی است . سعی کنید سر فرصت این کتاب را مطالعه کرده و اگر دوست داشتید انرا به بقیه نیز هدیه دهید  یا اینکه انرا به زبان فارسی ترجمه نمایید.


این کتاب به زبان اصلی ( انگلیسی)  نوشته شده  و لذا یک کتاب مرجع معتبر بین المللی است  که درک عمیقی از ساختار و معماری و تاریخچه و روش برنامه نویسی زبان اسمبلی  به شما  اعطا می کند .



شما با مطالعه ی این کتاب عملا  بهتر می توانید در انتخاب بین زبان اسمبلی و زبان سطح بالا  تصمیمگیری نمایید و تردید از  ذهن تان بیرون می رود .


با مطالعه ی این کتاب  یک دیدگاه جدید نسبت به زبان برنامه نویسی اسمبلی  پیدا کرده و این زبان قدرتمند و اعجاب انگیز و مرموز و خارق العاده   را از زاویه ای متفاوت نگاه می کنید .


بسیاری از جزئیات مربوط به کامپایلرهای معروف زبان اسمبلی  را در این کتاب  به مرور  کشف می کنید .


لینک دانلود کتاب  تاریخچه ی کوتاه اسمبلرها و لودرها :



http://bayanbox.ir/download/8986215209450438179/asl.pdf






نکته:


تا زمانی که  من ، نرم افزارها و مستندات آموزشی مربوط به زبان اسمبلی را در پستهای بعدی آپلود می کنم ، شما لطفا این کتاب را مطالعه نمایید تا عملا انگیزه ای وافر  برای  برنامه نویسی با زبان اسمبلی در شما ایجاد شود .  مطالعه ی این کتاب را به تمامی کاربران کامپیوتر ( مبتدی - متوسط - حرفه ای - فوق حرفه ای )  پیشنهاد می کنم . 



من هم اکنون در حال جمع آوری نرم افزارهای زبان اسمبلی می باشم و به مرور زمان آنها را در پستهای بعدی  آپلود خواهم کرد .   علاوه بر نرم افزار  و بازی کامپیوتری ، مستندات اموزشی مربوط به روش برنامه نویسی با زبان اسمبلی را نیز  به مرور زمان  آپلود  خواهم کرد . 


بهرحال تمامی کاربران کامپیوتر حق دارند بدانند که  کامپیوترها  چطور و چگونه کار می کنند و حق دارند با زبان واقعی کامپیوتر آشنا شده و در صورت تمایل ، با آن ،  برنامه بسازند .


این یعنی آزادی واقعی که ما می توانیم به تمامی کاربران کامپیوتر  هدیه دهیم .


فراموش نکنید که  آزادی کاربر در برنامه نویسی با زبان اسمبلی است .



این جمله را از من به یادگار داشته باشید:


" اگر به دنبال آزادی هستید فقط با اسمبلی برنامه نویسی کنید . "


+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+


 


Assembly  is   REAL   Freedom.


Vahid  mohammady . 






وحید محمدی - وبلاگ  وحیدمی


https://vahidmy.blog.ir






بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764








CPUID_tool







CPUID_tool


بنام خدا


آدرس پست 


https://vahidmy.blog.ir/post/33




برنامه ی  CPUID_tool  یک برنامه ی ساده ی کوچک است که توسط  فلت اسمبلر  (Fasm) و برای سیستم عاملهای ویندوز و لینوکس ساخته شده  است .


این برنامه  ، اطلاعاتی را که توسط  دستورالعمل  CPUID  جمع آوری می شوند را به ما نمایش می دهد . یعنی می توانیم بفهمیم که این دستور دقیقا چه اطلاعاتی از پردازنده ی کامپیوترمان  جمع اوری می نماید .



دستور  CPUID یکی از دستورات زبان اسمبلی است که  اطلاعاتی را در مورد پردازنده ی کامپیوتر جمع اوری می نماید .


این برنامه فعلا بصورت سورس می باشد که شما می توانید  براحتی انرا با  کمک  Fasm    کامپایل نمایید .


لینک دانلود برنامه ی  CPUID_tool  :


http://bayanbox.ir/download/4634749887933792857/CPUID-tool.zip



لطفا  نظر خود را در مورد این برنامه  اعلام کنید . با تشکر .

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+


وحید محمدی -  وبلاگ وحیدمی


https://vahidmy.blog.ir




بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764









FasmVersions








بنام خدا



عنوان پست 


FasmVersions



آدرس پست 


https://vahidmy.blog.ir/post/32






در این پست  تمامی نسخه های مختلف فلت اسمبلر (Fasm) را  برای شما عزیزان  در قالب یک فایل  ، آپلود می کنم  تا زحمت تان کم شود .  امیدوارم از آنها لذت ببرید !

اگر سوالی داشتید در بخش کامنتها  بپرسید .


لینکهای  دانلود  نسخه های مختلف  فلت اسمبلر :



دانلود از بلاگ بیان:


 http://bayanbox.ir/download/3338681932261395218/FasmVersions.zip






دانلود از بلاگ اسکای:


 http://s8.picofile.com/file/8368411718/FasmVersions.zip



بعد از  دانلود این نسخه ها ، عملا براحتی می توانید  همه ی  نرم افزارها و بازیها و سیستم عاملهایی که تاکنون توسط فلت اسمبلر ساخته شده اند را  کامپایل کنید  . 


ابتدا سعی کردم پکیج کامل فلت اسمبلر را در پیکوفایل آپلود کنم که  هربار با شکست مواجه شدم زیرا حجم اش  93 مگابایت بود  و سرعت آپلود در بهترین حالت فقط 20  کیلوبایت بر ثانیه بود و هر بار در نیمه ی راه  عملیات آپلود با شکست مواجه می شد و متوقف می شد .  عملا وقتم  هدر رفت . 


شاید بعدا بتوانم این پکیج را بعد از فشرده سازی  ، درهمین وبلاگ (وحیدمی) ، آپلود نمایم .


علی الحساب لطفا  این فایل که حاوی  همه  ی نسخه های فلت اسمبلر می باشند را دانلود کنید  تا بعد ببینم  چطوری می توانم  اون پکیج بزرگ را  آپلود نمایم .


این پکیج  که  الان  لینک آپلودش را  گذاشته ام شامل نسخه های زیر می باشد :


fasm17314.zip   = نسخه ی مخصوص سیستم عامل داس


 fasmw17314.zip  = نسخه ی مخصوص سیستم عامل  ویندوز


  fasm-1.73.14.tar.gz  =  نسخه ی مخصوص  سیستم عاملهای یونیکس و خانواده ی بی اس دی ( اوپن بی اس دی )   و زتا  و سیستم عاملهای  سازگار با  فایلهای  ELF  . 


fasm-1.73.14.tgz  =  نسخه ی مخصوص سیستم عامل   لینوکس



fasmg.zip  = نسخه ی قابل حمل فلت اسمبلر برای تمام سیستم عاملها و پردازنده ها و میکروکنترولرها  ( نسل آینده ی فلت اسمبلر )



FASMARM_full.zip =    نسخه ی اختصاصی برای پردازنده ی  ARM 


Fresh2_6_2.zip  = ویژوال فسم - نسخه ی شیئ گرا و ویژوالِ اسمبلر فسم برای سیستم عاملهای ویندوز و لینوکس با محیطی شبیه به دلفی  . دارای کتابخانه های مشترک بین ویندوز و لینوکس .  این نسخه  عملا  مزایای  فلت اسمبلر  و دلفی را با یکدیگر ترکیب کرده است .

این نسخه علی الحساب روی ویندوز اجرا می شود  .  این فایل ، نیاز به نصب ندارد . بعد از اکسترکت براحتی  روی ویندوز  اجرا می شود  و می توانید برای ویندوز و لینوکس در محیطی شی گرا و ویژوال ، برنامه نویسی کنید .

این نسخه دارای یک IDE  نسبتا مدرن  شبیه به دلفی می باشد که درحال توسعه است . اگر برنامه نویس دلفی باشید  عملا  با محیط این نسخه  مشکلی نخواهید داشت .


برای دیباگ کردن برنامه هایتان  در این نسخه  باید از برنامه ی معروف  OllyDBG  استفاده کنید چون دیباگر  اختصاصی  خودش فعلا کار نمی کند !

لازم به ذکر است که این برنامه  توسط یکنفر ساخته شده و این یکنفر به تنهایی درحال توسعه ی این برنامه می باشد . لذا  تا تکمیل شدن همه ی ابزارها و امکانات اش ممکن است مدتی طول بکشد . ولی بهرحال  این برنامه  بخوبی کار می کند.  ضمنا  پایدار نیز می باشد .


نکته :

علی الحساب برای شروع ، پیشنهاد می کنم از نسخه ی ویندوز(fasmw17314.zip) استفاده کنید زیرا  با کمک این نسخه می توانید برای تمامی سیستم عاملهای دنیا و  حتی پردازنده های مختلف  ، برنامه نویسی نمایید . ضنا این نسخه  ،  IDE منحصر به فرد دارد و کار برنامه نویسی را برایتان آسان می کند و بسیار بسیار سریع و قدرتمند و چابک است . 

این نسخه براحتی می تواند سورس خودش را کامپایل کرده و یک نسخه ی جدید بسازد ! .



توجه داشته باشید که نسخه ی ویندوز ، بعنوان نسخه ی مرجع محسوب می شود و عملا  برای سایر سیستم عاملها و پردازنده ها  بهتر است از همین نسخه ی ویندوز  استفاده کنید .


من تمامی این نسخه ها را از سایت رسمی و اصلی فلت اسمبلر دانلود کرده ام بنابراین به  صحت و سلامتی و تمیز بودن شان اطمینان کامل دارم . 


از پست بعد  نرم افزارها و بازیهای  تولید شده توسط فلت اسمبلر ، را  آپلود می کنم .  اینکار را با سرعت زیاد انجام می دهم چون وقت ندارم و باید بتوانم تمامی نرم افزارهای فلت اسمبلر را  معرفی و اپلود نمایم . پس لطفا  پیگیر پستهای بعدی این وبلاگ باشید . با تشکر .

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+


وحید محمدی - وبلاگ  وحیدمی


https://vahidmy.blog.ir



 



بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764













حوصله ی تدریس ندارم








بنام خدا


عنوان پست 


حوصله ی تدریس ندارم :  


آدرس پست


https://vahidmy.blog.ir/post/30


 

دیشب داشتم  یک پست می نوشتم تا  روش برنامه نویسی با هگز ادیتور  را   گام به گام آموزش بدم . یک برنامه ی کوچولو هم بطور کامل با کمک هگزادیتور نوشته بودم اما وقتی داشتم  اجزای برنامه رو  تفسیر می کردم یکدفعه حس کردم  مغزم هنگ کرد . بله  دچار   حوصله سوزی شدم ! 


حوصله سوزی  یعنی آسیب جدی به سلولهای مغز که براثر فشار زیاد ناشی از کار فکری مداوم و سنگین  و تمرکز بالا  ایجاد می شود . در این حالت ، انسان دچار یک حالت بی حوصلگی بسیار شدید و عدم  تمرکز و خستگی شدید ذهن می شود که این خستگی و بی حوصلگی  می تواند نشانه ی یک آسیب مغزی باشد .

بالاخره هر عضوی از بدن انسان پس از مدتی  کار زیاد و سنگین  و طاقت فرسا ،  یک روز خسته و از کارافتاده و فرسوده و حتی مصدوم  می شود. مغز در این مورد بسیار حساس تر و آسیب پذیرتر از سایر اندامهای بدن  است . پس مغز زودتر از سایر اجزای بدن دچار  فرسودگی و خستگی و صدمه می گردد .



الان  واقعا  نمی توانم  زبان ماشین را  آموزش بدم حتی اسمبلی را   هم  دیگه نمی تونم  آموزش  بدم   چون مغزم دچار فرسایش و خستگی  شدید شده و گویا بهتره بیش از این  خودآزاری و مردم آزاری نکنم .  باید استراحت کنم . 



تصمیم  گرفتم  تدریس  رو  کنار  بگذارم  و  فقط  بعنوان  یک  معرف ,  نرم افزارهای  اسمبلی را  که برای سیستم عاملهای مختلف و توسط  غولهای برنامه نویسی دنیا   ساخته  شده  ,  اینجا  به شما معرفی کنم.  


بله همینجا  توی  همین  وبلاگ یعنی  وبلاگ  وحیدمی   هرچی نرم افزار اسمبلی است  به  شما  معرفی  می  کنم.  یعنی همینجا  لینک دانلود رو  می گذارم . 


پس برای همه چیز  بیایید  همینجا .   بقیه ی وبلاگهایم  رو  ول  کنید و بچسبید به همین وبلاگ وحیدمی . 


بقیه ی وبلاگهایم  رو  به  امان  خدا  رها  می  کنم .   هرچی هست  همینجاست . 



من  نمی خواهم به زور  هیچکس رو به بهشت یا جهنم  ببرم. . معتقدم باید به کاربر آزادی داد تا خودش با میل خودش انتخاب کند . وقتیکه کاربر ، آزاد و مختار باشد خودش از میان گزینه های مختلف  آن گزینه ای را که به آن علاقه دارد انتخاب می کند و عملا احساس رضایت به او دست می دهد . 


  حیف شد. آرزو داشتم بتوانم  زبانهای قدرتمند ماشین و اسمبلی  را   توی  ایران  احیا  کنم  ولی  این سانحه  باعث  شد  مغزم  آسیب ببینه .   من عاشق زبانهای سطح پایین هستم ولی این  مغز  دیگه  جواب نمی ده .   واقعا  حیف شد و یک حسرت روی  دلم  موند .   حسرت  رایج شدن زبانهای سطح پایین در ایران . 


خیلی سخته که بواسطه ی مشکلات  جسمی  نتونی  به آرزوهات برسی  و حسرت به دل  از  دنیا  بروی .  آاااااه 


  این آسیب مغزی  من رو متقاعد کرد که از این به بعد چیزهای ساده و قابل فهم و قابل اجرا  رو  به  مردم  معرفی کنم.  


من دیگه کاری ندارم که فلان نرم افزار  با  کدام  اسمبلر  ساخته شده  . همه  رو  توی  همین  وبلاگ   آپلود  می  کنم .  دیگه  روی  اسمبلرها  حساس  نیستم . 


دیگه برام فرقی  نمی کنه که  کدوم کامپایلر  زبان اسمبلی   بهتر از بقیه است .  هرچی  ببینم  آپلود می کنم . 


شما  بازدید کننده ی  عزیز  اگر  تمایل  داشتی و البته اگر حوصله داری و ترجیحا جوان و  با نشاط  و پرانرژی هستی   نرم افزارهایی که معرفی می  کنم   دانلود  کن .  

 صرفا  اگر  دوست  دارید  و حوصله ی  برنامه نویسی با زبانهای دشوار سطح پایین را دارید   این  نرم افزارها  رو  دانلود  کنید  و شروع به برنامه نویسی نمایید  و سعی کنید آهسته و به تدریج پیش بروید و عجله نکنید و ذهن تان را زیاد درگیر نکنید   تا خدای ناکرده  براثر دشواری این زبانها و فشار زیاد به مغز ،  دچار حوصله سوزی نشوید .

مراقب سلامتی خودتان باشید . مخصوصا  سعی کنید به مغزتان زیاد فشار وارد نکنید که آسیب می بیند .

شاید شما  بتوانید   راه مرا ادامه دهید و باعث افتخار برای ایران شوید .



بابت  این اتفاق  واقعا  متاسفم  و عذرخواهی  می  کنم .   امیدوارم  جوانترها   بتوانند  کار نیمه تمام مرا  تمام  کنند .   من  دیگه  پیر  شدم .  رمق  ندارم . خسته ام.   حوصله ندارم .  پس  تدریس رو  رها  می  کنم   و فقط  نرم افزار   آپلود می کنم . 


برای هرکاری از جمله   دانلود  فایلها  فقط  به  وبلاگ  وحیدمی   مراجعه کنید . 


از پست بعدی فقط نرم افزارهای اسمبلی را  معرفی  و   آپلود می کنم .  فقط  معرفی و آپلود .  


تاکید می کنم  اگر حوصله دارید و خسته نیستید  این فایلها را دانلود کنید . دوست ندارم اتفاقی که برای خودم افتاد خدای ناکرده برای شما  بیفتد .  پس قبل از دانلود فایلها  کمی فکر کنید.


+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+




وحید محمدی .  وبلاگ  وحیدمی 


http://vahidmy.blog.ir





بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764











programming by hex editor part 2








programming by hex editor part  2




https://vahidmy.blog.ir/post/29




بنام خدا


امیدوارم  از بخش اول آموزش برنامه نویسی با زبان ماشین (برنامه نویسی با هگز ادیتور)   استفاده کرده باشید و برایتان مفید بوده باشد .


در ادامه ی بحث ، تعدادی از کدهای هگزادسیمال زبان ماشین را رمزگشایی می کنم .


توجه داشته باشید که دانستن  معنا و مفهوم این کدها به شما در برنامه نویسی با زبان ماشین در محیط هگز ادیتور،    کمک بسیار بزرگی می کند . .  


  همانطور که در پست قبلی دیدید من از مبنای هگزادسیمال یعنی کدهای جدول  00  تا  FF  استفاده می کنم.


هرچیزی که در سمت چپ می نویسم  ، کد زبان ماشین است و چیزهایی که در وسط یا سمت راست است ، دستورات زبان اسمبلی و یا داده ها و کاراکترها می باشند .


کدهای زبان ماشین با تمامی کاراکترها مطابق هستند . بنابراین زبان ماشین تنها زبان برنامه  نویسی نیست بلکه زبان تولید کاراکتر و تولید فایل و .... نیز می باشد .


برخی کدهای زبان ماشین نیز با کاراکترهای غیرقابل رویت که اصطلاحا  به آنها کاراکترهای کنترلی گفته می شود ، مطابق می باشند .  


همچنین برخی کارکترها نیز با کلیدهای ترکیبی مثل  CTRL  ،  SHIFT  یا  کلید  SPACE  یا  ENTER  مطابق هستند. یعنی اگر یکی از این کلیدها را فشار دهید ان کاراکتر در محیط هگز ادیتور تایپ می شود و شما می توانید انرا ببینید !


خب اینها را  فعلا  به خاطر بسپارید:


سمت چپ:  کد زبان ماشین . وسط : کد زبان اسمبلی  . سمت راست : توضیح


MACHINE        ASSEMBLY           COMMENTS

===========================


75         JNE     ; JUMP IF ZF IS 0  . NOT EQUAL.


55       PUSH EBP     ;  STACK  FRAME  (RAM)

89E5       MOV EBP , ESP   


837D0C01     CMP  DWORD[EBP+12] , 01  

 

 ;  If  MESSAGE = &WM_CREATE

 






به کد آخری و توضیحاتش با دقت نگاه کنید . چه می بینید ؟؟؟؟


با یک نگاه  براحتی می توان فهمید که  کد  837D0C  با  دستور اسمبلی CMP    مطابقت دارد . یعنی  دو چیز را با یکدیگر  مقایسه می کند .  CMP مخفف  COMPARE است . یعنی مقایسه .


البته اگر بخواهم دقیقتر بگویم باید بگویم:  کد  837D0C  با عبارت                            CMP  DWORD   [EBP+12]

مطابقت دارد .

در زبان اسمبلی ، بجای if از  CMP  استفاده می شود .




همچنین  باید بدانید که عبارتی همچون  WM_CREATE درواقع یک ثابت سیستم عامل ویندوز محسوب می شود که  در اینجا یعنی در کد بالا   این عبارت   با کد هگز  01  مطابقت دارد  یعنی هنگام کامپایل ، به کد هگزادسیمال  01  که کد زبان ماشین است  ترجمه می شود .


ثابت یعنی چیزی که  از قبل توسط سیستم عامل تعریف شده و نمی توانیم از ان بعنوان متغیر در برنامه مان استفاده کنیم .



حالا این  [EBP+12]  دقیقا چیست ؟؟


 عبارت EBP+12   با     MESSAGE    مطابقت دارد .  منظور از  MESSAGE در اینجا  همان پیام هایی است که وارد پنجره ی اصلی نرم افزار ویندوزی می شوند.


پیام ؟؟؟


پنجره ؟؟؟



پیام  یعنی همان رویداد .  یعنی  چیزی شبیه به  رویداد  FORM_LOAD در زبان ویژوال بیسیک 6 


در اینجا  پیام  WM_CREATE  در زبانهای ماشین  و اسمبلی   با   رویداد   FORM_LOAD  زبان ویژوال بیسیک 6  مطابقت دارد !!


جالب است . نه ؟؟؟



خلاصه :


837D0C01 =  CMP  DWORD[EBP+12] , 01  =;  If  MESSAGE = &WM_CREATE



 در عبارت بالا براحتی توانستیم  کد 837d0C01  را رمزگشایی نماییم . ابتدا آنرا به کد  cmp dword[ebp+12] , 01  ترجمه کردیم و سپس این کد که  به زبان اسمبلی می باشد را به کد  If message=&WM_CREATE  ترجمه کردیم .


به همین راحتی توانستیم باینری را رمزگشایی نماییم .


+


در ویندوز حدود  255  رویداد با  پیشوند  WM    وجود دارد که کمک می کند تا در زبانهای  ماشین و اسمبلی از برنامه نویسی رویدادگرا  و شیئ گرا  (شبیه به ویژوال بیسیک و سی پلاس پلاس  )  استفاده کنیم .


مثلا  پیام  WM_MOUSEMOVE  در زبانهای ماشین و اسمبلی  همان  رویداد  MOUSEMOVE  در زبانهای  سطح بالا ( سی، سی پلاس پلاس  ، پاسکال ، بیسیک و ...)  می باشد .


WM  مخفف  عبارت    Window Message ( پیام ِ پنجره = رویداد ) می باشد .


بنابراین برخلاف انچه که تا به امروز دیده اید یا شنیده اید ، زبانهای ماشین و اسمبلی  زبانهایی سنتی و قدیمی و منسوخ  نیستند بلکه زبانهایی مدرن و کامل و البته رویدادگرا و شیئ گرا هستند .



در زبانهای ماشین و اسمبلی   بجای رویداد  از لفظ  پیام یا  MESSAGE  استفاده می شود .


پس فهمیدید که عبارتهایی شبیه به عبارت  EBP+12  هرکدام با یکی از عناصر سازنده ی پنجره ی اصلی  نرم افزارهای سیستم عامل ویندوز  مطابقت دارد .


از این به بعد در دیس اسمبلی نرم افزارهای ویندوز حتما به دنبال عبارتهایی شبیه به EBP+12  یا   EBP+0C  یا  EBP+8  و  امثالهم  بگردید . هرکدام یکسری از اسرار مخفی درون سیستم عامل ویندوز را برایتان بازگو می کنند.


برای اینکار لازمست که شما حتما  اسمبلر  RosAsm  را دانلود کرده باشید و با ان کار کرده باشید  و  ماکروهای سورس  برنامه هایش را نیز   unfold کنید  تا دقیقا متوجه شوید که هر ماکرو با کدامیک از این کدها  مطابقت دارد . 


اینها همگی عناصر سازنده ی پنجره ی اصلی نرم افزارهای ویندوز می باشند .


حالا که  معنای پیام و عبارتهای دارای پیشوند  WM  را فهمیدید  وقت ان رسیده که  به مفهومی دیگر بپردازم:

پنجره .


بله  پنجره . ویندوز یعنی  پنجره ها (Windows) :


ببینید !  تمامی نرم افزارهای  سیستم عامل ویندوز از پنجره ساخته شده اند . درواقع هر کدام از نرم افزارهای سیستم عامل ویندوز و همچنین تمامی فایلهای اجرایی ویندوز از یک یا چند پنجره تشکیل شده اند . به همین دلیل نام این سیستم عامل را ویندوز (پنجره ها ) گذاشته اند .


اگر شما برنامه نویس زبانهای ماشین  و اسمبلی باشید براحتی می فهمید که همه ی حرفهایی که  تاکنون علیه  ویندوز و شرکت مایکروسافت مبنی بر  کپی برداری رابط کاربری  ویندوز از روی مک یا  لینوکس   نوشته شده است   کاملا  دروغ و  نیرنگ دشمنان مایکروسافت بوده است و نباید این دروغها را باور کرد . 


زیرا تنها با کمک زبانهای ماشین و اسمبلی می توانید ویندوز را کالبدشکافی کرده و به تفاوت  بین  ویندوز و  سیستم عاملهای شبه یونیکس از قبیل لینوکس و مک  پی ببرید .


یکی از دلایل اصرارم  مبنی بر احیای زبانهای ماشین و اسمبلی دقیقا  رمزگشایی از همین معما می باشد .


قصد دارم به همه بگویم  که رابط گرافیکی ویندوز  و معماری اش  و کرنل اش و بسیاری از برنامه ها و سرویسهای  ویندوز  کاملا  مختص خود ویندوز هستند و  ویندوز هیچ چیزی از روی  مک یا لینوکس یا  بی اس دی یا یونیکس  کپی برداری نکرده است .


تمام اجزای ویندوز متعلق به خودش می باشد و هرگز از روی دست سیستم عاملهای دیگر  کپی برداری  صورت نگرفته است  . 


مایکروسافت هیچوقت  از روی دست هیچ شرکتی  کپی برداری یا دزدی نکرده  بلکه فناوریهای شرکتها  را  با  مبالغ بالا  و بصورت کاملا قانونی   می خریده   یا  اینکه خودش از پایه و از صفر می ساخته .

بنابراین هیچگونه سرقت و دزدی در کار نبوده و این یک تهمت  آشکار از طرف دشمنان ویندوز است که متاسفانه در سایتها و انجمنهایشان  وقیحانه به این تهمت و خیالبافی  ادامه می دهند .


فقط یک برنامه نویس زبانهای ماشین و اسمبلی می تواند بفهمد که آیا ویندوز از روی خودش ساخته شده یا از روی سایر سیستم عاملها  مشتق شده است . 


بجز زبانهای ماشین و اسمبلی هیچ زبان دیگری  این امکان را به شما نمی دهد که در این مورد  ویندوز را کالبد شکافی کنید و به اصالت ویندوز پی ببرید .



اسکلت هر نرم افزار ویندوزی از یکسری توابع  API  و یکسری  ثابت از جمله  پیامهای ویندوز  و عناصر پنجره  و یکسری دستورات زبان ماشین   تشکیل شده که اینها روی هم  یک پنجره را می سازند  و این پنجره ها  ذاتا متعلق به خود ویندوز است و هیچ ربطی به پنجره های سیستم عاملهای  مک و لینوکس  ندارد .

چون شما هیچ شباهتی بین توابع  سیستم عامل ویندوز و توابع  سیستم عاملهای مک و لینوکس نمی بینید . 


ویندوز هیچ شباهتی به مک یا لینوکس یا  آمیگا یا یونیکس   ندارد .  .


 ویندوز هرگز از روی  سیستم عامل مکینتاش یا  لینوکس  مشتق نشده است چون  از نظر معماری و  رابط گرافیکی  و سایر استانداردها  هیچ شباهتی بین  ویندوز و این دو سیستم عامل وجود ندارد  . زیرا  هم  مکینتاش و هم  لینوکس  ، سیستم عاملهای شبه یونیکس هستند و معماری شان  از معماری یونیکس  مشتق شده  ولی ویندوز معماری خاص و منحصر به خودش را دارد . 


رابط گرافیکی کاربر ویندوز و نرم افزارهایش کاملا از  دستورات زبان اسمبلی اینتل و توابع API ویندوز  ساخته شده که این توابع  API توسط زبانهای اسمبلی و  سی  و بدست خود مایکروسافت و از پایه ساخته شده اند .  


با  مطالعه ی دیس اسمبلی  کرنل ویندوز یعنی فایلهای زیر براحتی می توان فهمید که هیچ چیز ویندوز از مک  یا  لینوکس  اقتباس و کپی نشده است :


USER32.DLL

KERNEL32.DLL

NTDLL.DLL

ADVAPI32.DLL

SHELL32.DLL


به بحث اصلی ام باز می گردم :


عبارتهایی همچون  [ EBP+12] و بطور کلی هر عبارتی که در کروشه و همراه با  رجیستر   EBP  باشد و شما احتمالا در دیس اسمبلی نرم افزارهای ویندوز مشاهده کرده اید  معمولا  با یکی از این  انواع داده  مطابقت دارد :

[EBP+12]    =  MESSAGE        


برای انکه خودتان سریعتر به نتیجه برسید و وقتتان تلف نشود  توصیه می کنم حتما  سورس اسمبلر  RosAsm  را  مطالعه کنید . اطلاعات بسیار خوبی در این زمینه (رمزگشایی کدهای زبان ماشین )    به شما می دهد .  


برای  رمزگشایی کدهای هگزادسیمال زبان ماشین  ، می توانید  از اسمبلر  RosAsm  و  برنامه ی قدرتمند   C32asm  استفاده کنید . 


من لینک دانلود  برنامه ی قدرتمند  C32asm را همینجا می گذارم . لطفا انرا دانلود کنید و با کمک دیس اسمبلرهایش ، به رمزگشایی کدهای هگزادسیمال زبان ماشین بپردازید و این رمزگشایی را با  ابزار  encoding  و همچنین سورس  اسمبلر  RosAsm  مقایسه کنید .

 

این روش ِ من برای رمزگشایی زبان ماشین   است .    البته برنامه ی قدرتمندی همچون   Ollydbg  نیز می تواند در این مسیر به شما کمک کند . 


لینک دانلود نرم افزار قدرتمند  C32asm (هگز ادیتور و ری اسمبلر) :




http://bayanbox.ir/download/8321732658963774080/c32asm.rar





 بدلیل کثرت  کدهای زبان ماشین ، من برای جلوگیری از اتلاف وقت ،  کار رمزگشایی را برعهده ی خودتان می گذارم  و  از پست بعد به  مباحث اصلی می پردازم .


در پست بعد می خواهم   معماری  یک نرم افزار ویندوزی را برایتان  انالیز کرده و بصورت دستی و روی کاغذ (وبلاگ)  و با کمک کدهای زبان ماشین   توی همین وبلاگ برایتان یک نرم افزار بسازم !


کل اجزای این نرم افزار در قالب یک پست با دست نوشته می شود و شما می توانید انرا به درون یک هگز ادیتور (ستون وسط هگز ادیتور )  کپی  کرده و ذخیره کنید و بعد نرم افزار را  اجرا کنید و لذت ببرید .


هیچ نیازی به کامپایلر ندارید . زیرا همانطور که گفتم هگز ادیتور  محیط برنامه نویسی زبان ماشین است و زبان ماشین نیز خودش یک زبان از قبل کامپایل شده است و مجددا کامپایل نمی شود .

پس هر نوع تغیراتی را کافیست  فقط  ذخیره  کنید : Save  .




پس یادتان باشد . پست بعدی : انالیز معماری نرم افزارهای ویندوز  و ساخت  دستی یک نرم افزار ویندوزی  می باشد . یعنی  یک نرم افزار ویندوزی را با دست توی همین وبلاگ می سازم . انشاء ا...



ادامه دارد....

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+



وحید محمدی  -  وبلاگ  وحیدمی 


https://vahidmy.blog.ir



 




بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764











 




programming by hex editor part 1







https://vahidmy.blog.ir/post/28





In the name of  GOD



programming by hex editor part 1



The  machine code  is  The  KING  of  programming  languages. 


The  machine code  is  REAL  programming  language.


Other  programming  languages  are  pseudo  code:


No HLLs  (fortran,cobol,lisp,ada,pascal,basic

,forth, algol, C ,

C++, C#  , D ,B , BCPL, java, python,perl,ruby, A+ ,vala ,foxpro,

,rust,swift,Go ,php,html,Css,Asp,ASP.Net,plain English programming , …………….).


     No Assembly (masm,nasm,fasm,goasm,tasm

,RosAsm,Uasm,

vasm,Yasm,Gas,HLA,...………).



 The Machine code  only .  


The Machine code is  Real  programming language.


The Machine  code is  Open source  :  Binary = Source



Vahid  mohammady . Iran.


https://vahidmy.blog.ir



Binary (machine code)  :  0  1


Hexadecimal  table (machine code):


00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f

30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f

40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f

60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f

70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f

80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f

90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f

a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af

b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf

c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf

d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df

e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef

f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff






بنام خدا


برنامه نویسی با هگز ادیتور  بخش 1 :


 همانطور که در پست قبلی  گفتم ، عملا قصد دارم از این پست به بعد روش برنامه نویسی با زبان ماشین  (برنامه نویسی با هگز ادیتور )  را به  شما  مخاطبین عزیز یاد بدهم .


این متونی که در بالا به زبان انگلیسی  دیدید    یک بیانیه ی سیاسی علیه تمامی زبانهای سطح بالا و حتی تمامی کامپایلرهای زبان اسمبلی بود . درواقع نوعی اعتراض به عملکرد اشتباه دانشمندان علوم کامپیوتری بود .  عملا  به اختراع زبانهای سطح بالا و  کامپایلرهای زبان اسمبلی اعتراض کردم  .  این بیانیه ی سیاسی  را   عمدا  به انگلیسی نوشتم تا همه ی دنیا صدایم را بشنود .


البته من هرگز  زبان ماشین را به زور توی حلق کسی فرو نمی کنم . فقط می خواهم بگویم  که زبان ماشین  تنها زبانی است  که یادگیری اش بر هر کاربر کامپیوتر  واجب و لازم است .


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


بهرحال  من کسی را به زور وادار به یادگیری زبان ماشین نمی کنم .   من جلوی آزادی کاربران را نمی گیرم  و دیکتاتور نیستم . 



صرفا اگر می خواهید به  حقایق مخفی و جذاب دنیای کامپیوتر  دست یابید  این مطالب را  پیگیری کنید . هیچ اجباری در کار نیست .


بهرحال من  رسما  از اینجا به بعد فقط با زبان ماشین سروکار دارم و به هیچ زبان دیگری  اعتنا نمی کنم .



دوز  دیوانگی ام  از  پروفسور رنه تورنویس ( خالق  اسمبلر  RosAsm ) بیشتر است !!


اگر  رنه  تورنویس  فقط با زبانهای سطح بالا و برخی اسمبلرها  مخالف بود ، من نه فقط با زبانهای سطح بالا  بلکه حتی با زبان اسمبلی هم مخالف هستم چون حتی زبان اسمبلی هم  زبانی ساختگی و تصنعی است و هرگز زبان واقعی کامپیوتر محسوب نمی شود .


جمیع زبانهای برنامه نویسی سطح بالا و سطح پایین  ، زبانهایی ساخت دست بشر و مصنوعی و فریبنده هستند .


کامپیوتر هیچ زبانی بجز زبان ماشین را نمی فهمد .  فکر نمی کنم  درک کردن اش  سخت باشد .


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


من زبان ماشین را بر مبنای  هگزادسیمال  یاد می دهم . یعنی طبق همان جدول بالا  ( 00 تا  FF ) . 


زبان ماشین  یک زبان عددی است و بر 4  مبنا  قابل استفاده است :


 باینری ( 0 و  1 )   ( مبنای اصلی که  مستقیما توسط  پردازنده درک و اجرا می شود)


هگزادسیمال ( 0 تا 9 و   A   تا  F ) 


دسیمال ( 0 تا 9 )  اعداد طبیعی قابل فهم برای انسان


اوکتال ( 0 تا 8 ) اعداد طبیعی قابل فهم برای انسان .  این مبنا  منسوخ شده است .




من برای سادگی کار  و در جهت ساده کردن سیستم ،  فقط مبنای  هگزادسیمال را که   در بالا  جدول کامل اش را نوشتم  بکار می برم . 


من اهل  تبدیل  مبناهای زبان ماشین نیستم .  از اول تا   آخر  فقط با کدهای هگزادسیمال کار می کنم .  زیرا اساس  هگز ادیتورها  نیز بر مبنای هگزادسیمال است  .


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

نه .  من فقط از مبنای هگزادسیمال استفاده می کنم . 


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



برای شروع تدریس فعلا این چیزها را  بخاطر بسپرید :


 4D5A   = MZ  (مارک زبیکووسکی معمار سیستم عامل داس)


5045 =  PE = PE FILE FORMAT (فایل اجرایی قابل حمل)


4C01  =  INTEL  8086/80286/80386/80486/PENTIUM/CORE I3/I5/I7.... 32 bit = x86 intel 


6A00 = PUSH 00  =  PUSH MB_OK  = OK


FF15401000  =  CALL WIN32 API HINT


74 = JZ  (JUMP IF ZERO FLAG IS 1) =  EQUAL

75 = JNZ (JUMP IF ZERO FLAG IS 0) = NOT EQUAL


C3 = RET = RETURN TO OS


CC  =  HLT  =  HALT OF CPU 


E8= direct call = فراخوانی مستقیم روتین های داخلی نرم افزار





+

+

بروزرسانی :


برای رمزگشایی کد هگزادسیمال E8 باید از نرم افزار اسپیرو (Spiro) یا c32asm استفاده نمایید . 


نرم افزار Spiro را می توانید از آرشیو وبلاگ وحیدمی با لینک مستقیم ، دانلود نمایید


آرشیو وبلاگ وحیدمی:


https://vahidmy.blog.ir/archive


بایگانی مطالب :: vahidmy (blog.ir)



 برخلاف کد هگزادسیمال FF15 که به معنای فراخوانی آدرس مربوط به کتابخانه ها و توابع ویندوز می باشد و یک نوع فراخوانی به خارج از نرم افزار محسوب می شود و فرمول ساده ای دارد ، متاسفانه  کد E8 اصلا و ابدا فرمول خاصی ندارد و رمزگشایی از این کد و تبدیل کردن این کد به کدهای اسمبلی کار بسیار دشواری است و فقط می توان از طریق نرم افزار Spiro  تا حدودی این کد را رمزگشایی نماییم . 


نام کامل نرم افزار اسپیرو:


Spiro memory hacking 


کافیست کلمات کلیدی با عناوین زیر را جستجو کنید تا به آدرس و لینک دانلود نرم افزار Spiro وارد شوید و بتوانید این نرم افزار قدرتمند را دانلود نمایید :


کلمات کلیدی مربوط به نرم افزار اسپیرو :

Spiro  

Spiro memory hacking

نرم افزار کشف کدهای تقلب بازی 

هک حافظه ی رم 

اسپیرو 

اسپیرو مموری هکینگ


ابتدا باید فایل اجرایی اسپیرو را اجرا کرده و سپس از طریق حالت debug ، نرم افزار یا بازی ویندوزی مورد نظرتان را اجرا کنید سپس به بخش disassembly  مراجعه کنید و روی تمام کدهای E8 کلیک کنید تا بتوانید آنها را رمزگشایی نمایید . 




البته c32asm نیز تا حدودی خوب است ولی نه به خوبی Spiro  


شاید بتوانید از ابزار Encoding درون RosAsm نیز برای رمزگشایی کدهای زبان ماشین  و کشف اسرار معماری نرم افزارها و کتابخانه ها و درایورهای ویندوز ، استفاده نمایید. 


تاریخ بروزرسانی :

یکشنبه مورخ 26 شهریور سال 1402 خورشیدی برابر با 17 سپتامبر سال 2023 میلادی 

+

+

+


ادامه ی متن اصلی و قدیمی این پست :


علی الحساب این کدهای هگزادسیمال زبان ماشین را بخاطر بسپارید و یاد بگیرید و آنها را در دیس اسمبلی  نرم افزارهای ویندوز ، پیدا کنید .


بقیه ی کدهای زبان ماشین را در پست بعدی ، رمزگشایی می نمایم .  


در پستهای بعدی دلایل  بکارگیری زبان برنامه نویسی ماشین را  برایتان شرح می دهم .


همچنین ، شما را با معماری دقیق  نرم افزارهای سیستم عامل ویندوز ، آشنا  می کنم .


توجه داشته باشید که برای برنامه نویسی با زبان ماشین  باید از hex editor  استفاده کنید .


به همین علت  ، عنوان این پست و پستهای بعدی را   برنامه نویسی با هگز ادیتور  گذاشته ام .


Programming by hex editor



در دنیا هزاران hex editor   ( هگز ادیتور )  وجود دارد .  هرکدام را که انتخاب کنید  فرقی نمی کند .


زیرا زبان ماشین  از تمامی هگز ادیتور های دنیا بعنوان  IDE  ( محیط برنامه نویسی )  استفاده می کند  و به هیچ   هگز ادیتوری  وابستگی ندارد  . 


زبان ماشین از نظر  IDE  واقعا  عالی و بی نظیر است.  شما  از هر هگز ادیتور  دلخواهی می توانید بعنوان  IDE  در جهت  برنامه نویسی با  زبان ماشین استفاده کنید . دست تان کاملا باز است  .


نکته  : زبان ماشین  به کوچکی و بزرگی حروف حساسیت ندارد . بنابراین عملا کدهای زبان ماشین  چه بصورت حروف بزرگ نوشته شوند و چه حروف کوچک ، تغییری در نتیجه ندارند .  البته تقریبا تمامی هگز ادیتورهای دنیا ،  کدهای هگزادسیمال زبان ماشین را با حروف  بزرگ نشان می دهند .

ولی استفاده از حروف کوچک  هیچ ایرادی ندارد .


مثلا  بین FF15  و  ff15   هیچ فرقی وجود ندارد چون هردو به معنای call  می باشند و  آدرس مربوط به توابع API ویندوز را احضار می کنند   یا بین  6A00  و   6a00  نیز هیچ فرقی وجود ندارد زیرا هردو  باعث تولید دکمه ی  ok  می شوند.


این هم یکی از مزایای زبان ماشین نسبت به تمامی زبانهای سطح بالا و سطح پایین می باشد .


در پستی جداگانه تمامی مزایای زبان ماشین نسبت به زبانهای سطح بالا و سطح پایین را  تشریح می کنم .


اگر عمری باشد  سعی دارم خیلی تند  تند ، مباحث مربوط به زبان ماشین و روش برنامه نویسی با هگز ادیتور را  منتشر کنم .  پس پیگیر مطالب بعدی این  وبلاگ باشید  .


 فراموش نکنید که   زبان ماشین یعنی قدرت. 


یک نکته ی ظریف و جالب:  در زبان ماشین ،  سورس و باینری یکسان هستند . یعنی شما از همان اول با کدهای زبان ماشین که  باینری نامیده می شوند برنامه می نویسید .


Binary = Source


بنابراین هیچ نیازی به  کامپایلر یا اسمبلر و لینکر ندارید .  کافیست تغییرات را ذخیره کنید . تمام . نرم افزار اماده ی استفاده است !!


لطفا  در پستهای بعدی نیز همراه من باشید   چون قصد دارم  اسرار هگز ادیتورها  را  که هیچکس در دنیا  برایتان بازگو  نمی کند    فاش کنم .   


با تشکر .


نکته ی مهم :

برای برنامه نویسی با هگز ادیتور پیشنهاد می کنم که هگز ادیتورهای لازم برای اینکار را از پست زیر دانلود نمایید :


  http://vahidmy.blog.ir/post/The-Machine-Code-IDE


+

+


مقاله مرتبط: 

روش عملی برنامه نویسی با هگز ادیتور 


نمونه یک نرم افزار غیرمتعارف و عجیب که با هگز ادیتور ساخته می شود و روی ویندوزهای قدیمی قبل از ویندوز ویستا  اجرا می شد اما از ویندوز ویستا به بعد ؛ این نرم افزار اجرا نمی شود : 


نام نرم افزار:  00FF.exe


 پست آموزش ساخت نرم افزار 00FF 


عنوان پست :

  00FF 


آدرس پست: 



https://vahidmy.blog.ir/post/276



+

+

+

بروزرسانی شماره 2 :


برای افشای اسرار هگز ادیتورها ، مجبورم احتیاط کنم و به قول معروف ، دست به عصا حرکت کنم تا زمینه ی سو استفاده ی هکرهای کلاه سیاه و مجرمان سایبری فراهم نشود .

لذا من در پست های بعدی سعی کرده ام بصورت جسته  و گریخته و کاملا نامنظم و مبهم و گنگ ، یکسری مطالب ناقص را منتشر نمایم . اینکار کاملا تعمدی است زیرا اصلا دوست ندارم به قدرت هکرهای کلاه سیاه و مجرمان سایبری اضافه نمایم و ناخواسته امنیت ویندوز را نابود کنم . 


من در تصمیم ام تجدید نظر کردم و اسرار هگز ادیتورها و برنامه نویسی با زبان ماشین را با خودم به گور می برم تا امنیت فضای مجازی و دنیای واقعی ، تامین شود . 


زکات علم ، نشر علم است اما به اهل اش . هکرها اهلیت ندارند و در دنیای بی در و پیکر فضای مجازی ، نباید هرچیزی را به زبان آورد یا منتشر نمود . 


بنابراین من مجبورم  پروژه ی برنامه نویسی با هگز ادیتور و افشای اسرار هگز ادیتورها را نیمه کاره رها کنم تا امنیت مردم به خطر نیفتد و هکرها و اتکرها را ناامید و سرخورده و مایوس نمایم . 


بنابراین چیزی به نام اسرار هگز ادیتورها یا برنامه نویسی با زبان ماشین یا برنامه نویسی با هگز ادیتور یا برنامه نویسی بدون باگ ،  اصلا وجود ندارد و اینها فقط در توهمات ذهنی خودم بودند !!!!


من این توهمات را با خودم به گور می برم تا امنیت خودم و شما را تامین کرده باشم . 


جز راست نباید گفت 


هر راست نشاید گفت 


آنکه را اسرار حق آموختند 


مهر کردند و دهانش دوختند . 


والسلام . 


تاریخ بروزرسانی :


یکشنبه مورخ 26 شهریور سال 1402 خورشیدی برابر با 17 سپتامبر سال 2023 میلادی 


این آخرین بروزرسانی برای این پست می باشد . 


فقط یک چیز را می توانم بگویم :


هگز ادیتور یعنی همه چیز 

باینری یعنی همه چیز 


تمام موضوعات وبلاگ وحیدمی حول محور زبان ماشین می چرخند !! 




پایان 


+

+

+



موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


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


+



وحید محمدی -  وبلاگ  وحیدمی  



https://vahidmy.blog.ir


https://vahidmy.blog.ir/sitemap.xml







بروزرسانی: 

براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها  ؛ حذف شدند . 


لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری . 


تاریخ بروزرسانی 


یکشنبه مورخ  29 مرداد 1402 خورشیدی 


نکته : 

آدرسهای  آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید . 




در پناه خداوند متعال عظیم الشان باشید 

ِ

الهم  عجل  لولیک الفرج . 



امضای همیشگی اینجانب  در جهت تایید صحت و درستی مطالب وبلاگهایم   : 


وحید محمدی . وبلاگ  وحیدمی 


https://vahidmy.blog.ir





https://vahidmy.blog.ir/archive


https://vahidmy.blog.ir/post/764