一种破解静态链接库(.lib)的简单方法
来源:互联网 发布:航空医学知乎 编辑:程序博客网 时间:2024/05/21 11:21
一种破解静态链接库(.lib)的简单方法
作者:游蓝海
博客:http://blog.csdn.net/you_lan_hai
最近,在研究某代码时,遇到这样一个问题:整个解决方案中,有一个工程没有cpp源码,只有头文件跟一个静态链接库,虽然整个程序可以编译通过,但是lib文件中做了一些时间限制,导致程序启动的时候会弹出一个messagebox,提示工程过期,然后就终止执行了。当然这个问题可以通过调系统时间来暂时解决,但总是调时间也不是个事,于是就想起了要破解它。
在网上无意间搜索到一种破解方式(http://www.cnblogs.com/DylanWind/archive/2010/11/15/1877889.html),替换掉MessageBox,文中作者虽然尝试失败了,但是却给了我们一种思路——用参数相同的其他函数进行替换。比如,MessageBox的定义如下:
extern "C" int WINAPI MessageBoxA( __in_opt HWND hWnd, __in_opt LPCSTR lpText, __in_opt LPCSTR lpCaption, __in UINT uType);
那么我们可以写一个类似的函数:
extern "C" int WINAPI MessageBoxX( __in_opt HWND hWnd, __in_opt LPCWSTR lpText, __in_opt LPCWSTR lpCaption, __in UINT uType){ return 0;}
然后,打开xxx.lib文件,将里面的MessageBoxA全部替换成我们的MessageBoxX,重新编译应用程序,MessageBox就被屏蔽掉了。
也许上面的替换太过草率,你可以反汇编lib文件,查看具体的代码,以决定替换掉那些函数。
运行vc命令行,输入:dumpbin /disasm xxx.lib > test.txt 就会生成一个test.txt文件。在test.txt文件中搜索MessageBox,你可能会得到类似下面的反汇编:
在MessageBox之前,有一段比较时间的代码,如果满足条件会跳转到地址000000DD,也就是说不调用MessageBox,那么高手可以修改这个地方的代码,让他无条件跳转(很遗憾,我不是高手,所以只能用投机取巧的方法了)。在MessageBox之后,会调用abort函数,终止应用程序,因此,这行代码也必须要换掉!可以使用c语言库函数clock来替代。
总之,遵循一个规则:哪里用着不爽就替换掉哪里。good luck to you!
- 一种破解静态链接库(.lib)的简单方法
- 静态链接库lib
- Lib 静态链接库
- vc调用动态链接库DLL和静态链接库Lib的四种方法
- Lib 静态链接库 -1
- Lib 静态链接库 2
- 静态lib库的简单用法
- 静态链接库lib, 动态链接库dll,导入库lib的区别
- 动态链接库(.dll、.lib)与静态链接库(.lib)的创建与使用
- 静态库lib和动态链接库dll的基础知识
- VC中隐式链接无.LIB动态链接库的方法
- VC中隐式链接无.LIB动态链接库的方法
- VC中隐式链接无.LIB动态链接库的方法
- VC中隐式链接无.LIB动态链接库的方法
- 实现静态页面的一种非常简单的方法
- dll和lib(包括静态链接库和与dll同时生成的lib)
- dll和lib(包括静态链接库和与dll同时生成的lib)
- dll和lib(包括静态链接库和与dll同时生成的lib)
- LeetCode - Swap Nodes in Pairs
- 网站投票是什么
- LeetCode(108)Convert Sorted Array to Binary Search Tree
- [Tips:2]Chrome浏览器不支持小于12px的字体
- ubuntu12 安装Pig version 0.12.0
- 一种破解静态链接库(.lib)的简单方法
- 【数学基础】取石子游戏(二)
- [unity3d]导出安卓版设置
- hdu 3081 二分+最大流
- 求S字符串中最长重复子串
- 最长重复子串和最长不重复子串求解
- LeetCode - Pascal's Triangle
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 树莓派配置无线连接与无线AP热点