vahidmy

وبلاگ شخصی وحید محمدی

vahidmy

وبلاگ شخصی وحید محمدی

وحیدمی

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


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

Home Page


https://vahidmy.blog.ir

+


Archive

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

https://vahidmy.blog.ir/archive

+


نقشه وبلاگ وحیدمی:

Sitemap

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

+

خوراکخوان وبلاگ وحیدمی

Feed

RSS

https://vahidmy.blog.ir/rss

+

آدرس مورد استفاده خزنده ها روباتها و موتورهای جستجوگر

Robot

https://vahidmy.blog.ir/robots.txt


+

مشخصات وبلاگ وحیدمی:


ساعات انتشار پست جدید وبلاگ :

بیست و چهار ساعته

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


نام مدیر : وحید محمدی

گونه : وبلاگ شخصی با آدرس اختصاصی و محتوای عمومی

ژانر : تمام ژانرها

کاربرد : همه منظوره

هدف وبلاگ : به اشتراک گذاشتن دانش و تجربه با مردم و پرداخت زکات علم

مقصد مدیر وبلاگ : کسب رضای خداوند .

جنس وبلاگ : وبلاگ شخصی

تاریخ تاسیس : تیر 1398 خورشیدی



موضوعات وبلاگ : تمام علوم و فنون و مسائل مختلف در تمام زمینه


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

بروزرسانی:

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

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



آدرس وبلاگهای تخصصی :

https://spasm.blog.ir

https://fasmy.blog.ir

https://binasm.blog.ir

طبقه بندی موضوعی
بایگانی
مطالب پربحث‌تر
  • ۰۱/۰۴/۱۱
    adc
نویسندگان
پیوندها


به نام خدا


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



دیروز و امروز طی چند آزمایش جالب در وبسایت دیکامپایلر اکسپلورر  که بصورت آنلاین (بر خط ) ، از دیکامپایلرهای مشهور جهان از جمله  باینری نینجا  Binary Ninja  و آیدا پرو  IDA PRO   و بومرنگ ، استفاده می کند متوجه شدم که هیچکدام از دیکامپایلرهای این وبسایت ، قادر نیستند کد منبع زبان برنامه نویسی انگلیسی را که به زبان انگلیسی نوشته شده است و شما آن را از پست قبلی این وبلاگ ؛ دانلود کردید؛؛   استخراج کنند و بجای آن ، زبان اسمبلی سطح بالا را نمایش دادند !!



بنابراین توصیه می کنم هرگز زبان برنامه نویسی انگلیسی را از پست قبلی این وبلاگ ؛  دانلود نکنید زیرا این زبان ؛ به هیچ دردی نمی خورد و کارایی ندارد ! 




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




حتی باینری نینجا Binary Ninja   که قدرتمندترین دیکامپایلر جهان می باشد  و خاصیت ریکامپایل Recompile و مهندسی معکوس واقعی  نیز  دارد ؛  هم ؛  از استخراج کد زبان سطح بالا عاجز شد  !




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




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




کامپایلر - Compiler -هرگز کد زبان سطح بالا -HLL -  از قبیل پاسکال- Pascal -  یا بیسیک - Basic - یا سی پلاس پلاس - C plus plus  - را مستقیما به کد زبان ماشین  - Machine Code -  ؛ ترجمه نمی کند  که اگر ترجمه می کرد ؛ آنگاه دیکامپایلرهایی همچون آیدا پرو  IDA PRO یا باینری نینجا - Binary ninja-  می توانستند کد زبان سطح بالا -HLL - را از درون نرم افزارها  استخراج کنند ! 



اما در عمل  و در دنیای واقعی ؛؛ ؛ این  دیکامپایلرها -Decompilers - فقط کد زبان اسمبلی -Assembly Language - را نمایش می دهند !!!!  



این ثابت می کند که کامپایلر -Compiler - طبق تعریف صحیح و  واقعی ؛ چنین برنامه ای است : 



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



همچنین  این آزمایشات ثابت کردند که کد منبع -Source Code - هیچ زبان سطح بالا -HLL- بخصوص زبان برنامه نویسی انگلیسی -Cal3040   یا  Cal4700   یا  EnglishPL- را نمی توان بدست آورد. 




و یک چیز دیگر را نیز ثابت کرد :




دیکامپایلر  ، یک نرم افزار گول زننده و ضعیف است که هرگز نمی تواند هیچ مشکلی را حل کند و مثلا نمی تواند کدی را که  دیکامپایل نکرده اما دیس اسمبل -DisAssemble- کرده است را  مجددا ، ری اسمبل -ReAssemble- نماید !!



البته بجز  Binary  Ninja  که توانایی  ReAssemble  را دارد . 






در حالیکه دیس اسمبلر -DisAssembler - می تواند کد را مجددا ری اسمبل -ReAssemble - نماید . 


مثل دیس اسمبلرهای زیر که خاصیت ری اسمبل و مهندسی معکوس را  نیز دارند : 


C32Asm


OLLYDBG


X86/x64DBG


Spiro


RosAsm 



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




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



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




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




دیس اسمبلی = سورس کد = کد منبع 


DisAssembly=Source Code





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




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




