首页
社区
课程
招聘
[旧帖] [原创]Skin++ For E语言 3.0 分析 0.00雪花
发表于: 2007-5-3 23:38 8775

[旧帖] [原创]Skin++ For E语言 3.0 分析 0.00雪花

2007-5-3 23:38
8775
看了moodsky大致写的文章:
http://bbs.pediy.com/showthread.php?t=43546
偶又在学习E语言,也下个E语言的皮肤控件玩玩,破解方法与他的不一样,适合偶们新手一起练练?

软件名称:Skin++ For E语言 3.0
下载网站:http://www.uipower.com/

分析 “..\Skin++ For E” 目录下的 “SkinPlusPlusE.dll” 文件,没有加壳。

用OD打开用了SkinPlusPlusE.dll控件编译(注意:不是独立编译哈)后的『古木五子棋人机对战』目录下的 “古木五子棋人机对战.exe” 文件(在它众多目录中随便找的一个),在CPU窗口中,点击鼠标右键,选择‘搜索-》所有参考文本串’,在新弹出的文本字符串参考窗口中,却没有找到任何与NAG窗口有关的信息 :-( 。

于是按(Alt+E)键打开执行模块窗口!窗口中居然也没有显示SkinPlusPlusE.dll的信息,而作为控件的核心,这个dll是一定要被导入的!

那运行一下试试?按(F9)键运行,这时出现了NAG广告窗口,不要慌着按NAG窗口的“是”或“否”按钮,而是在OD中按(F12)键暂停,这时发现在 模块窗口 中:

Executable modules, 条目 2
基址=00BD0000
大小=000B0000 (720896.)
入口=00C3CE79 SkinPlus.<模块入口点>
名称=SkinPlus
文件版本=3, 0, 0, 0
路径=C:\Program Files\Skin++ 3.0 For E语言\Skin++ For E\SkinPlusPlusE.dll

却出现了,鼠标双击这一行后,便来到了SkinPlusPlusE.dll的领空,再点击鼠标右键,搜索“所有参考文本串”,得到如下与破解有管的信息:

......;1.NAG窗口的提示信息......
超级字符串参考, 条目 1
地址=00BD10F7
反汇编地址=push    SkinPlus.00C5D080
字符内容=UIPower : Skin++ allows you to add skinning ability to your applications.\r\n\r\nFor informationon obtaining a license to use this control,\r\n\r\nplease visit www.uipower.com or e-mail [email]sales@uipwer.com[/email]\r\n\r\nAre you registering skin++ now ?

......;2.皮肤文件的检测......
超级字符串参考, 条目 4
地址=00BD11A9
反汇编地址=push    SkinPlus.00C5D19C
字符内容=PixOS
超级字符串参考, 条目 5
地址=00BD11C2
反汇编地址=push    SkinPlus.00C5D194
字符内容=ferix
超级字符串参考, 条目 6
地址=00BD11D4
反汇编地址=push    SkinPlus.00C5D188
字符内容=MediaPlayer

......;3.合成DLL后(E语言独立编译)的检测......
超级字符串参考 A++         , 条目 88
地址=00AEA648
反汇编地址=push    SkinPlus.00B6D84C
字符内容=本版本的Skin++支持%s,不支持生成当前应用程序的开发工具!\r\n\r\n请检查开发工具对应的Skin++版本!!!

双击这些字符串进入到相应的代码中,再F2键下断,然后F9键,继续运行,这时,停在了下断的地方:
。。。。。。
(省略)
00BD11A7    33DB            xor     ebx, ebx
00BD11A9    68 9CD1C500     push    SkinPlus.00C5D19C                ; PixOS ;断在了这里
00BD11AE    8D4C24 24       lea     ecx, dword ptr [esp+24]
00BD11B2    895C24 1C       mov     dword ptr [esp+1C], ebx
00BD11B6    E8 2BB70600     call    <jmp.&MFC42.#2764_CString::Find>
00BD11BB    83CD FF         or      ebp, FFFFFFFF
00BD11BE    3BC5            cmp     eax, ebp                         ; 比较是否为:PixOS皮肤
00BD11C0    75 28           jnz     short SkinPlus.00BD11EA          ; ×修改为JMP强制跳转×
00BD11C2    68 94D1C500     push    SkinPlus.00C5D194                ; ferix
00BD11C7    8D4C24 24       lea     ecx, dword ptr [esp+24]
00BD11CB    E8 16B70600     call    <jmp.&MFC42.#2764_CString::Find>
00BD11D0    3BC5            cmp     eax, ebp
00BD11D2    75 16           jnz     short SkinPlus.00BD11EA          ; 比较是否为:ferix皮肤
00BD11D4    68 88D1C500     push    SkinPlus.00C5D188                ; MediaPlayer
00BD11D9    8D4C24 24       lea     ecx, dword ptr [esp+24]
00BD11DD    E8 04B70600     call    <jmp.&MFC42.#2764_CString::Find>
00BD11E2    3BC5            cmp     eax, ebp
00BD11E4    0F84 CC000000   je      SkinPlus.00BD12B6                ; 比较是否为:MediaPlayer皮肤
00BD11EA    E8 F1030000     call    SkinPlus.sppRemoveSkin           ; ×修改后,必须来到这里×
00BD11EF    68 18070000     push    718
00BD11F4    E8 E7B60600     call    <jmp.&MFC42.#823_operator new>
00BD11F9    83C4 04         add     esp, 4
00BD11FC    894424 0C       mov     dword ptr [esp+C], eax
00BD1200    3BC3            cmp     eax, ebx
00BD1202    C64424 18 01    mov     byte ptr [esp+18], 1
00BD1207    74 09           je      short SkinPlus.00BD1212
00BD1209    8BC8            mov     ecx, eax
00BD120B    E8 300F0000     call    SkinPlus.00BD2140
00BD1210    EB 02           jmp     short SkinPlus.00BD1214
00BD1212    33C0            xor     eax, eax
00BD1214    68 1C010000     push    11C
00BD1219    885C24 1C       mov     byte ptr [esp+1C], bl
00BD121D    A3 1017C600     mov     dword ptr [C61710], eax
00BD1222    E8 B9B60600     call    <jmp.&MFC42.#823_operator new>
00BD1227    83C4 04         add     esp, 4
00BD122A    894424 0C       mov     dword ptr [esp+C], eax
00BD122E    3BC3            cmp     eax, ebx
00BD1230    C64424 18 02    mov     byte ptr [esp+18], 2
00BD1235    74 09           je      short SkinPlus.00BD1240
00BD1237    8BC8            mov     ecx, eax
00BD1239    E8 62890000     call    SkinPlus.00BD9BA0
00BD123E    EB 02           jmp     short SkinPlus.00BD1242
00BD1240    33C0            xor     eax, eax
00BD1242    A3 1417C600     mov     dword ptr [C61714], eax
00BD1247    A1 1817C600     mov     eax, dword ptr [C61718]
00BD124C    56              push    esi
00BD124D    8B35 EC51C400   mov     esi, dword ptr [<&KERNEL32.LoadL>; kernel32.LoadLibraryA
00BD1253    3BC3            cmp     eax, ebx
00BD1255    885C24 1C       mov     byte ptr [esp+1C], bl
00BD1259    75 0C           jnz     short SkinPlus.00BD1267
00BD125B    68 7CD1C500     push    SkinPlus.00C5D17C                ; msimg32.dll
00BD1260    FFD6            call    esi
00BD1262    A3 1817C600     mov     dword ptr [C61718], eax
00BD1267    391D 1C17C600   cmp     dword ptr [C6171C], ebx
00BD126D    75 0C           jnz     short SkinPlus.00BD127B
00BD126F    68 70D1C500     push    SkinPlus.00C5D170                ; User32.dll
00BD1274    FFD6            call    esi
00BD1276    A3 1C17C600     mov     dword ptr [C6171C], eax
00BD127B    57              push    edi
00BD127C    E8 DF970000     call    SkinPlus.00BDAA60
00BD1281    83C4 04         add     esp, 4
00BD1284    85C0            test    eax, eax
00BD1286    5E              pop     esi
00BD1287    74 28           je      short SkinPlus.00BD12B1           ; 不能跳
00BD1289    395C24 24       cmp     dword ptr [esp+24], ebx
00BD128D    75 5A           jnz     short SkinPlus.00BD12E9           ; 不能跳
00BD128F    A1 1417C600     mov     eax, dword ptr [C61714]
00BD1294    C780 14010000 0>mov     dword ptr [eax+114], C0000000
00BD129E    8B0D 1417C600   mov     ecx, dword ptr [C61714]
00BD12A4    51              push    ecx
00BD12A5    E8 06920000     call    SkinPlus.00BDA4B0                 ; 合成DLL后(E语言独立编译)的检测
00BD12AA    83C4 04         add     esp, 4
00BD12AD    85C0            test    eax, eax
00BD12AF    75 28           jnz     short SkinPlus.00BD12D9
00BD12B1    E8 7AFEFFFF     call    SkinPlus.00BD1130
00BD12B6    8D4C24 20       lea     ecx, dword ptr [esp+20]
00BD12BA    896C24 18       mov     dword ptr [esp+18], ebp
00BD12BE    E8 17B60600     call    <jmp.&MFC42.#800_CString::~CStri>
00BD12C3    5F              pop     edi
00BD12C4    5D              pop     ebp
00BD12C5    33C0            xor     eax, eax
00BD12C7    5B              pop     ebx
00BD12C8    8B4C24 04       mov     ecx, dword ptr [esp+4]
00BD12CC    64:890D 0000000>mov     dword ptr fs:[0], ecx
00BD12D3    83C4 10         add     esp, 10
00BD12D6    C2 0800         retn    8
00BD12D9    E8 D2C50000     call    SkinPlus.00BDD8B0
00BD12DE    53              push    ebx
00BD12DF    E8 2CC50000     call    SkinPlus.00BDD810
00BD12E4    83C4 04         add     esp, 4
00BD12E7    EB 0C           jmp     short SkinPlus.00BD12F5
00BD12E9    8B15 1417C600   mov     edx, dword ptr [C61714]
00BD12EF    899A 14010000   mov     dword ptr [edx+114], ebx
00BD12F5    E8 E6660000     call    SkinPlus.00BD79E0
00BD12FA    E8 F1FDFFFF     call    SkinPlus.00BD10F0                 ; 弹出NAG对话框的Call,F7键进入
(省略)
。。。。。。

F7键进入了 call    SkinPlus.00BDA4B0 后:(合成DLL后(E语言独立编译)的检测)
。。。。。。
00AEA4B0    64:A1 00000000  mov     eax, dword ptr fs:[0]
00AEA4B6    6A FF           push    -1
00AEA4B8    68 3BDAB400     push    SkinPlus.00B4DA3B
00AEA4BD    50              push    eax
00AEA4BE    A1 A018B700     mov     eax, dword ptr [B718A0]
00AEA4C3    64:8925 0000000>mov     dword ptr fs:[0], esp
00AEA4CA    83EC 1C         sub     esp, 1C
00AEA4CD    57              push    edi
00AEA4CE    33FF            xor     edi, edi
00AEA4D0    3BC7            cmp     eax, edi
00AEA4D2    75 23           jnz     short SkinPlus.00AEA4F7          ; ×修改为JMP强制跳转× ; 必须跳
00AEA4D4    C705 A018B700 0>mov     dword ptr [B718A0], 1
00AEA4DE    E8 4D010000     call    SkinPlus.00AEA630                ; 合成DLL后(E语言独立编译)的检测
00AEA4E3    85C0            test    eax, eax
00AEA4E5    75 10           jnz     short SkinPlus.00AEA4F7
00AEA4E7    5F              pop     edi
00AEA4E8    8B4C24 1C       mov     ecx, dword ptr [esp+1C]
00AEA4EC    64:890D 0000000>mov     dword ptr fs:[0], ecx
00AEA4F3    83C4 28         add     esp, 28
00AEA4F6    C3              retn
。。。。。。

F7键进入上面的 call    SkinPlus.00AEA630 后:(合成DLL后(E语言独立编译)的检测)
。。。。。。
1000A630   $  6A FF         push    -1
1000A632   .  68 60DA0610   push    SkinPlus.1006DA60                ;  SE 处理程序安装
1000A637   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
1000A63D   .  50            push    eax
1000A63E   .  64:8925 00000>mov     dword ptr fs:[0], esp
1000A645   .  83EC 08       sub     esp, 8
1000A648   .  68 4CD80810   push    SkinPlus.1008D84C                ;  本版本的Skin++支持%s,不支持生成当前应用程序的开发工具!\r\n\r\n请检查开发工具对应的Skin++版本!!!
1000A64D   .  8D4C24 08     lea     ecx, dword ptr [esp+8]
1000A651   .  E8 96220600   call    <jmp.&MFC42.#537_CString::CStrin>
1000A656   .  8D4C24 00     lea     ecx, dword ptr [esp]
1000A65A   .  C74424 10 000>mov     dword ptr [esp+10], 0
1000A662   .  E8 A3220600   call    <jmp.&MFC42.#540_CString::CStrin>
1000A667   .  A1 30180910   mov     eax, dword ptr [10091830]
1000A66C   .  C64424 10 01  mov     byte ptr [esp+10], 1
1000A671   .  3D 00000004   cmp     eax, 4000000                     ;  Switch (cases 1000000..FF000000)
1000A676   .  75 56         jnz     short SkinPlus.1000A6CE
1000A678   .  68 40D80810   push    SkinPlus.1008D840                ; /krnln.fne; Case 4000000 of switch 1000A671
1000A67D   .  FF15 C4510710 call    dword ptr [<&KERNEL32.GetModuleH>; \GetModuleHandleA
1000A683   .  85C0          test    eax, eax
1000A685      74 33         je      short SkinPlus.1000A6BA          ;  ×不能跳×,修改为NOP
1000A687   .  8D4C24 00     lea     ecx, dword ptr [esp]
1000A68B   .  C64424 10 00  mov     byte ptr [esp+10], 0
1000A690   .  E8 45220600   call    <jmp.&MFC42.#800_CString::~CStri>
1000A695   .  8D4C24 04     lea     ecx, dword ptr [esp+4]
1000A699   .  C74424 10 FFF>mov     dword ptr [esp+10], -1
1000A6A1   .  E8 34220600   call    <jmp.&MFC42.#800_CString::~CStri>
1000A6A6   .  B8 01000000   mov     eax, 1
1000A6AB   .  8B4C24 08     mov     ecx, dword ptr [esp+8]
1000A6AF   .  64:890D 00000>mov     dword ptr fs:[0], ecx
1000A6B6   .  83C4 14       add     esp, 14
1000A6B9   .  C3            retn
1000A6BA   >  8B4424 04     mov     eax, dword ptr [esp+4]
1000A6BE   .  68 38D80810   push    SkinPlus.1008D838                ;  E语言
1000A6C3   .  8D4C24 04     lea     ecx, dword ptr [esp+4]
。。。。。。

F7键进入了 call    SkinPlus.00BD10F0 后:(弹出NAG对话框的Call,F7键进入)
。。。。。。
00BD10F0    6A 44           push    44                                   ; ×这里修改为retn,强制返回,即可×
00BD10F2    68 68D1C500     push    SkinPlus.00C5D168                    ; UIPOWER
00BD10F7    68 80D0C500     push    SkinPlus.00C5D080                    ; UIPower : Skin++ allows you to add skinning ability to your applications.\r\n\r\nFor informationon obtaining a license to use this control,\r\n\r\nplease visit www.uipower.com or e-mail [email]sales@uipwer.com[/email]\r\n\r\nAre you registering skin++ now ?
00BD10FC    6A 00           push    0
00BD10FE    FF15 A856C400   call    dword ptr [<&USER32.MessageBoxA>]    ; USER32.MessageBoxA ; 弹出NAG对话框
00BD1104    83F8 06         cmp     eax, 6
00BD1107    75 18           jnz     short SkinPlus.00BD1121              ; 如果选择了“是”按钮,则打开下面的主页
00BD1109    6A 05           push    5
00BD110B    6A 00           push    0
00BD110D    6A 00           push    0
00BD110F    68 68D0C500     push    SkinPlus.00C5D068                    ; http://www.uipower.com
00BD1114    68 60D0C500     push    SkinPlus.00C5D060                    ; open
00BD1119    6A 00           push    0
00BD111B    FF15 8455C400   call    dword ptr [<&SHELL32.ShellExecuteA>] ; SHELL32.ShellExecuteA
00BD1121    C3              retn
。。。。。。

通过上面的分析,知道了在SkinPlusPlusE.dll中:

//1.NAG窗口的提示信息:
将:  00BD11C0    75 28           jnz     short SkinPlus.00BD11EA
改为:00BD11C0    EB 28           jmp     short SkinPlus.00BD11EA

将:  00AE1287    74 28           je      short SkinPlus.00AE12B1
改为:00AE1287    90              nop
      00AE1288    90              nop

将:  00AE128D    75 5A           jnz     short SkinPlus.00AE12E9
改为:00AE128D    90              nop
      00AE128E    90              nop

//2.合成DLL后(E语言独立编译)的检测:
将:  00AEA4D2    75 23           jnz     short SkinPlus.00AEA4F7
改为:00AEA4D2    EB 23           jmp     short SkinPlus.00AEA4F7

将:  1000A685      74 33         je      short SkinPlus.1000A6BA
改为:1000A685      90            nop
      1000A686      90            nop

//3.皮肤文件的检测:
将:  00BD10F0    6A 44           push    44
改为:00BD10F0    C3              retn
      00BD10F0    90              nop

最后,将破解了的SkinPlusPlusE.dll文件拷贝到原目录中覆盖掉先前的SkinPlusPlusE.dll文件,即可!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习,顶一下!
2007-5-28 11:46
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
对大侠的敬仰如~~~~~~~~~~~~~~~~~~~~~~江水~~~~~~~~~~~~~~~~~~~~~~~~~~~~不绝,又如~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~收不了
2007-5-28 11:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看了此帖只后,不知是我的水平下降了,还是你的水平太高了,唉
2007-5-28 12:40
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
什么意思呀?不懂!
2007-5-28 14:30
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好晕啊,,百分之90看不懂
2007-5-28 20:13
0
游客
登录 | 注册 方可回帖
返回
//