软件名称:Skin++ For Visual Basic 3.0
官方网站:http://www.uipower.com/
文章作者:Moodsky
作者声明:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
想找一个VB能用的皮肤控件,朋友推荐了Skin++,当前版本3.0,编译後有限制,弹出讨厌的NAG提醒你去注册,然后调用IE自动跳转到官方网站。就利用这个IE跳转来找找吧,用OD打开Skin++_VB_Demo包里的工程1.exe,bp LoadLibraryA,F9共18次看到程序刚加载SkinPPVB.dll,ALT+M在
Memory map, 条目 59
地址=015D1000
大小=0006D000 (446464.)
属主=SkinPPVB 015D0000
区段=.text
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE
下断点,去掉LoadLibraryA断点,F9运行。
程序被断在:
016356B7 >/$ 55 push ebp
016356B8 |. 8BEC mov ebp, esp
016356BA |. 53 push ebx
016356BB |. 8B5D 08 mov ebx, dword ptr [ebp+8]
016356BE |. 56 push esi
016356BF |. 8B75 0C mov esi, dword ptr [ebp+C]
这时在下断点bp ShellExecuteW,F9运行,弹出NAG窗口,让我们点“是”,程序被断下了。
7D684E88 > 8BFF mov edi, edi
7D684E8A 55 push ebp
7D684E8B 8BEC mov ebp, esp
7D684E8D 83EC 3C sub esp, 3C
7D684E90 8B45 08 mov eax, dword ptr [ebp+8]
0013FC8C 015D2BA9 /CALL 到 ShellExecuteW 来自 SkinPPVB.015D2BA3
0013FC90 00000000 |hWnd = NULL
0013FC94 016567EC |Operation = "open"
0013FC98 016567F8 |FileName = "http://www.uipower.com"
0013FC9C 00000000 |Parameters = NULL
0013FCA0 00000000 |DefDir = NULL
0013FCA4 00000005 \IsShown = 5
去掉ShellExecuteW断点,在015D2BA9返汇编跟随,来到:
015D2B71 |. E8 9C230600 call <jmp.&MFC42u.#538>
015D2B76 |. A1 A4C86501 mov eax, dword ptr [165C8A4]
015D2B7B |. C74424 20 FFF>mov dword ptr [esp+20], -1
015D2B83 |. 50 push eax
015D2B84 |. E8 770F0000 call 015D3B00
015D2B89 |. 83C4 14 add esp, 14
015D2B8C |. 83F8 06 cmp eax, 6
015D2B8F |. 75 18 jnz short 015D2BA9
015D2B91 |. 6A 05 push 5 ; /IsShown = 5
015D2B93 |. 6A 00 push 0 ; |DefDir = NULL
015D2B95 |. 6A 00 push 0 ; |Parameters = NULL
015D2B97 |. 68 F8676501 push 016567F8 ; |FileName = "http://www.uipower.com"
015D2B9C |. 68 EC676501 push 016567EC ; |Operation = "open"
015D2BA1 |. 6A 00 push 0 ; |hWnd = NULL
015D2BA3 |. FF15 FCE56301 call dword ptr [<&SHELL32.ShellExecut>; \ShellExecuteW
015D2BA9 |> 8B4C24 08 mov ecx, dword ptr [esp+8]
因为这时NAG窗口已经运行,所以向上找,好来到:
015D2B30 /$ 6A FF push -1
015D2B32 |. 68 F85C6301 push 01635CF8 ; SE 处理程序安装
015D2B37 |. 64:A1 0000000>mov eax, dword ptr fs:[0]
015D2B3D |. 50 push eax
015D2B3E |. 64:8925 00000>mov dword ptr fs:[0], esp
015D2B45 |. 83EC 08 sub esp, 8
让我们按照步骤重新来到SkinPPVB.dll进程,CRTL+G,输入015D2B30,下断,F9运行。然后单步走发现到:
015D2B84 |. E8 770F0000 call 015D3B00
处NAG窗口出现,跟进:
015D3B00 6A FF push -1 ; 这个过程只是调用了一个函数来弹出NAG,所以直接RETN
015D3B02 |. 68 785D6301 push 01635D78 ; SE 处理程序安装
015D3B07 |. 64:A1 0000000>mov eax, dword ptr fs:[0]
015D3B0D |. 50 push eax
015D3B0E |. 64:8925 00000>mov dword ptr fs:[0], esp
015D3B15 |. 83EC 28 sub esp, 28
015D3B18 |. 56 push esi
015D3B19 |. 8B4C24 4C mov ecx, dword ptr [esp+4C]
015D3B1D |. 8B5424 3C mov edx, dword ptr [esp+3C]
015D3B21 |. 33C0 xor eax, eax
015D3B23 |. 80C9 80 or cl, 80
015D3B26 |. 894424 34 mov dword ptr [esp+34], eax
015D3B2A |. 894424 08 mov dword ptr [esp+8], eax
015D3B2E |. 8B4424 40 mov eax, dword ptr [esp+40]
015D3B32 |. 894C24 18 mov dword ptr [esp+18], ecx
015D3B36 |. 8B4C24 48 mov ecx, dword ptr [esp+48]
015D3B3A |. 894424 14 mov dword ptr [esp+14], eax
015D3B3E |. 895424 0C mov dword ptr [esp+C], edx
015D3B42 |. 8B5424 44 mov edx, dword ptr [esp+44]
015D3B46 |. 8D4424 04 lea eax, dword ptr [esp+4]
015D3B4A |. 81E1 FFFF0000 and ecx, 0FFFF
015D3B50 |. 50 push eax ; /pMsgBoxParams
015D3B51 |. C74424 08 280>mov dword ptr [esp+8], 28 ; |
015D3B59 |. 894C24 20 mov dword ptr [esp+20], ecx ; |
015D3B5D |. 895424 14 mov dword ptr [esp+14], edx ; |
015D3B61 |. FF15 FCE76301 call dword ptr [<&USER32.MessageBoxIn>; \MessageBoxIndirectW
015D3B67 |. 8D4C24 40 lea ecx, dword ptr [esp+40] ; 上面的函数弹出了NAG
015D3B6B |. 8BF0 mov esi, eax
015D3B6D |. E8 9A130600 call <jmp.&MFC42u.#800>
015D3B72 |. 8D4C24 44 lea ecx, dword ptr [esp+44]
015D3B76 |. C74424 34 FFF>mov dword ptr [esp+34], -1
015D3B7E |. E8 89130600 call <jmp.&MFC42u.#800>
015D3B83 |. 8B4C24 2C mov ecx, dword ptr [esp+2C]
015D3B87 |. 8BC6 mov eax, esi
015D3B89 |. 5E pop esi
015D3B8A |. 64:890D 00000>mov dword ptr fs:[0], ecx
015D3B91 |. 83C4 34 add esp, 34
015D3B94 \. C3 retn
返回来到:
015D2B89 |. 83C4 14 add esp, 14 ; 来到这里
015D2B8C |. 83F8 06 cmp eax, 6
015D2B8F |. 75 18 jnz short 015D2BA9 ; 由于更改後这里直接可以跳过ShellExecuteW所以就不必改了
015D2B91 |. 6A 05 push 5 ; /IsShown = 5
015D2B93 |. 6A 00 push 0 ; |DefDir = NULL
015D2B95 |. 6A 00 push 0 ; |Parameters = NULL
015D2B97 |. 68 F8676501 push 016567F8 ; |FileName = "http://www.uipower.com"
015D2B9C |. 68 EC676501 push 016567EC ; |Operation = "open"
015D2BA1 |. 6A 00 push 0 ; |hWnd = NULL
015D2BA3 |. FF15 FCE56301 call dword ptr [<&SHELL32.ShellExecut>; \ShellExecuteW
015D2BA9 |> 8B4C24 08 mov ecx, dword ptr [esp+8]
015D2BAD |. 64:890D 00000>mov dword ptr fs:[0], ecx
015D2BB4 |. 83C4 14 add esp, 14
015D2BB7 \. C3 retn
OK,收工。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课