For this tutorial we will be using Mirial Softphone which is a HD video conferencing application. This tutorial is for educational purposes only, so please do not use this to create or distribute a cracked copy of the software.

When you first install the application, it prompts you for a license file. After installing the license you have 30 days to evaluate the application. The expiration date is displayed on this screen; in our case it is March 15, 2011.

Step 1

Trial applications usually store license information in either the registry or on the file system. Since this application prompted us for a license file, we know that it uses the file system. Start up the 32-bit version of API Monitor and enable API’s from the File Management category.

Step 2

Select Hook Process from the File menu to start monitoring the application.

API Monitor will start monitoring and displaying API calls. The application should now display a message indicating that it is an evaluation version. Hit cancel to quit the application.

Step 3

Now that we have captured the API calls made by the application, we need to find the one that reads the license file. Scan through the calls in the API summary view until you find the right one.

The application is reading from mirial.lic file. The name suggests that it might be a license file, so let’s open it up.

We’ve located the license file and it has the expiration date in it.

Step 4

Modify the expiration date in the license file to 2012-03-15 and save the file. Now launch the application again. The application should now display an error indicating that the license is invalid. Hit cancel to quit the application.

Step 5

Our next step is to start debugging the application right after it has read the license file. From Step 3, we know that the application uses CreateFileA to open the file and ReadFile to read the file. Setup a Breakpoint on CreateFileA and launch the application in API Monitor. The breakpoint will be hit multiple times; continue until you reach the one that opens the license file.

Switch back to API Monitor and enable a post-call breakpoint on the ReadFile API and disable the CreateFileA breakpoint. Now hit Continue to let the application run. API Monitor should now display the ReadFile breakpoint.

Now hit the Break button to have API Monitor generate a breakpoint in the application. You should now be able to attach to the application using a debugger.

Step 6

Your debugger should now display disassembled instructions from the application

If you look at the call stack, you’ll notice that the current frame is in apimonitor-drv-x86.sys. Use the debugger to step out until you reach code in the application.

Step 7

The debugger is currently at a location right after the application has finished reading the license file and before it checks the validity of the license. We need to locate the code that performs this check and disable it.

The most common software crack is the modification of an application’s binary to cause or prevent a specific key branch in the program’s execution. This is accomplished by reverse engineering the compiled program code using a debugger such as SoftICE, OllyDbg, GDB, or MacsBug until the software cracker reaches the subroutine that contains the primary method of protecting the software (or by disassembling an executable file with a program such as IDA). The binary is then modified using the debugger or a hex editor in a manner that replaces a prior branching opcode with its complement or a NOP opcode so the key branch will either always execute a specific subroutine or skip over it. – Wikipedia

Stepping though some of the code, we come across this location which looks like a possible match to the code we’re looking for.

Step 8

The value of register eax is 0, right after the function call. Let’s modify the value to 1 and continue running the application. The application displays a different error message this time; instead of an invalid license, the application is telling us that it is unable to locate the file.

Step 9

Now that we have pinpointed the location where the application checks for a valid license, all we need to do is to play around with the values and jmp instructions to find one that works. In this case, inverting the jump instruction from je to jne tells the application that it has a valid license file. Running the application with the modified code displays our new expiration date of March 15, 2012.

Discuss this article here: http://www.rohitab.com/discuss/topic/37059-using-api-monitor-to-crack-copy-protected-software/

最新文章

  1. 关于编译Android源码
  2. python数据结构与算法——完全树 与 最小/大堆
  3. 我的电脑右下角的日期也不见了只剩下时间,Win7系统,请问是什么原因啊?
  4. 感知开源的力量-APICloud Studio开源技术分享会
  5. 第四章:ARP 地址解析协议
  6. JavaScript中的apply与call与arguments对象
  7. JS面向对象编程(进阶理解)
  8. Python源码分析
  9. Android Studio | 详细安装教程
  10. SSH(Spring_SpringMVC_Hibernate)
  11. [powershell]获取FCID&Port
  12. js点击回到顶部2
  13. 利用ini_set()函数实现对php配置文件的修改
  14. Linux 安装 mysql 数据库
  15. 在浏览器中直接调用webservice的正确写法
  16. 当update的查询条件是数组的时候,upsert会失效
  17. MongoDB(六)-- 集群搭建
  18. 前端思想实现:面向UI编程_____前端框架设计开发
  19. Disruptor快速入门
  20. LINUX日志的错误等级

热门文章

  1. POJ 1984 Navigation Nightmare(二维带权并查集)
  2. centos安装更新Python2.7以及pip的安装
  3. 如何简单的测试kubernetes的dns add-ons是否工作正常?
  4. centos 时间日期设置
  5. ubuntu使用命令更新ubuntu系统
  6. npoi的用法,动态的判断单元格的大小,设置列的宽度
  7. [解决] python WindowsError: [Error 3]
  8. 【转载】TabLayout 源码解析
  9. (6) go 流程控制
  10. 【SQL】ORACLE生成临时表