Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

Share what I know............... learn what I don’t

آخرین نظرات

۵ مطلب با موضوع «برنامه نویسی» ثبت شده است

Reference count یا Load count یک DLL یعنی تعداد دفعاتی که این کتابخانه در داخل پروسس بارگزاری می شود. هر زمان که این DLL (از طریق LoadLibrary) در داخل پروسس بارگزاری شود ,reference count یک واحد افزایش پیدا می کند و هر زمان که این DLL آزاد می شود (از طریق FreeLibrary) از پروسس,reference count یک واحد کاهش پیدا می کند. زمانی که reference count به صفر برسد, کتابخانه بطور کامل از فضای پروسس unmap می شود.

API های ویندوز اطلاعات زیادی در مورد DLL ها ارائه نمی دهند.

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

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


برنامه نویسی و سورس کد



http://www.learnpython.org

همونطور که از اسمش مشخصه برای آموزش زبان پایتون هستش(زبان فارسی هم داره)

البته آموزش زبان های دیگه ای هم مثل C , C# , PHP, JS, Java, Shell رو داره,جالبی این سایت داشتن مفسر و کامپایلر آنلاین هستش:)


https://compilr.com

http://www.compileonline.com

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



http://www.sourcecodeonline.com

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



دیس اسمبلر های آنلاین



http://www.onlinedisassembler.com/odaweb

دیس اسمبلر آنلاین با قابلیت پشتیبانی چندین معماری


https://pyms86.appspot.com

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


http://www.e-tradition.net/bytes/6502/disassembler.html

یک دیس اسمبلر برای 6502/6510 MPU که با جاوا اسکریپت نوشته شده



Deobfuscate آنلاین برای کدهای ماشین



http://opticode.coseinc.com

سایتی که کدهای مبهم شده ( obfuscate) رو Deobfuscate میکنه



Decompiler های آنلاین



http://www.javadecompilers.com

دیکامپایلر آنلاین برای جاوا


http://www.decompileandroid.com

دیکامپایلری برای فایل های APK اندروید


http://www.showmycode.com

دیکامپایلر و decoder آنلاین برای جاوا, dotNet , swf ,php و QR 



این یک کتابخانه ی ویندوزی هستش که وابسته به کتابخانه های پشتیبانی شده نیست. شما می تونید ازش برای خوندن شماره سریال هارد دیسک استفاده کنید,همانطور که می دونید این شماره سریال منفرد هستش و از این شماره سریال می تونید برای ساختنن یک Machine ID یا encrypt number استفاده کنید.

بیشتر زبان های برنامه نویسی رو هم پشتیبانی می کنه.

خصیصه های اصلی:

* Easy to obtain the serial number of hard disk.
* Any operation can not to change the serialnumber of harddisk, include Format and Partition etc.
* Retrieve REAL serial number of hard disk. NOT Partition ID, NOT Volume ID.
* Support reading several physics hard disks.
* Many development languages are supported, such as the Delphi, C++Builder, VC, C#, VB, VB.NET, PowerBuilder, Visual Foxpro, Microsoft VBA, Clarion etc is available.
* Read more parameters, such as Model Number, Revision Number, Buffer Size, Cylinders, Heads, Sectors per track, etc.
* Not require administrator rights in Windows 7/Vista/2003/XP/2000/98.


لینک دانلودش اینجاس , این نسخه trial هستش.


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


نسخه های VB.NET که پشتیبانی میشن:
2003, 2005, 2008, 2010, 2012, 2013 


هر نوع پروژه ای هم قابل تبدیل هستش:
Win Forms, Web, Class Library, Compact Framework, Silverlight و ..

آخرین ویژگی هایی هم که به زبان VB اضافه شده هم پشتیبانی شده مثل:


Await/Async
Multiline Lambdas
Implicit Line Continuation
Auto-Implemented Properties
Collection Initializers
Array Literals
Nullable Optional Parameters
Generic Variance
LINQ
WPF applications
In line XML w/"code holes"
The new "If" operator
Object initializers
Extension methods
Lambda expressions
Nullable data types
Implicit types
Anonymous types

etc...

خصیصه های اصلی:

Support for the latest Visual Studio features - The latest VB.Net / C# features are supported, including Await/Async, Implicit Line Continuation, Multiline Lambdas, Nullable Optional Parameters, LINQ, XML, WPF, Lambda expressions, and extension methods.
Support for All Project Types - Win Forms, Web, Class Library, Compact Framework, Console, etc.
High Accuracy - This release was stress tested on thousands of sample programs. Tested were hundreds of Microsoft sample projects (Visual Studio SDK samples, DirectX SDK projects, Windows 7 SDK samples, etc.), in house and customer projects, third party control samples (Infragistics, ComponentOne, Telerik, etc.), and open source projects from SourceForge and CodePlex.
Ease of Use - While the conversion logic itself is complex, using the converter isn't.  You are guided through each step of the process with easy, clear instructions.
Customization - Not every project is the same.  With dozens of conversion options to choose from, you are in control of the conversion process.
Convert Single Projects or Groups of Projects - You can create lists of programs and convert them with one click.  There's also a command line version included.
Comprehensive Reporting - There are reports showing potential trouble spots in your code, interesting things which happened during the conversion process, and any C# compiler errors which need to be fixed.


خود سایتش ادعا کرده که پروژه 5 میلیون خطی هم باهاش convert کرده و روی حدود 8هزار پروژه هم تست شده.به نظر که عالیه واسه کسایی که قرار یه پروژه مشابه با زبان سی شارپ بنویسن و میتونه کمک زیادی کنه.

میتونید از سایتش این نرم افزار رو دانلود کنید:
که البته رایگان نیست
help ها و مثال هایی هم توی سایت هستش که اگه قصد استفاده ازش رو دارید میتونه بهتون کمک کنه.

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

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

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

 

پیش زمینه:

BIT : کوچکترین قسمت داده ای که یا 0 هستش یا 1

مثال: 00000001 = 1       00000010 = 2             00000011 = 3    

 

BYTE: یک بایت حاوی 8 بیت است که می تواند 255 حالت را بسازد.(0 تا 255)

 

WORD: یک WORD حاوی 2 بایت یا 16 بیت است.و بیشترین حالت ممکن آن 0FFFFh (یا 65535) است.

 

DOUBLE WORD: حاوی 2 تا WORD یا به عبارتی 32 بیت است و بیشترین مقدار ممکن آن 0FFFFFFFF (یا 4294967295) است.

 

KILOBYTE: یک کیلوبایت برابر با 1024 بایت (32*32) است.

 

MEGABYTE: محتوی 1024*1024 یا 1,048,578 بایت است.

 

قسمت اول: رجیسترها

 

در IA-32 هشت رجیستر عمومی وجود داره:

EAX:   Extended Accumulator Register

EBX:   Extended Base Register

ECX:   Extended Counter Register

EDX:   Extended Data Register

ESI:    Extended Source Index

EDI:    Extended Destination Index

EBP:   Extended Base Pointer

ESP:   Extended Stack Pointer

 

البته بغیر از اینها رجیسترهای دیگه ای هم وجود داره مثل EIP که حاوی اشاره گری به دستور جاری هستش.البته لازم نیست زیاد نگران باقی رجیسترها باشید.

توجه کنید که همه نام ها با حرف E شروع شده اند که این بمعنی 32 بیتی بودن آنهاست.