top of page

Reverse Engineering Source Code

Updated: Feb 27, 2023



What is Reverse Engineering?

To start with, reverse engineering is a method by which an object is deconstructed for exploring its design, architecture, code and components. It is done to get the information about the components used in making the object. It can be applied to hardware, software and even to human DNA.


Software applications comprise source code files that are compiled to convert them into binary executable code. If this binary executable code is converted back into source code files using a decompiler then this will be termed as reverse engineering of source code.


4 Reverse Engineering Requirements

  1. First, we need source code files of the software such as C/C++ code files and/or java files of the software.

  2. If the source code files of the software are not available then we need to decompile the software using available decompilers as for decompiling android apps and java applications we can use java decompiler and for decompiling C/C++ application, we can use Snowman decompiler or any other C/C++ decompiler.

  3. If the purpose of reverse engineering was to explore the source code then we need a source code editor for searching texts, functionalities, libraries, and/or algorithms in the decompiled source code files and/or shared source code files.

  4. If the purpose of reverse engineering was to make changes in the source code files then using the source code editor we can add and/or delete code modules and/or functionalities.

4 Reverse Engineering Tools

  1. Integrated Development Environment (IDE) - It is a software application comprising source code editor, debugger and builds automation tools. It is used to explore the code files generated upon decompilation or the shared source code files of the software. For example, NetBeans, Eclipse, IntelliJ, and Visual Studio. Without an IDE, developers spend time deciding what tools to use for various tasks, configuring the tools and learning how to use them. Many or even all the necessary dev-test tools are included in one integrated development environment. IDEs are also designed with all their tools under one user interface. An IDE can standardize the development process by organizing the necessary features for software development in the UI.

  2. Decompiler - It is an application that takes an executable file as input and produces high-level source code files. It works opposite to the compiler, which takes a source code file and makes it executable. For example, Java decompiler, Snowman C/C++ decompiler etc. Some compilers and post-compilation tools produce obfuscated code (that is, they attempt to produce output that is very difficult to decompile, or that decompiles to confusing output). This is done to make it more difficult to reverse engineer the executable. While decompilers are normally used to recreate source code from binary executables, there are also decompilers to turn specific binary data files into human-readable and editable sources.

  3. Source code editor - It is a software application to explore the source code files and is used in making edits in the software code and writing source code. For example Notepad++, Sublime Text etc. Source-code editors have features specifically designed to simplify and speed up typing of source code, such as syntax highlighting, indentation, autocomplete and brace matching functionality. These editors also provide a convenient way to run a compiler, interpreter, debugger, or other program relevant for the software-development process. So, while many text editors like Notepad can be used to edit source code, if they don't enhance, automate or ease the editing of code, they are not source-code editors.

  4. Cloud storage platform: Cloud storage platform refers to storage where source code related documents such as source code files, libraries, software user manuals and license information are uploaded and shared. For example, GitHub repository, GitLab etc.

Reverse Engineering Advantages and Disadvantages


Benefits

  • Used in infringement cases for generating revenue

  • Used in identifying the drawbacks, bugs in the original source code and producing code with additional features

  • Used for research purposes

  • User for simulating the algorithms used in the software

  • Performed to maintain documentation of the software

  • Used in performing security analysis of the software

Drawbacks

  • Used in the building fake software by breaking security and defaming the original software

  • Used for breaching the software license agreement

  • Used for monetary advantage such as selling the source code of the software and pirated versions of the software

  • Used for developing malware for the software code

Case Law Around Reverse Engineering

  • Sega Enterprises Ltd v Accolade, Inc, (October 1992) -

Sega Enterprises Ltd. (Plaintiff) and Accolade, Inc. (Defendant) made and marketed video game cartridges. In order to make its own games compatible with Sega’s console, Accolade reverse engineered Sega’s video game programs to discover the requirements for compatibility with the console. In order to do this, it first copied Plaintiff’s copyright code and then disassembled it to see how it worked. Defendant then created its own games for use with Plaintiff’s console, but did not copy Plaintiff’s programs or use any of its codes. Plaintiff sued for copyright infringement. The district court granted Plaintiff’s motion for a preliminary injunction to prevent Defendant from further disassembly of Plaintiff’s object codes. Defendant appealed.

  • Sony Computer Entertainment, Inc. v. Connectix Corp. (June 2000)

Plaintiff Sony Computer Entertainment, Inc. produced and marketed the Sony PlayStation video game console. Sony owned the copyright to BIOS, the software program that operated the PlayStation. Defendant Connectix Corporation made and sold a software program called “Virtual Game Station.” The purpose of the Virtual Game Station was to emulate on a regular computer the functioning of the Sony PlayStation console, so that computer owners who buy the Virtual Game Station software can play Sony PlayStation games on their computers. In order to create the Virtual Game Station, Connectix “reverse engineered” Sony’s BIOS program. As part of the reverse engineering process, Connectix made several intermediate copies of the BIOS program and hence Sony sued Connectix for copyright infringement.


