本文主要是介绍关于程序界面换肤的问题--解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在忙着解决程序界面的问题,总觉得以前写的程序界面太难看了,于是就在网上找了一个换肤程序: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的代码,果然是经验主义害我不浅啊!以后要多多注意了!
这篇关于关于程序界面换肤的问题--解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!