من اینکار را در اسمبلرهای قدرتمند و خالص و استاندارد یعنی  Fasm و RosAsm انجام می دهم 




در RosAsm  حتی بدنه ی اصلی روال ها و توابع نیز با کدهای دیس اسمبلی نوشته می شود 



مثال :


push ebp


mov ebp , esp 



.....


.....


mov esp , ebp 


pop ebp 



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




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




حالا من در زبان اسمبلی و خصوصا در RosAsm   و  Fasm ، از همان ابتدای کار ،  کد برنامه ام را به شکل بالا می نویسم . 



بعد که برنامه را اسمبل -Assemble - کردم و سپس آنرا با کمک یک ابزار مهندسی معکوس از قبیل  RosAsm  یا  ollydbg  یا  x86/x64dbg  یا  borg disassembler  یا ida pro disassembler  یا  Binary ninja     یا  c32asm  ،  دیس اسمبل -DisAssemble - نمودم ، می بینم که  کد خروجی همان کد ورودی است !!




یعنی دیس اسمبلی مساوی است با سورس 




در زبان اسمبلی  RosAsm  ،  کد منبع ، همان کد مقصد  می باشد . 




در زبان برنامه نویسی ماشین یعنی هکس ادیتور - hex editor - هم که ناگفته پیداست که کد مقصد ؛؛  همان کد منبع است . 



یعنی در  هکس ادیتور - Hex Editor - که همان زبان ماشین می باشد ؛ شما از همان ابتدای کار ؛  با کد مقصد؛؛؛ یعنی کدهای از پیش کامپایل شده یا  PreCompiled ,  برنامه تان را می نویسید !!





اگر شما عادت کنید که کد منبع برنامه تان را به سبک دیس اسمبلی یا به سبک hex editor   بنویسید یعنی کد برنامه تان را با کمک کد مقصد بنویسید ؛   آنوقت هرگز به دیکامپایلر نیاز نخواهید داشت و فقط یک دیس اسمبلر ساده از قبیل خود RosAsm یا خود hex editor  یا  هرکدام از ابزارهایی که نامشان را در بالا ذکر کردم ، کافی  می باشد . 




این سبک از برنامه نویسی ، کار شما را آسانتر می کند و زحمت شما را کمتر می نماید و وقت شما را هدر نمی دهد . 




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





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




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




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




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




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




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



بله شما راست می گویید : هر زبان برنامه نویسی برای کار خاصی ساخته شده است  و هیچ زبانی بهترین زبان نیست اما اگر این زبان ، یک زبان سطح بالا باشد!!




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





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






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



+


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




https://dogbolt.org


نام وبسایت :


Decompiler Explorer



در وبسایت دیکامپایلر اکسپلورر ، شما می توانید بصورت آنلاین  و پس از کلیک بر روی دکمه ی Choose File ، شاهد یک چیز جالب باشید : 



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





هرگز فریب چیزهایی که در بخش Select a Sample  می بینید را نخورید !




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




در دنیای واقعی یعنی پس از کلیک روی دکمه ی Choose File ، شما فقط یک چیز را خواهید دید :



اسمبلی سطح بالا !!!



حقیقتا دیکامپایلر ، دروغ بزرگ قرن است . 




من فقط یک دیکامپایلر واقعی را می شناسم :


VB Decompiler pro



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




اما اگر در حالت Native-code  کامپایل کرده باشید ، حتی این برنامه هم ،  بجای کد زبان بیسیک ،  کد زبان اسمبلی  را نمایش می دهد . 




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




زیرا متاسفانه تمام زبانهای سطح بالا ،  هنگام کامپایل برنامه ها ،  بسیاری از اجزای مفید و ضروری از قبیل متغیرها  و  سمبولها  را نابود می کنند !




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




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


+
+
+


یک اتفاق وحشتناک !

تکرار یک کابوس در ایران ! 

داشتم بصورت فی البداهه و از روی حافظه ی کوتاه مدت ام  می نوشتم که برق مجددا قطع شد و رشته ی افکارم پاره شد !! 


الان این قسمت پایانی این پست  را از داخل گوشی هوشمند ادامه دادم !!



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



اما هرگز کد منبع اولیه را نخواهید دید مگر اینکه کد  منبع اولیه که بکار برده اید ؛ کد زبان اسمبلی  باشد ! 




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



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




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




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




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



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




ایده: 

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



بله درست متوجه شدید : 


ثروت 


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




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


بصیرت 



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


Fasm 


RosAsm 


هرکس بر این دو کامپایلر قدرتمند زبان اسمبلی ؛ مسلط شود ؛  مهندس کامپیوتر خواهد شد ! 




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




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


تجربه هرگز دروغ نمی گوید . 



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




اگر می خواهید ثروتمند و محبوب و  معروف و  قدرتمند و  رهبر فضای مجازی بشوید ؛ فقط با زبان اسمبلی و بطور ویژه با   Fasm  و RosAsm  برنامه نویسی نمایید . 




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




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




زبان اسمبلی ؛ یک تایپیست ساده را به یک مهندس کامپیوتر  تبدیل می کند ! 





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




+
+


پایانی بر زبانهای سطح بالا