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

19 Comments


dwainnervi55
6 days ago

Khi khám phá các nền tảng trực tuyến có hệ thống sản phẩm phong phú, sc88 để lại cho mình cảm nhận khá tích cực về sự cân bằng trong thiết kế giao diện. Các khu vực như nổ hũ, casino trực tuyến, thể thao, bắn cá và game bài được trình bày rõ ràng, tạo sự thuận tiện khi lựa chọn nội dung giải trí. Mình nhận thấy bố cục không quá nhiều chi tiết gây khó theo dõi, phù hợp với việc sử dụng thường xuyên trong nhiều khoảng thời gian khác nhau. Trong lúc trải nghiệm, tốc độ truy cập khá ổn định, thao tác thực hiện nhanh và khả năng hiển thị trên nhiều nền tảng được…

Like

Khi thử sử dụng trong những khoảng nghỉ ngắn, sun win giúp mình lựa chọn nhanh giữa game bài, tài xỉu, bắn cá và thể thao mà không nhất thiết phải dành một phiên dài. Mình thường chỉ tập trung vào một nội dung rồi dành vài phút cuối để kiểm tra tài khoản hoặc trạng thái giao dịch. Vì quỹ thời gian hạn chế, tốc độ phản hồi là yếu tố mình chú ý khá nhiều và qua các lần thử, thao tác nhìn chung diễn ra nhanh, nội dung tải tương đối đều. Điện thoại cũng phù hợp với kiểu truy cập này vì mình có thể bắt đầu hoặc kết thúc linh hoạt theo lịch cá nhân. Nếu…

Like

Mình thường kiểm tra lúc cần hỗ trợ, và Nhà cái Hi88 cho thấy phần này khá dễ tiếp cận giữa một hành trình đang diễn ra. Mình thử từ xổ số chuyển sang thể thao, sau đó tìm thông tin hỗ trợ rồi tiếp tục qua casino. Việc quay lại nội dung không mất nhiều bước nên mình không có cảm giác phải tách riêng thời gian cho thao tác này. Trên điện thoại, cách bố trí gọn càng giúp việc chuyển qua lại thuận hơn. Các khu chính vẫn giữ được không gian riêng trong khi chức năng bổ trợ xuất hiện khi cần thiết. Với mình, sự phối hợp như vậy khiến trải nghiệm cân bằng hơn, bởi…


Like

Qua việc xem xét tổng thể C168, mình nhận thấy yếu tố giao diện và cách phân bổ nội dung đóng vai trò quan trọng trong trải nghiệm sử dụng. Nền tảng không chỉ tập trung vào việc cung cấp nhiều danh mục mà còn chú ý đến cách người dùng tiếp cận từng khu vực. Các trò chơi được chia nhỏ theo đặc điểm riêng như slot game thiên về hình ảnh, nổ hũ tập trung vào vòng quay, bắn cá hướng đến thao tác điều khiển và game bài mang tính quen thuộc. Sự phân loại này giúp người dùng dễ dàng định hướng, hạn chế việc phải quay lại tìm kiếm nhiều lần khi chuyển đổi giữa…

Like

Qua quá trình quan sát cách bố trí của C168, có thể thấy hệ thống hướng đến việc gom nhiều tiện ích trên một giao diện thống nhất thay vì để người dùng phải chuyển đổi giữa nhiều trang khác nhau. Các khu vực được sắp xếp theo từng nhóm rõ ràng, từ giải trí trực tuyến đến quản lý tài khoản cá nhân. Ở phần trò chơi, nền tảng được nhắc đến với các danh mục như casino trực tuyến gồm nhiều bàn chơi mô phỏng, game bài với những hình thức phổ biến, cùng nhóm slot game và nổ hũ tập trung vào yếu tố hình ảnh và hiệu ứng. Ngoài ra, bắn cá cũng là một khu…

Like
bottom of page