Tag: RCE

[Bài dịch] Hacking de4dot for fun

Xin chào các bạn,

Hôm nay xin giới thiệu 1 bài viết khác trong loạt bài dịch về .NET Reverse Engineering của tôi, tên là “Hacking de4dot for fun”, viết bởi kao (một cao thủ khác trong làng Reverse Engineering).

Với những ai biết về .NET Reverse Engineering thì chắc chắn họ sẽ biết đến cái tên de4dot – một công cụ mã nguồn mở tuyệt vời để loại bỏ cơ chế bảo vệ của rất nhiều obfuscator/protector.

De4dot thực sự là mối đe dọa lớn đối với các công ty chuyên thiết kế các sản phẩm để bảo vệ cho các ứng dụng .NET. Đã từng xảy ra cuộc đua ngầm giữa 0xd4d (tác giả de4dot) và các nhà phát triển các phần mềm obfuscator/protector cho .NET. Mỗi khi de4dot update lên phiên bản mới thì ngay lập tức các nhà phát triển cũng update sản phẩm của họ lên, chỉ sau vài ngày, thậm chí vài giờ sau khi de4dot update để né khỏi sự “truy sát” của de4dot. Nói như thế để các bạn biết rằng, de4dot có tác dụng rất lớn, cực kì mạnh mẽ, và các nhà phát triển các obfuscator/protector, họ thật sự sợ de4dot.

Vậy nếu chúng ta ở trong 1 trường hợp mà có 1 file được bảo vệ bởi một obfuscator/protector có phiên bản mới hơn phiên bản mà de4dot có thể xử được, chúng ta sẽ lảm gì?

Trong bài viết này, tác giả sẽ hướng dẫn các bạn cách để tùy biến và chỉnh sửa mã nguồn của de4dot nhằm mục đích tạo ra 1 bản de4dot mới hơn, có thể giải quyết những trường hợp nêu trên và chúng ta không cần phải trông chờ 0xd4d cập nhận một bản de4dot mới. Thật là tuyệt phải không?

Mời các bạn ddowcj ở đây:

Enjoy and best regards,

Levis

[Bài dịch] Decrypt các MSIL methods một cách thủ công

Xin chào các bạn,

Dạo gần đây tôi đã được ubbelol (một guru trong làng .NET Reverse Engineering) cho phép dịch các bài viết của anh ta thành tiếng Việt và đăng tải chúng lên để chia sẻ cho mọi người. Theo quan điểm của cá nhân tôi, ở Việt Nam số lượng lập trình viên sử dụng .NET là rất lớn, tuy nhiên những người nghiên cứu chuyên sâu về .NET, đặc biệt là .NET Reverse Engineering là rất hiếm. Một phần do thiếu kinh nghiệm, một phần do tài liệu tiếng Việt bị hạn chế cho nen việc nghiên cứu trở nên khó khắn. Vì vậy tôi sẽ có gắng dịch được càng nhiều tài liệu càng tốt, để chia sẻ với mọi người, hi vọng sẽ giúp được các bạn một phần nào đó trong việc tiếp xúc với .NET Reverse Engineering. Trong các bài dịch này chắc chắn sẽ không tránh khỏi các sai sót, xin các bạn đóng góp ý kiến giúp tôi chỉnh sửa để có được những bản dịch tốt hơn. Cảm ơn!

Trong bài dịch đầu tiên này nói về phương pháp decrypt các MSIL method một cách thủ công, sử dụng Windbg. Các bạn có thể đọc bài dịch tại đây:

Enjoy and Best regards,

Levis

Linux ELF File Format – Documentation

This document is not created by me,  I just grabbed it on the internet, and post it here, hope  this will help people in reverse engineering/ researching on *nix System.

ELF: Executable and Linking Format
The Executable and Linking Format was originally developed and published by UNIX System Labora-
tories (USL) as part of the Application Binary Interface (ABI).  The Tool Interface Standards committee
(TIS) has selected the evolving ELF standard as a portable object file format that works on 32-bit Intel
Architecture environments for a variety of operating systems.
The ELF standard is intended to streamline software development by providing developers with a set of
binary interface definitions that extend across multiple operating environments. This should reduce the
number of different interface implementations, thereby reducing the need for recoding and recompiling
code.
About This Document
This document is intended for developers who are creating object or executable files on various 32-bit
environment operating systems.  It is divided into the following three parts:
Part 1, ‘‘Object Files’’ describes the ELF object file format for the three main types of object files.
Part 2, ‘‘Program  Loading and Dynamic Linking’’ describes the object file information and system
actions that create running programs.
Part 3, ‘‘C Library’’ lists the symbols contained in l i b s y s, the standard ANSI  C and l i b c routines,
and the global data symbols required by the l i b c routines.

Download link:

https://drive.google.com/file/d/0BwkJ85f8XTZtQ1ZuWkFBZUZlRlU/edit?usp=sharing

 

Enjoys and best regards,

Levis

“Reverse Engineering for Beginner” book

