首页 > 其他分享 >TexturePackerGUI pro无限试用补丁

TexturePackerGUI pro无限试用补丁

时间:2022-11-04 14:35:14浏览次数:86  
标签:opt SystemTime pro 补丁 dll 载入 TexturePacker TexturePackerGUI

为什么使用TexturePackerGUI

https://www.codeandweb.com/texturepacker

1 OpenGL载入纹理图片时,所用内存会自动扩张到2的N次方。比如,一张图片的大小为10 10像素,OpenGL会按照16*16的规格将图片载入到内存中;如果图片大小为64 65,那么就会按照64 128载入了,这就造成了内存的无必要开销。所以在游戏开发使用图片资源时,我们要尽量保证图片的大小在接近且不大于2的整数倍,理想状态下,如果每一张图的长宽都恰好是2的n次方数值,就不会有任何浪费了。TexturePacker正是帮助我们将图片资源进行这样优化的一款软件

2 TexturePacker不仅能帮助我们在加载图片时节省内存,它将很多小图拼接成一张大图后,合成的大图会比之前所有的散图所占用的物理存储更小,也许一堆散图的大小为20KB,将它们合成一张大图后可能就变成了10KB,这样便从而通过减小图片资源物理存储大小起到压缩游戏安装包的作用

3 将很多小图拼接成一张大图,载入内存时一次载入,提高了载入速度

如,原本17张图片占用151k合并后占用51k


TexturePackerGUI 注册分析

TexturePackerGUI免费的pro版本只能试用7天,通过调试得知TexturePackerGUI会上报硬件信息的md5到服务器,服务器生成7天的授权保存在本地。

信息存储在 HKEY_CURRENT_USER\SOFTWARE\code-and-web.de\TexturePacker

补丁实现

观察到TexturePackerGUI采集的信息包含c盘磁盘大小, 那么就有一个很简单的思路,如果试用的授权过期则清除注册表保存的内容,同时hook GetVolumeInformationA让生成的机器7天变一次

TexturePackerGUI依赖winmm.dll所以利用aheadlib生成fake winmm.dll

BOOL
WINAPI
mine_GetVolumeInformationA(
	_In_opt_ LPCSTR lpRootPathName,
	_Out_writes_opt_(nVolumeNameSize) LPSTR lpVolumeNameBuffer,
	_In_ DWORD nVolumeNameSize,
	_Out_opt_ LPDWORD lpVolumeSerialNumber,
	_Out_opt_ LPDWORD lpMaximumComponentLength,
	_Out_opt_ LPDWORD lpFileSystemFlags,
	_Out_writes_opt_(nFileSystemNameSize) LPSTR lpFileSystemNameBuffer,
	_In_ DWORD nFileSystemNameSize
) {
	if (lpRootPathName && 0 == _stricmp(lpRootPathName, "c:\\") && lpVolumeSerialNumber)
	{
		*lpVolumeSerialNumber = time(NULL) / (60 * 60 * 24 * 7);
		return TRUE;
	}

	return FALSE;
}

void hook_texture() {
	OutputDebugStringA(__FUNCTION__);

	auto h = LoadLibraryW(L"TexturePackerLib.dll");
	if (h)
	{
		IATHook((void*)h, (char*)"kernel32.dll", (char*)"GetVolumeInformationA", mine_GetVolumeInformationA, NULL);

		DWORD dwType;
		WCHAR reg_Data[MAX_PATH] = {0};
		DWORD cbData;
		if (ERROR_SUCCESS == SHGetValue(HKEY_CURRENT_USER, L"SOFTWARE\\code-and-web.de\\TexturePacker\\licensing\\data", L"expiryDate", &dwType, reg_Data, &cbData)) {
			SYSTEMTIME SystemTime;
			GetLocalTime(&SystemTime);

			WCHAR cur_time[MAX_PATH] = { 0 };
			wsprintf(cur_time, L"%d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay);

			OutputDebugStringW(reg_Data);
			OutputDebugStringW(cur_time);

			if (_wcsicmp(cur_time, reg_Data) > 0)
			{
				OutputDebugStringA("delete");
				SHDeleteKey(HKEY_CURRENT_USER, L"SOFTWARE\\code-and-web.de\\TexturePacker");
			}
		}
	}	
}

void hook(){
    hook_texture();
}

最后把fake winmm.dll和TexturePackerGUI.exe放一起, 个人自测最新的6.0.2版本已经免费续杯了4个月

标签:opt,SystemTime,pro,补丁,dll,载入,TexturePacker,TexturePackerGUI
From: https://www.cnblogs.com/tieyan/p/16857659.html

相关文章

  • 你没见过的protected private修饰关系
    通常我们都见过publicprivateprotected以及internal,就含义来说比较容易总结public  1谁都可见private  2谁都不见除了自己protected 3你继承我否侧不......
  • vue中的依赖注入provide和inject(简单易懂)
    本文开始,首先我们来看这两个词的意思,provide:提供  inject:注入 用处:父组件可以向其所有子组件传入数据,而“不管子组件层次结构有多深(非父子和父子咱都能传)” 特性......
  • zabbix proxy 安装
    zabbixproxy4.0.x安装#官方安装参考链接:https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&components=proxy&db=mysql&ws=#Inst......
  • prometheus 监控案例-Tomcat、Redis、Mysql、Haproxy、Nginx
    服务监控  可以根据prometheus官网找到对应服务的exporter  https://prometheus.io/docs/instrumenting/exporters/监控Tomcat容器  基于第三方exporter实现......
  • pprof搭配ceph tell命令分析ceph内存
    文章目录​​安装​​​​使用​​​​使用`cephtell`产生堆栈信息文​​​​使用`pprof`工具分析内存及`cephtell`释放内存​​​​火焰图`FlameGraph`可视化进程堆栈信......
  • grafana jpprof 试用
    grafanajpprof是为了方便grafanaphlare对于java语言支持开发的一个包,可以让java语言方便的自持pprof格式的内容,进行持续性能优化以下是一个简单的试用环境准备......
  • #打卡不停更#三方库移植之NAPI开发[4]异步调用:Callback&Promise
    三方库移植之NAPI开发系列文章《HelloOpenHarmonyNAPI》、《C/C++与JS的数据类型转换》其接口都是同步的。对IO、CPU密集型任务需要异步处理。NAPI支持异步模型,提供了Pro......
  • prometheus 监控案例-kube-state-metrics
    kube-state-metrics组件介绍  github项目地址:https://github.com/kubernetes/kube-state-metrics  Kube-state-metrics:通过监听APIServer生成有关资源对象的......
  • prometheus 基于consul、file实现服务发现
    安装consul  consul官网:https://www.consul.io/  Consul是分布式k/v数据存储集群,目前常用于服务的服务注册和发现。   官网下载  下载链接1https://www.......
  • tinyproxy轻量级代理服务器
    tinyproxy是一款用于POSIX操作系统的轻量级HTTP/HTTPS代理服务程序,非常小巧快速,便于部署,性能也不差。仓库:https://github.com/tinyproxy/tinyproxy文档:https://tinyproxy......