因为之前程序调用了一个试用版的.lib库 , 而这个库有时间限制 , 导致程序在试用期过后不能使用 .
然后编译之后要破解一下编译出来的程序 , 很难受
闲来无事,突然想破解一下.lib , 毕竟是个代码库 , 看看是不是破解完了在编译 , 能正常使用
结果当然是能正常用了 不然就没这个帖子了 !
下面是流程:
1.材料介绍:
1.1 OD or X86 Dbg 等等调试工具
1.2 Notepad++(需安装插件) Ul***Edit(忘了啥名了) 等等支持16进制编辑的编辑工具
1.3 vs2010 或其他IDE,能编写代码编译就行
1.4 "未破解.lib"
1.5 用 "未破解.lib" 编译出来的 "未破解.exe"
2.破解exe流程
2.0 先直接运行 "未破解.exe" 结果如下图所示
2.1 先将 "未破解.exe"载入OD 并找到判断时间的位置
如图所示,红框部分就是关于时间的判断
0x7E1 转成10进制就是 2017
jnz 不相等则跳转
0xB 转成10进制是 11
jge 不小于则跳转
所以翻译过来就是
if ( 当前年份 == 2017 )
{
if ( 当前月份 < 11 )
{
//正常处理流程
}
else return (-100); //返回错误
}
else return (-100); //返回错误
2.2 修改 "未破解.exe" 并保存成 "已破解.exe"
为了不破坏原有结构 , 我没有将此处代码nop掉 , 而是修改了判断逻辑
翻译过来就是
if ( 当前年份 != 1792 )
{
if ( 当前月份 < 15 )
{
//正常处理流程
}
else return (-100); //返回错误
}
else return (-100); //返回错误
3.1 比较修改
参考上面2.1和2.2 的调试工具截图 发现 更改了如下图所示的三个字节
比如 00A531BC 原数据为 81 F9 E1 07 00 00
修改后为 81 F9 00 07 00 00
3.2 用16进制编辑器打开 "未破解.lib" 寻找相关数据
这个插件比较烂一些 , 还好不常用 , 如图所示 , 使用查找里面的计数功能 , 提示查找到了3个地方, 与破解exe修改的地方一致 , 那么 就可以开工啦 !
图中的红绿黄 对应的也就是 2.1图中红框圈起的前三行 , 然后我们参考 3.1图中的黄色箭头的部分 , 将他数据改掉, 如下图紫色圈所示
3.3 然后 另存为 "已破解.lib" , 并在源代码中 #pragma comment(lib,"已破解.lib") 调用 , 编译出 "测试.exe" , 运行 , 发现
正常运行 , 破解成功 !
平时写文章比较少 , 也不善于排版 , 主要是给自己一个备忘 , 如果有啥问题可以留言 , 或者加我 QQ: 958954297 相互交流
转载请保留出处
我写代码不是大神 , 破解也不是专家 , 但是就是想钻这一行 , 平时很多奇特的想法 , 奇葩的思路 , 爱好推动着我一步一步的去实现它们。














