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

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

相关文章

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,