Hello all mates,

This book is a new (and great) book made by Dennis Yurichev, contains more than 600 pages to show you, from basic to advanced, and suitable for all people who is researching about Reverse engineering, no matter who you are, rookie or professor. And this book is “rolling release”, means that the author is working hard on it to make the book become more completed. The book was created using LaTex, and all the project is hosted on GitHub: https://github.com/dennis714/RE-for-beginners. Here you can find the newly updated part also the source code, always available for free. All credits go to the author: Dennis Yurichev, and if you find it interesting or useful for you, please support him by donating money

“Reverse Engineering for Beginners” free book

Topics discussed: x86, ARM.

Topics touched: Oracle RDBMS, Itanium, copy-protection dongles, LD_PRELOAD,
stack overflow, ELF, win32 PE file format, x86-64, critical sections, syscalls,
TLS, position-independent code (PIC), profile-guided optimization, C++ STL, OpenMP, win32 SEH.

DOWNLOAD

Compiled versions are:
(English) DOWNLOAD LINK
DOWNLOAD LINK ENGLISH (for e-book readers)
(Russian) DOWNLOAD LINK
DOWNLOAD LINK (for e-book readers)

Enjoy and best Regards,
Levis

Những công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 4)

Lời ngỏ:

Gần đây có một số bạn  chia sẻ các bài viết của tôi trên các forum, facebook, website,… Tôi cảm thấy rất vinh dự về điều đó. Có bạn share mà không nói trước với tôi, có bạn xin phép tôi trước rồi mới share. Đối với tôi thì việc xin phép hay không xin phép cũng không có gì đáng quan trọng cả bởi vì được chia sẻ với người khác là niềm vui và vinh hạnh của tôi. và các bạn share bài của tôi cũng có nghĩa là các bạn thấy những bài viết của tôi có giá trị. Cảm ơn các bạn nhiều lắm. Các bạn có thể share thoải mãi, tuy nhiên xin các bạn đề tên tôi ơ phần tác giả bài viết (hay credits), như thế là đủ rồi, khỏi xin phép này nọ cũng được. Tôi đã gặp một vài bạn share bài viết của tôi mà không ghi rõ nguồn, diều này khiến tôi không hài lòng cho lắm. Bởi vì không chi riêng bài viết của tôi, bất cứ tài liệu nào khi được chia sẻ cũng đều cần phải ghi rõ nguồn tác giả, đó là điều tối thiểu khi post bài chia sẻ. Vậy nên, xin các bạn rút kinh nghiệm, không chỉ với riêng bài viết của tôi, mà tất cả các bài viết, tài liệu khác nữa. Cảm ơn 🙂

 

Phần 4

Thế là đã xong phần về các công cụ Decompiler/Disassembler/Utilities, tôi sẽ tiếp tục với phần về các Deobfuscator/Unpacker/Detector

1. De4dot

Thông tin và download: https://github.com/0xd4d/de4dot

 

De4dot là một công cụ miễn phí mã nguồn mở, có chức năng tự động thực hiện deobfuscate cho hầu hết các obfuscator phổ biến trên thế giới. Công cụ này rất dễ sử dụng, phù hợp với cả newbie lần người có nhiều kinh nghiệm, và mạng lại kết quả “trên cả tuyệt vời”. Đây là công cụ bạn CẦN PHẢI CÓ trong bộ đồ nghề của mình để giúp cho công việc Reverse Engineering trở nên dễ dàng hơn. Tất nhiên bạn vẫn có thể deobfuscate thủ công, nhưng việc này mất nhiều thời gian và đòi hỏi bạn có một đống kiến thức rất lớn về .NET cũng như debugging, thế nên với một công cụ giúp bạn tự động làm mọi thứ như thế này, tôi đánh giá nó thật sự rất tốt. Bạn là người mới? Chỉ việc kéo thả. Bạn là người có nhiều kinh nghiệm? Có hàng tá option cho bạn tha hồ sử dụng, đối với mỗi loại obfuscator. Và thêm nữa, đây là một ứng dụng mã nguồn mở, cho nên bạn có thể tải mã nguồn của nó về, đọc, hiểu, cải tiến code và biên dịch để nó hoạt động theo ý bạn. Bạn có thể làm bất cứ điều gì, quá tuyệt phải không?

