-
-
[原创]任意文件转obj/lib的小工具(附源码)
-
2016-12-30 23:51
7265
-
[原创]任意文件转obj/lib的小工具(附源码)
很久没有来逛了,从论坛下载了不少各位大侠的作品,但大多成了收藏品,还是非常感谢各位网友!
分享一个小工具吧,它没有什么大用,主要用来打包,可以把任意文件转换成obj/lib,方便在程序中引用。
为什么要这样呢?原因很简单:
1)如果你作为resource导入工程当然可以,但别人用……比如VC,open as resource就看见了,另存为就完整的抓到了。7zip提取资源也很easy。可能你不介意这个。
2)你自己要用的时候要FindResource()/LoadResource(),大概勤劳的你也不介意。
3)你可以压缩文件减小尺寸,加密文件以防字符串查找什么的。大家可以自由发挥,虽然我没提供这类功能。当然,作为资源也可以这样做。
用法:
在命令行下运行
cvmk 文件列表
得到libbin.h/.lib,链接到你的工程里面即可。文件列表可以是单个文件,也支持通配符*/?。
由于我比较懒,批处理命令最多只接受9个参数,对于聪明的你应该够用了。比如你要转换一堆DLL,放到A:\binary目录下,在A:\binary目录下执行 cvmk *.dll,只用了一个参数。
用的地方
#include "libbin.h"
#pragma comment(lib,"libbin.lib")
假设源文件是abc.dll,libbin.h里面会定义ORG_SIZEOF_ABC_DLL为源文件的字节数,extern unsigned char abc_dll[],这个数组就是源文件的内容。注意:这个声明不要改,这样声明最简洁,不信你改别的样式试试。
已知缺陷:基本文件名相同,扩展名不同的多个文件不能转,原因是转换时简单地去掉了扩展名,只产生一个.obj。
最后说明一下,里面附带的工具是VC6的,源码只有区区4KB。你可以做一些改动以适合你的需要。比如数据段名不叫.rdata,或者包含共享属性,或者可执行,或者其他的CPU架构,诸如此类。
祝各位网友新年快乐!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法