关于程序界面换肤的问题--解决

2024-03-31 13:08

本文主要是介绍关于程序界面换肤的问题--解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在忙着解决程序界面的问题,总觉得以前写的程序界面太难看了,于是就在网上找了一个换肤程序:SkinMagic Toolkit 2.21 Trial,很明显,它是试用版,用它生成的程序界面是好看了,可是在运行程序之前总有一个MessageBox框,提示你是未注册版。如下图:

 

于是决定破了它,可是它又只是个LIB文件,似乎只能打补丁了,进攻开始了....

先下断MessageBoxA,F9,程序被断下,就是这个未注册的提示框,那就先NOP吧(从00404ACF到00404AE8):
00404ACF       6A 40          push 40
00404AD1       68 6C435D00    push AppTest.005D436C              ;  ASCII "Unregistered"
00404AD6       68 AC425D00    push offset AppTest.strTrial       ;  ASCII "This application uses trial version of SkinMagic Toolkit.
You can register at hxxp://www.appspeed.com"
00404ADB       6A 00          push 0
00404ADD    .  C705 D0246000 >mov dword ptr ds:[6024D0],1        ; |
00404AE7       FF15 609B6100  call dword ptr ds:[<&USER32.Messag>;  USER32.MessageBoxA

F9,程序是启来了,但是却没有皮肤了,而且只要在开始不弹注册框的情况下,都会没有皮肤,有点汗!

在仔细地检查了一遍代码之后,才发现在00404ADD处有一个赋值全局变量的操作
00404ADD    .  C705 D0246000 >mov dword ptr ds:[6024D0],1        ; |
很有可能这就是个标志位,将才一时性急,将它也NOP掉了,于是,,嘿嘿(坏坏地笑了几下!)
将这段代码还原之成如下:
00404ACF       90             nop
00404AD0       90             nop
00404AD1       90             nop
00404AD2       90             nop
00404AD3       90             nop
00404AD4       90             nop
00404AD5       90             nop
00404AD6       90             nop
00404AD7       90             nop
00404AD8       90             nop
00404AD9       90             nop
00404ADA       90             nop
00404ADB       90             nop
00404ADC       90             nop
00404ADD    .  C705 D0246000 >mov dword ptr ds:[6024D0],1        ; |保留这里
00404AE7       90             nop
00404AE8       90             nop
00404AE9       90             nop
00404AEA       90             nop
00404AEB       90             nop
00404AEC       90             nop
再保存文件,问题真的解决了,,现在即没有NAG框了也可以正常换肤了,,哈哈,,游戏结束!如图:

这是一个模拟进程切换的程序,不过代码不全就不贴了

今晚犯了两个同样的错误,其中一个就是这个,浪费了我19.14159267分钟的时间,另外一个是一段JAVA的代码,果然是经验主义害我不浅啊!以后要多多注意了!


 

这篇关于关于程序界面换肤的问题--解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/864409

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地