Tính năng chính:
– Inline methods. Some obfuscators move small parts of a method to another static method and calls it.
– Decrypt strings statically or dynamically
– Decrypt other constants. Some obfuscators can also encrypt other constants, such as all integers, all doubles, etc.
– Decrypt methods statically or dynamically
– Remove proxy methods. Many obfuscators replace most/all call instructions with a call to a delegate. This delegate in turn calls the real method.
– Rename symbols. Even though most symbols can’t be restored, it will rename them to human readable strings. Sometimes, some of the original names can be restored, though.
– Devirtualize virtualized code
– Decrypt resources. Many obfuscators have an option to encrypt .NET resources.
– Decrypt embedded files. Many obfuscators have an option to embed and possibly encrypt/compress other assemblies.
– Remove tamper detection code
– Remove anti-debug code
– Control flow deobfuscation. Many obfuscators modify the IL code so it looks like spaghetti code making it very difficult to understand the code.
– Restore class fields. Some obfuscators can move fields from one class to some other obfuscator created class.
– Convert a PE exe to a .NET exe. Some obfuscators wrap a .NET assembly inside a Win32 PE so a .NET decompiler can’t read the file.
– Removes most/all junk classes added by the obfuscator.
– Fixes some peverify errors. Many of the obfuscators are buggy and create unverifiable code by mistake.
– Restore the types of method parameters and fields
Các obfuscator/packer mà chương trình hỗ trợ:
– Agile.NET (aka CliSecure)
– Babel.NET
– CodeFort
– CodeVeil
– CodeWall
– CryptoObfuscator
– DeepSea Obfuscator
– Dotfuscator
– .NET Reactor
– Eazfuscator.NET
– Goliath.NET
– ILProtector
– MaxtoCode
– MPRESS
– Rummage
– Skater.NET
– SmartAssembly
– Spices.Net
– Xenocode

de4dot

Thật không quá khi nói de4dot là nỗi ác mộng của các nhà phát triển obfuscator. Có một vài nhà phát triển luôn theo dõi de4dot, mỗi khi de4dot cập nhật lên phiên bản mới là họ lại lẳng lặng nghiên cứu và update luôn cho obfuscator của họ để tránh khỏi de4dot.

2. DotnetDumper/ MegaDumper

Thông tin và download : Tuts4you forum (http://forum.tuts4you.com)

Phương pháp cơ bản và phổ biến nhất để unpack/deobfuscate các chương trình .NET là dump code/file từ memory. MegaDumper (tên cũ là DotnetDumper) là một công cụ viết bởi CodeCracker của nhóm SND nhằm mục đích để thực hiện công việc đó. Công cụ này cũng có mã nguồn mở, tuy nhiên mã nguồn này không public như de4dot mà được share trên các trang RE nổi tiếng như tuts4you, Bl@ckStorm,… Lí do tôi đánh giá cao công cụ này bởi vì nó có chức năng anti-anti-dump rất tốt, vượt qua được hầu hết các cơ chế antidump đã biết, và thêm nữa là công cụ này cũng rât nhẹ và dễ sử dụng, hiệu quả và độ tùy biến cũng khá cao.

 

MegaDumper

3. JitDumper

Thông tin và download: Bl@ckStorm Forum( http://board.b-at-s.info)

Cũng là dumper, nhưng cách hoạt động của JitDumper khác nhiều so với MegaDumper tôi đã nói ở trên.

MegaDumper thực hiện dump file trong khi file đó đang chạy (execution time), còn JitDumper, theo tôi tìm hiểu thì sẽ dump code ngay trước khi JIT Compiler tiến hành chuyển code IL thành mã máy. Điều này thực sự hữu ích với các obfuscator áp dụng phương pháp encrypt code và chỉ decrypt ra khi chương trình chạy. MegaDumper khi dump sẽ chỉ dump được chương trình với code vẫn bị encrypt, còn JitDumper sẽ dump được chương trình với code đã được decrypt (bởi vì code được decrypt trước, sau đó JITCompiler mới chuyển code được decrypt này thành mã máy, như thế thì chương trình mới có thể chạy được).

JitDumper

Điệm hạn chế của JitDumper là hiện tại thì nó hơi bị “quá hạn” (cũ). Tuy nhiên chương trình vẫn hoạt động hết sức hiệu quả. Chương trình này do yck1509 (nghe giang hồ đồn thổi là năm nay mới 19 tuổi :D)

 

4. Simple MSIL Decryptor

Thông tin và download: Tuts4you forum (http://forum.tuts4you.com)

Một công cụ khác được viết bởi CodeCracker, tính năng tượng tự JitDumper và có thêm nhiều tính năng mở rộng khác. Tôi chưa dùng nhiều công cụ này nên cũng chưa hiểu rõ lắm về cách hoạt động của nó. Công cụ này bạn có thể down mã nguồn trong forum tuts4you để về nghiên cứu và phát triển thêm theo ý mình.

Simple MSIL Decryptor

 

(còn tiếp)

Các phần trước

Những công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 3)

Những công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 2)

Những công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 1)

Các công cụ cần thiết cho quá trình Reverse Engineering .NET (phần 3)

9. WinDbg

Thông tin và download: http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx

