1.菜单功能限制
可解密试用版和正式版为同一文件,注册之前部分功能不能试用,注册之后所有部分都可以使用。
1.1相关函数
1.EnableMenultem()函数
2.EnableWindow()函数
1.2实例演示
1.OD加载EnableMenu.exe,右键选择查找所有模块中的名称,找到Enable Menu Item()函数。
2.双击地址处,进入该函数地址,在此处添加断点,运行然后返回到用户代码处。
3.用户代码处,上一条为调用该函数,之上则为参数。
4.将push 0x1改为push 0x0,则取消掉了改菜单上的限制。
更改之前:
更改之后:
2.KeyFIle保护
KeyFile是利用文件来注册软件的保护方式。
2.1相关函数
2.2拆解KeyFile保护
1.OD装载CreateFileA函数,查找CreateFileA函数。双击到达代码处,设置断点。
2.运行代码,中断在此处,返回用户程序,在参数入栈处设置断点。
3.在此处可看见,系统监测文件名。伪造一个文件同名文件。则正常加载
为仿造之前,点击check按钮,无反应:
仿造之后,点击check按钮,出现弹窗:
3.网络验证
将关键技术放在服务器上,软件从服务器取得数据才能正确运行。
3.1相关函数
4.光盘验证
有些软件和游戏在使用时需要检查光盘是否插在光驱中,如果没有则拒绝运行。
4.1相关函数
4.2破解光盘保护
1.OD加载CD_Check文件
2.找到GetDriveType()函数以及CreateFile()函数。
3.分析此段代码。使用GetDriveTyoeA()函数获取驱动器类型,找到不是硬盘的驱动器。在此光驱理寻找文件名为:“CD_CHECK.DAT"的文件。使用CreatFile()函数,打开该文件,若打开成功则跳转,将此处改成无论是否成功都进行跳转。在如图所示处进行更改则成功破解。
4.破解成功。
破解之前:
破解之后:
5.常用断点