The district court concluded that Sony was likely to succeed on its infringement claim because Connectix’s “intermediate copying” was not a protected fair use. The court also adjured Connectix from selling the Virtual Game Station and copying or using Sony’s BIOS program in the development of other Virtual Game Station products.

  • SAS Institute, Inc. v. World Programming Ltd. (October 2017)

In this case, the parties disputed whether the defendant infringed a software license by accessing the software’s source code. The Fourth Circuit held that the license’s definition of reverse engineering was unambiguous and favored the plaintiff’s broader interpretation, which expanded the purview of impermissible conduct to defendant’s decompiling and reverse engineering of plaintiff’s business analytics software. The Court also rejected defendant’s attempt to introduce extrinsic evidence showing the ambiguity of the anti-reverse engineering provision, on grounds that defendant’s evidence showed only that the software could be reverse engineered by defendant’s method, not that this type of reverse engineering was the exclusive method.

Accordingly, the Court affirmed the district court’s ruling of summary judgment in Plaintiff’s favor. The Fourth Circuit also observed that Defendant did not point to, nor had the Court discovered, any technical dictionaries revealing a more restrictive definition in the software context.


Source code review is a labor-intensive process that requires an expert to be physically present at the producing party’s or their opposing counsel’s offices – which creates a challenge. Copperpod provides IP consulting services such as Source Code Review, Infringement Claim Charts, Prior Art Search, Reverse Engineering and advises clients on patentability to give a clear picture of the state of the art to navigate away from the potential prior art and monetize IP assets.


References

9 Comments


Khi tìm hiểu Hi 88  , mình tập trung vào cách nền tảng kết hợp giữa giao diện và nhiều nhóm nội dung khác nhau. Mình mở thể thao trước để xem cách các sự kiện được phân loại, sau đó chuyển sang xổ số và bắn cá để quan sát sự khác biệt. Game bài cũng được xem thêm nhằm hoàn thiện góc nhìn về kho giải trí. App hỗ trợ quá trình truy cập trên điện thoại thuận tiện hơn. Theo mình, một hệ thống nhiều danh mục cần tạo cảm giác dễ làm quen, bởi người dùng thường thay đổi sở thích thay vì chỉ sử dụng một khu vực cố định.

Like

dwainnervi55
a day ago

Điều khiến mình dành thêm thời gian khám phá Hi 88 là muốn biết giao diện có thực sự thuận tiện khi sử dụng lâu hay không. Mình mở game bài rồi chuyển sang mục giao dịch để quan sát cách điều hướng giữa các khu vực. Các thao tác phản hồi khá đều và thông tin cũng được trình bày theo thứ tự dễ theo dõi. Cá nhân mình thích những nền tảng không quá nhiều hiệu ứng nhưng vẫn đảm bảo sự rõ ràng trong cách hiển thị.


Like

dwainnervi55
2 days ago

Một dữ liệu mình muốn nhìn kỹ hơn ở QQ88 là BMM Testlabs vì đây là lớp thông tin nằm phía sau trải nghiệm trò chơi. Đơn vị này được nhắc đến trong hoạt động kiểm định tính công bằng và ngẫu nhiên, bên cạnh iTech Labs. FCLRC cũng xuất hiện ở phần thông tin cấp phép của thương hiệu. Trong phiên trải nghiệm, mình mở Blackjack rồi chuyển sang bóng đá Premier League để quan sát cách hai sảnh được phân chia. Thanh toán có ngân hàng và ví điện tử, còn tài khoản sử dụng SSL 128-bit. Với mình, dữ liệu kiểm định tạo thêm một góc tham chiếu cần thiết khi khảo sát hệ thống, giúp việc đánh…


Like

dwainnervi55
2 days ago

Những lần kiểm tra khu vực tài khoản giúp mình có thêm góc nhìn về nohu ngoài kho trò chơi. Quy trình đăng ký và đăng nhập được trình bày khá trực quan, sau đó các mục nạp tiền, rút tiền và hỗ trợ cũng có vị trí riêng. Mình tiếp tục phiên với Liêng rồi chuyển sang một số slot có Jackpot để quan sát trải nghiệm sau khi hoàn tất các thao tác tài khoản. Bắn cá tạo thêm sự thay đổi nhờ phần hình ảnh sinh động và cách tương tác riêng. Theo cảm nhận của mình, việc bố trí các chức năng vận hành rõ ràng giúp quá trình sử dụng có trật tự hơn. Người mới…


Like

dwainnervi55
2 days ago

Thứ mình để ý đầu tiên ở CM88 trong lần xem này là cách livestream 4K được sử dụng trong Casino Live. Mình chọn Sicbo để quan sát góc quay và quá trình vận hành bàn, sau đó mới chuyển qua Blackjack nhằm xem chất lượng hiển thị có giữ được sự đồng đều hay không. Dealer thật xuất hiện xuyên suốt và các thao tác trên bàn khá dễ theo dõi qua camera. Mình không mở thêm quá nhiều chuyên mục vì muốn tập trung vào đúng chi tiết này. Với mình, livestream chỉ thực sự có giá trị khi nó giúp quan sát diễn biến rõ hơn chứ không đơn thuần làm hình ảnh trông bắt mắt.


Like
bottom of page