WinDbg là công cụ nằm trong bộ Debugging Tools của WDK (Windows Development Kit), do Microsoft tạo ra, Đây là 1 trình debugger rất mạnh, có thể debug các ứng dụng ở user-mode lẫn kernel-mode. Nó cũng có thể debug các chương trình .NET. Tuy nhiên để sử dụng được WinDbg đòi hỏi có nhiều kinh nghiệm về Reverse Engineering cũng như programming. Công cụ này cũng không được sử dụng quá phổ biến khi dịch ngược các chương trình .NET, tôi thường thấy nó được sử dụng trong việc phân tích hoạt động của các file .NET bị obfuscated cũng như tìm hiểu cơ chế hoạt động của các trình packer/protector cho .NET. Nếu bạn đã tiến đến mức guru/expert – nôm na là “lão làng” rồi thì đây là công cụ không thể thiếu của bạn. Tôi cũng chưa sử dụng WinDbg quá nhiều cho việc debug cho nên cũng chưa thể đưa ra những nhận định cá nhân, vì vậy phần này chỉ viết để tham khảo + giới thiệu.

windbg

WinDbg

10. Nhóm các công cụ tiện ích nhỏ (Utilities)

Nhóm các công cụ tiện ích là tập hợp các chương trình nho nhỏ để giúp cho việc dịch ngược .NET trở nên dễ dàng hơn, chứ chúng không phải là các chương trình dịch ngược như các chương trình tôi đã giới thiệu ở trên. Số lượng các công cụ này (theo những gì tôi biết) không quá nhiều nhưng chúng thật sự rất hữu ích Chúng ta có thể kể đến:

–          MSIL Opcode Table: Đây là 1 chương trình rất nhỏ cho ta xem các thông tin cơ bản của các mã IL. Đây có thể coi như một dạng cheatsheet, vô cùng tiện lợi cho ta tra cứu. Có rất nhiều các mã IL, mỗi mã IL lại kèm theo những thông tin quan trọng cho nên việc ghi nhớ tất cả là rất khó. Cho nên chúng ta RẤT CẦN đến công cụ này:

MSIL OPcode Table

MSIL Opcode Table

–          Dotnet Tracer: Một tiện ích nhỏ nhưng vô cùng đáng giá, theo tôi biết thì nó sẽ load chương trình .NET vào, sau đó hook Jit-compiler và sẽ đưa ra các thông tin vô cùng hữu ích, đại loại như:

o   Các module được load

o   Thông tin về các method sẽ được compile bởi jit

o   Các exception

o   Các thread sẽ được chạy

o   ….

Đây gần như là 1 chương trình debug cho .NET, để cho ta biết được cớ chế hoạt động của chương trình cần phân tích. Để sử dụng hiệu quả công cụ này, bạn cần phải có kinh nghiệm nhất định về .NET và cơ chế hoạt động của .NET framework cũng như jit compiler

dotnet tracer

Dotnet Tracer

–          .NET Method Parser

Đây là một công cụ nhỏ gọn giúp liệt kê, phân tích và đưa ra các thông tin về các method trong một chương trình .NET (offset, name, type, flag, size,….).

net methods parser

NET Methods Parser

 

Ngoài ra còn một công cụ khá tốt mà tôi muốn giới thiệu với các bạn, đó là 1 IDE mã nguồn mở và miễn phí tên là SharpDevelop (Thông tin và download: http://www.icsharpcode.net/opensource/sd/). Cá nhân tôi cảm thấy khó chịu khi sử dụng bộ Visual Studio của Microsoft vì nó quá nặng (so với cái máy già cỗi của tôi) và thêm nữa là các vấn đề liên quan đến bản quyền (dĩ nhiên là vẫn có bản Express miễn phí nhưng cũng vẫn nặng và thiếu nhiều tính năng so với các bản professional hay Ultimate mà M$ tạo ra). Vì vậy tôi chọn SharpDevelop để tạo các ứng dụng .NET, vừa nhanh lại vừa nhẹ., giao diện của chương trình cũng khá tiện lợi và trực quan. Bộ setup của nó chỉ vỏn vẹn có ~15mb nhưng khi cài đặt xong có thể code trong nhiều ngôn ngữ: C#,VB.NET, F# IronPython,…. Vì vậy tôi đánh giá rất cao IDE này,, rất tiện lợi khi cần code các công cụ, các tool nho nhỏ và các app demo.

(còn tiếp)

Đọc các phần khác tại đây:

Các công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 2)

Các công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 1)

R4ndom’s Beginning Reverse Engineering Tutorials (Completed Package)

R4ndom’s Beginning Reverse Engineering Tutorials – the complete collection all in one handy archive!

Here is a set of tutorials made by R4ndom and some other cool guys (http://thelegendofrandom.com/), very detailed and well write-up, suitable for newbies also professionals.

This packages contains:
Tutorial #1 – What is reverse engineering?
Tutorial #2 – Introducing OllyDBG
Tutorial #3 – Using OllyDBG, Part 1
Tutorial #4 – Using OllyDBG, Part 2
Tutorial #5 – Our First (Sort Of) Crack
Tutorial #6 – Our First (True) Crack
Tutorial #7 – More Crackmes
Tutorial #8 – Frame Of Reference
Tutorial #9 – No Strings Attached
Tutorial #10 – The Levels of Patching
Tutorial #11 – Breaking In Our Noob Skills
Tutorial #12 – A Tougher NOOBy Example
Tutorial #13 – Cracking a Real Program
Tutorial #14 – How to remove nag screens
Tutorial #15 – Using the Call Stack.
Tutorial #16A – Dealing with Windows Messages.
Tutorial #16B – Self Modifying Code.
Tutorial #16C – Bruteforcing.
Tutorial #17 – Working with Delphi Binaries.
Tutorial #18 – Time Trials and Hardware Breakpoints.
Tutorial #19 – Creating patchers.
Tutorial #20A – Dealing with Visual Basic Binaries, Part 1.
Tutorial #20B – Dealing with Visual Basic Binaries, Part 2.
Tutorial #21 – Anti-Debugging Techniques.
Tutorial #22 – Code Caves and PE Sections.
Tutorial #23 – TLS Callbacks.

Modifying Binaries For Fun And Profit

Adding a Splash Screen – Creating a code cave to show a custom splash on an application
Adding a Menu Item – Adding a menu item to an existing binary.
Making a Window Non-Closeable – Making a Window Non-Closeable.
The Never Ending Program – Opening message boxes every time a user tries to close a program.
DLL Injection 1 – Adding an opening message box through DLL injection.
DLL Injection 2 – Adding a splash bitmap through DLL injection.

R4ndom’s Guide to RadASM

Installing and setting up – Installing RadASM and configuring the environment.
Creating our first project – Creating our first project.
Adding an Icon and Menu – Adding an Icon and Menu.

Miscellaneous

The Reverse Engineer’s Toolkit – Tools every reverse engineer should know about.
Shrinking C++ Binaries – Shrinking binaries through Visual Studio.

Other Tutorials

Author Tutorial
XOR06 Cracking DriverFinder
nwokiller Unpacking PELock v1.06
XOR06 Bypassing a keyfile
XOR06 Bypassing a Serial and server Check
XOR06 Bypassing a Serial in a Delphi Binary
XOR06 Finding a serial using bitmaps.
XOR06 Easy unpacking.
XOR06 Where and How to pacth a serial routine.
XOR06 Patching a server check, 30 day time trial, and a nag.
XOR06 Serialfishing a correct serial.
XOR06 Another way of finding the patch.
XOR06 Why it’s so important to search for pointers.
XOR06 .NET Crackme with tutorial
XOR06 .NET Crackme (no tutorial)

Download link:

Download Mediafire link

All credits go to its author.

Enjoy and best regards,

Levis

Các công cụ cần thiết cho quá trình Reverse Engineering .NET (phần 2)

5. ILDASM

ILDASM là tên viết tắt của IL Disassembler. Đây là 1 công cụ decompile các file .NET của chính Microsoft tạo ra, nằm cùng trong bộ Visual Studio+ Window SDK, có thể được gọi từ Visual Studio Command Prompt (nguồn: MSDN). Chức năng chính là dịch ngược chương trình .NET và có thể chuyển về dạng IL, sau đó save lại dưới dạng txt file. Chúng ta có thể sửa code từ file text này, và sau đó compile lại bằng một công cụ đi cùng với ILDASM là ILASM. ILDASM và ILASM (cũng nằm trong bộ Visual Studio).

Đúng như tên gọi của nó, ILDASM chỉ đơn thuần là 1 công cụ Disassemble không hơn không kém, và nhiệm vụ của nó chỉ là dịch ngược về mã IL, cho nên nó thiếu đi rất nhiều tính năng cần thiết như :code analysis, code search, multi-file disassemble,

ILDASM

ILDASM

+ Điểm cộng: Nhẹ, có sắn (nếu như có cài Visual Studio và Windows SDK), hiện thị code tốt, export code khá tốt

+Điểm trừ: Quá đơn điệu, thiếu nhiều tính năng cơ bản cũng như các tính năng mở rông, nâng cao

6. ILSpy

Thông tin và download: http://ilspy.net/

ILSpy là trình decompiler/Disassembler mã nguồn mở, được tạo ra nhằm mục đích thay thế cho .NET Reflector sau khi Red-Gate mua lại .NET Reflector và biến nó thành phần mềm thương mại. ILSpy là 1 công cụ rất nhẹ, chỉ bao gồm các tính năng cơ bản đủ dùng, đã có thể thay thế một phần nào .NET Reflector. Cá nhân tôi thích nhất ở phần mềm này là sự nhanh và nhẹ của nó. Code sau khi dịch ngược khá chuẩn xác.

Tính năng:

  • Assembly browsing
  • IL Disassembly
  • Support C# 5.0 “async”
  • Decompilation to C#
    • Supports lambdas and ‘yield return’
    • Shows XML documentation
  • Decompilation to VB
  • Saving of resources
  • Save decompiled assembly as .csproj
  • Search for types/methods/properties (substring)
  • Hyperlink-based type/method/property navigation
  • Base/Derived types navigation
  • Navigation history
  • BAML to XAML decompiler
  • Save Assembly as C# Project
  • Find usage of field/method
  • Extensible via plugins (MEF)
  • Assembly Lists

ILSPY

ILSpy

+ Điểm cộng: RẤT NHẸ, nhanh, đầy đủ tính năng cơ bản, mã nguồn mở, miễn phí

+Điểm trừ: Ít plugin, thiếu tính năng mở rộng nâng cao

7. Dotnet Resolver

Thông tin và download: http://dotnetresolver.eu5.org/

Đây là 1 công cụ do cộng động Reverser thiết kế ra, nhằm mục đích thay thế cho .NET Reflector và các chương trình decompile khác, Vì được xây dựng bởi các Reverser có nhiều kinh nghiệm cho nên nó đáp ứng được khá đầy đủ các tính năng cần thiết, vừa có sự trực quan và dễ sử dụng như .NET Reflector, vừa nhẹ và nhanh như ILSpy, vừa nhẹ và nhanh hơn cả ILSpy, và cũng rất mạnh, gần như SAE. Cá nhân tôi đánh giá đây là 1 công cụ rất tốt, tuy nhiên công cụ này khá mới mẻ và vẫn còn đang trong giai đoạn phát triển, và chúng ta có thể hi vọng sẽ có thêm nhiều tính năng mới trong tương lai. Phiên bản hiện tại rất ổn định và đã sẵn sang để sử dụng.

Tính năng:

  • Translate to C# and Visual Basic
  • Editing MSIL Instructions
  • Stable Assembly Reader
  • Member Analyser
  • Plug-in Support

dotnet resolver

DotNet Resolver

+Điểm cộng: Nhanh, mạnh, khá đầy đủ tính năng, nhẹ, miễn phí, phát triển tốt, dễ sử dụng, khả năng mở rộng tốt

+Điểm trừ: Ít plugin

8. IDA

Thông tin và download: https://www.hex-rays.com/products/ida/

IDA thì quá nổi tiếng trong giới Reverser rồi. Đây là công cụ mạnh nhất trong việc dịch ngược và phân tích chương trình với rất nhiều plugin và các tính năng chuyên nghiệp. Thế nhưng nhà phát triển IDA tập trung chủ yêu vào việc phát triển công cụ này cho mục đích dịch ngược native PE file và các ứng dụng trên các nền tảng khác như iOS, ARM, Linux, Android,… Cho nên các tính năng cho việc dịch ngược .NET chỉ dừng lại ở mức vừa đủ, không thế so sánh với các chương trình dịch ngược tôi đã giới thiệu ở trên được. Và tôi cũng không sử dụng IDA quá nhiều cho việc dịch ngược các chương trình .NET, cho nên phần này chỉ viết cho mục đích để tham khảo là chính, không thể đánh giá cụ thể. Bởi vì chỉ dựa trên khả năng dịch ngược .NET của IDA mà đánh giá sức mạnh của chương trình này thì thật sự không chính xác chút nào.

IDA

IDA

(còn tiếp)

Đọc phần 1 tại đây

Các công cụ cần thiết cho quá trình Reverse Engineering .NET (Phần 1)

Các chương trình viết bằng .NET có cấu trúc khác với  các native PE file, cho nên các công cụ debug/disassembler  thong thường không thể phát huy hết sức mạnh, mà muốn dịch ngược được các chương trình .NET và phân tích cấu trúc + mã nguồn của chúng, không gì tốt hơn bằng việc sử dụng các chương trình chuyên dụng dành riêng cho .NET, tôi sẽ giới thiệu với các bạn trong bài viết này.

Tôi sẽ tạm thời phân chia thành 2 nhóm chương trình chính sau đây:

  • Nhóm Editor/Decompiler/Disassembler/Utilities:  Nhóm này là tập hợp các công cụ giúp ta xem xét, phân tích cũng như thay đổi cấu trúc và thong số của chương trình .NET. Kèm theo đó là một vài tiện ích nho nhỏ để phục vụ cho quá trình dịch ngược chương trình được trở lên dễ dàng hơn

 

  • Nhóm Unpacker/Deobfuscator/Detector: Nhóm này tập hợp các công cụ giúp chúng ta phát hiện  và loại bỏ các lớp bảo vệ của chương trình .NET. Hiện tại có rất nhiều các  sản phẩm bảo vệ cho mã nguồn .NET để tránh việc dịch ngược, đọc và phân tích code cho nên nhóm công cụ này cũng khá quan trọng.

 

OK, bây giờ tôi sẽ liệt kê các chương trình phổ biến trong 2 nhóm trên. Bắt đầu với nhóm 1 trước.

1. CFF Explorer

Thông tin và download: http://www.ntcore.com/exsuite.php

Đây là 1 chương trình rất đa năng nằm trong bộ Explore Suite của NTCore phát triển. Mặc dù đây chỉ là dự án ngoài lề (Side-project) được viết bởi Daniel Pistelli, tuy nhiên các tính năng của nó được đánh giá rất cao và hữu ích. Chương trình là 1 PE Editor đúng nghĩa với các tính năng sau:

  • Process Viewer
  • Drivers Viewer
  • Windows Viewer
  • PE and Memory Dumper
  • Full support for PE32/64
  • Special fields description and modification (.NET supported)
  • PE Utilities
  • PE Rebuilder (with Realigner, IT Binder, Reloc Remover, Strong Name Signature Remover, Image Base Changer)
  • View and modification of .NET internal structures
  • Resource Editor (full support for Windows Vista icons)
  • Support in the Resource Editor for .NET resources (dumpable as well)
  • Hex Editor
  • Import Adder
  • PE integrity checks
  • Extension support
  • Visual Studio Extensions Wizard
  • Powerful scripting language
  • Dependency Walker
  • Quick Disassembler (x86, x64, MSIL)
  • Name Unmangler
  • Extension support
  • File Scanner
  • Directory Scanner
  • Deep Scan method
  • Recursive Scan method
  • Multiple results
  • Report generation
  • Signatures Manager
  • Signatures Updater
  • Signatures Collisions Checker
  • Signatures Retriever

(Vì đây đa phần là các thuật ngữ chuyên môn nên khi dịch ra tiếng Việt có thể không sát nghĩa, cho nên tôi để nguyên tiếng Anh).

Đối với việc Reversing .NET thì các tính năng sau rất hữu ích:

  • Special fields description and modification (.NET supported)
  • PE Rebuilder (with Realigner, IT Binder, Reloc Remover, Strong Name Signature Remover, Image Base Changer)
  • View and modification of .NET internal structures
  • Support in the Resource Editor for .NET resources (dumpable as well)
  • Hex Editor
  • Quick Disassembler (x86, x64, MSIL)
  • Dependency Walker

 

Đây cũng là chương trình đầu tiên hỗ trợ việc xem và thay đổi cấu trúc, thông số của .NET PE file, có thể thực hiện ngay cả khi trong máy không cài .NET Framework. Ta cũng có thể mở rộng khả năng hoạt động của chương trình bằng cachs viết các script cho chương trình tự động chạy, đó cũng là điểm mạnh rất đáng giá. Vậy nên, nếu bạn muốn thực hiện Reverse Engineering .NET, đây là công cụ bạn cần phải có trong bộ “đồ nghề” của mình

cff_explorer

 

CFF Explorer

 

+ Điểm cộng: Nhẹ, miễn phí, nhiều tính năng rất hữu ích, hỗ trợ hiệu quả .NET, khả năng mở rộng tốt

+ ĐIểm trừ: Không có

 

2. .NET Reflector

Thông tin và Download:  http://www.red-gate.com/products/dotnet-development/reflector/

Nhắc đến .NET Reflector thì không phải là cái tên quá xa lạ đối với những ai đang nghiên cứu về .NET. Đây là công cụ phổ biến nhất trong việc dịch ngược .NET. Có một decompile engine chất lượng, có nhiều plugin/addin hỗ trợ, tính năng hữu ích, giao diện trực quan dễ sử dụng, có thể tích hợp vào trong Visual Studio, kèm theo đó là 1 “ông trùm” chống lung phía sau là Red-Gate, không lạ lắm khi .NET Reflector càng ngày càng trở lên mạnh mẽ và phổ biến hơn. Tính năng dịch ngược của .NET Reflector theo quan điểm cá nhân của tôi là rất tốt, có thể đưa về 90-95% code gốc, và có thể browse code không khác lắm so với việc chúng ta đọc code trong Visual Studio. Tuy nhiên tôi vẫn thích các phiên bản cũ của .NET Reflector khi Lulz Roeiier còn phát triển độc lập. Lúc đó .NET Reflector chạy rất nhẹ nhàng và chính xác, mặc dù không có nhiều tính năng hay ho như .NET Reflector hiện hành, và quan trọng nhất là nó “miễn phí”. Red-Gate đã mua lại .NET Reflector và biến nó thành một công cụ độc quyền của hang, và bán với giá cao. Tất nhiên là cracker / reverser không thích điều này, và họ đã phát triển các công cụ thay thế khác  với tính năng giống .NET Reflector và chạy nhẹ nhàng hơn rất nhiều (tôi sẽ giới thiệu một vài các công cụ nổi bật khác ở phần dưới).

reflector

.NET Reflector

+ Điểm cộng: Mạnh, phổ biến, dễ sử dụng, nhiều addin, khả năng tích hợp tốt với Visual Studio, nhiều tính năng hữu ích

+ Điểm trừ: Nặng, mất phí, thiếu các tính năng chuyên dụng và nâng cao

3. Simple Assembly Explorer

Thông tin và download: https://sites.google.com/site/simpledotnet/simple-assembly-explorer

Đây là công cụ mà độ phổ biến của nó cũng ngang tầm với .NET Reflector. Thường được gọi tắt là SAE, một dự án mã nguồn mở được viết bởi Wicky Hu. Chương trình cung cấp các tính năng sau:

  • Assembler: call ilasm to assemble il file
    Disassembler: call ildasm to disassemble assembly
    Deobfuscator: de-obfuscate obfuscated assembly
    Strong Name: remove strong name, sign assembly, add/remove assembly to/from GAC
    PE Verify: call peverify to verify assemblies
  • Class Editor: browse/view assembly classes, edit method instructions
    Run Method: run static methods
    Profiler: Trace function calls and parameters with SimpleProfiler
  • Relector: plugin which call Reflector to browse selected assembly
    ILMerge: plugin which call ilmerge to merge selected assemblies
    Edit File: plugin which call your editor to view selected assembly
    Plugin Sample: plugin sample
  • Copy Info: copy information of selected assemblies to clipboard
    Open Folder: open container folder
    Delete File: delete selected file(s)

 

Đây là các tính năng rất mạnh và chuyên nghiệp mà hầu như không có trong .NET Reflector. Một điểm mạnh khác của chương trình là có hỗ trợ sử dụng decompiler Engine của .NET Reflector hay ILSpy để đưa ra code dịch ngược dưới dạng các ngôn ngữ bậc cao (C#,VB.NET….) bởi vì mặc định của chương trình là dịch ngược về mã IL. Nó cũng có thể dịch ngược rất nhiều những file .NET mà .NET Reflector bó tay (ví dụ điển hình là các .NET bị obfuscated/packed)

Điểm yếu của chương trình là nó hơi khó sử dụng, và thích hợp với những người có nhiều kinh nghiệm hơn là những người mới bắt đầu. Tuy nhiên nếu bạn hiểu và nắm rõ cách sử dụng của chương trình, thì đây là một chương trình tuyệt vời nhất cho việc dịch ngược .NET

sae

SAE

+ Điểm cộng: RẤT MẠNH, mã nguồn mở, nhẹ,  miễn phí, nhiều tính năng chuyên nghiệp mà các công cụ khác không có, khả năng mở rộng và tích hợp các công cụ khác

+ Điểm trừ: Khó sử dụng, đòi hỏi có kinh nghiệm

4. Telerik JustDecompile

JustDecomple của Telerik cũng là một công cụ chịu nhiều ảnh hưởng từ .NET Reflector, và được coi là sự thay thế tốt nhất cho .NET Reflector. Bao gồm các tính năng chính sau:

  • 10 times faster than competitors.
  • Open API for everyone to create extensions.
  • Supports .NET 2, 3.5, 4, 4.5, 4.5.1, WinRT Metadata, C#5, APPX and WinMD.
  • Code becomes easily searchable with JustDecompile.
  • Create a Visual Studio project from a decompiled assembly.
  • JustDecompile integrates with JustCode and JustTrace.
  • Switch easily between different methods and assemblies in one JustDecompile instance.
  • Decompile referenced assemblies in a Visual Studio project.
  • Save resources from assemblies.
  • Bookmark usages in loaded assemblies.
  • Export code directly from the command prompt.

Decompile an assembly after browsing to it in Windows Explorer.

Đây là một công cụ khá tốt cho việc dịch ngược .NET, được một doanh nghiệp phát triển cho nên được đầu tư khá tốt. Nó bao gồm các tính năng cơ bản có trong .NET Reflector và có khả năng mở rộng tốt. Tuy nhiên vì mới được phát triển cho nên chưa có quá nhiều sự nổi bật và tính năng khác biệt nên vẫn phải đứng sau cái bóng quá lớn của .NET Reflector. Trong tương lai chắc chắn đây sẽ là một công cụ rất mạnh và hữu ích. Còn bây giờ, nó vẫn là một sự lựa chọn khá tốt cho việc thay thế .NET Reflector vì hai công cụ này tính năng có nhiều điểm tương đồng và rất dễ sử dụng. Một vài điểm khác đáng chú ý ở đây là hỗ trợ command line và khả năng export ra source code rất tuyệt. Về plugin thì lúc tôi sử dụng mới chỉ có 3 plugin.

justdecompile

JustDecompile

+ Điểm cộng: miễn phí, dễ sử dụng, nhiều tính năng hữu ích giống .NET Reflector, khả năng mở rộng tốt, khả năng decompile tốt, nhẹ, được phát triển khá tốt

+ ĐIểm trừ: Mới, ít plugin hỗ trợ, thiếu các tính năng chuyên dụng nâng cao

(Còn tiếp)

[Linux Reversing] Linux Patching helper demostration video

Hello all mates,

I’m currently working on a small project named Linux Patching Helper , created in Pascal/Lazarus using qt, which aims to apply the method i used to crack some sommercial Linux applications (you cand find my RAR patching tutorial here). This tool is based on objdump, and it will dump data + code and then start tracing the code. Still on development and here is a demostration video to show how it works.

The target in this video is a download manager for Linux (comparible to IDM in windows) named FlareGet, but only for testing purposes, therefore cracked version will not be released:

Hope that i can release it soon, because there are some issues with memory management, the tool takes high memory consumption while executing, and i’m trying to fix. But don’t expect too much, because it’s only my hobby, only for fun 🙂

 

Regards

Levis