好友
阅读权限20
听众
最后登录1970-1-1
|
醉生梦死.
发表于 2016-8-23 11:30
本帖最后由 醉生梦死. 于 2016-8-23 11:49 编辑
最近在研究一个叫宝宝取名的软件。发现每次关闭的时候,都会打开作者的网页。很讨厌!
相信各位在破解软件的时候,也会遇到这样的情况!
今天我们就利用bp ShellExecuteA去软件弹窗!
新手,欢迎各位批评指正帖中的不足、错误之处!
1.查壳(无壳,VC++6.0编写,其实是易语言)
2.载入OD,输入“bp ShellExecuteA”,回车。
按“F9”运行程序。然后再关闭程序。(因为程序是在退出的时候,才弹出IE的。)
3.如下图。作者网址出现了。
按“alt+F9” 执行到用户。
4.这段就是讨厌的弹窗代码了。右键,二进制,用NOP填充。
00555AD0 /$ 6A FF push -0x1
00555AD2 |. 68 AB936200 push 宝宝取名.006293AB ; SE 处理程序安装
00555AD7 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
00555ADD |. 50 push eax
00555ADE |. 64:8925 00000>mov dword ptr fs:[0],esp
00555AE5 |. 81EC 0C020000 sub esp,0x20C
00555AEB |. A1 94C9FA00 mov eax,dword ptr ds:[0xFAC994]
00555AF0 |. 56 push esi
00555AF1 |. 57 push edi
00555AF2 |. 8BF9 mov edi,ecx
00555AF4 |. 894424 08 mov dword ptr ss:[esp+0x8],eax
00555AF8 |. 8B47 44 mov eax,dword ptr ds:[edi+0x44]
00555AFB |. C78424 1C0200>mov dword ptr ss:[esp+0x21C],0x0
00555B06 |. 85C0 test eax,eax
00555B08 |. 0F85 FA000000 jnz 宝宝取名.00555C08
00555B0E |. 8B4F 48 mov ecx,dword ptr ds:[edi+0x48] ; 宝宝取名.00FAC9A8
00555B11 |. 8D77 48 lea esi,dword ptr ds:[edi+0x48]
00555B14 |. 8B41 F8 mov eax,dword ptr ds:[ecx-0x8]
00555B17 |. 85C0 test eax,eax
00555B19 |. 75 1B jnz short 宝宝取名.00555B36
00555B1B |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
00555B1F |. C78424 1C0200>mov dword ptr ss:[esp+0x21C],-0x1
00555B2A |. E8 AA4B0C00 call 宝宝取名.0061A6D9
00555B2F |. 33C0 xor eax,eax
00555B31 |. E9 49010000 jmp 宝宝取名.00555C7F
00555B36 |> 68 E07EF900 push 宝宝取名.00F97EE0 ; ASCII "mailto:"
00555B3B |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
00555B3F |. E8 1E4D0C00 call 宝宝取名.0061A862
00555B44 |. 56 push esi
00555B45 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
00555B49 |. E8 A34F0C00 call 宝宝取名.0061AAF1
00555B4E |> 8B4C24 08 mov ecx,dword ptr ss:[esp+0x8]
00555B52 |. 53 push ebx ; 宝宝取名.00544A50
00555B53 |. 55 push ebp
00555B54 |. 8BAC24 2C0200>mov ebp,dword ptr ss:[esp+0x22C]
00555B5B |. 55 push ebp ; /IsShown = 0x5
00555B5C |. 6A 00 push 0x0 ; |DefDir = NULL
00555B5E |. 6A 00 push 0x0 ; |Parameters = NULL
00555B60 |. 51 push ecx ; |FileName = 0000376E ???
00555B61 |. 68 D87EF900 push 宝宝取名.00F97ED8 ; |Operation = "open"
00555B66 |. 6A 00 push 0x0 ; |hWnd = NULL
00555B68 |. FF15 9C346300 call dword ptr ds:[<&SHELL32.ShellExecut>; \ShellExecuteA
00555B6E |. 8BF0 mov esi,eax
00555B70 |. 83FE 20 cmp esi,0x20
00555B73 |. 0F87 E4000000 ja 宝宝取名.00555C5D
00555B79 |. 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
00555B7D |. 8BCF mov ecx,edi
00555B7F |. 52 push edx ; 宝宝取名.004A0003
00555B80 |. 68 D07EF900 push 宝宝取名.00F97ED0 ; ASCII ".htm"
00555B85 |. 68 00000080 push 0x80000000
00555B8A |. E8 D1FEFFFF call 宝宝取名.00555A60
00555B8F |. 85C0 test eax,eax
00555B91 |. 0F85 C6000000 jnz 宝宝取名.00555C5D
00555B97 |. 8B1D 68336300 mov ebx,dword ptr ds:[<&KERNEL32.lstrcat>; kernel32.lstrcatA
00555B9D |. 8D4424 14 lea eax,dword ptr ss:[esp+0x14]
00555BA1 |. 68 BC7EF900 push 宝宝取名.00F97EBC ; /StringToAdd = "\shell\open\command"
00555BA6 |. 50 push eax ; |ConcatString = 0000002A ???
00555BA7 |. FFD3 call ebx ; \lstrcatA
00555BA9 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
00555BAD |. 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
00555BB1 |. 51 push ecx
00555BB2 |. 52 push edx ; 宝宝取名.004A0003
00555BB3 |. 68 00000080 push 0x80000000
00555BB8 |. 8BCF mov ecx,edi
00555BBA |. E8 A1FEFFFF call 宝宝取名.00555A60
00555BBF |. 85C0 test eax,eax
00555BC1 |. 0F85 96000000 jnz 宝宝取名.00555C5D
00555BC7 |. 8D4424 14 lea eax,dword ptr ss:[esp+0x14]
00555BCB |. 68 B47EF900 push 宝宝取名.00F97EB4 ; ASCII ""%1""
00555BD0 |. 50 push eax
00555BD1 |. E8 5A1C0A00 call 宝宝取名.005F7830
00555BD6 |. 8BF0 mov esi,eax
00555BD8 |. 83C4 08 add esp,0x8
00555BDB |. 85F6 test esi,esi
00555BDD |. 75 5D jnz short 宝宝取名.00555C3C
00555BDF |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
00555BE3 |. 68 B07EF900 push 宝宝取名.00F97EB0 ; ASCII "%1"
00555BE8 |. 51 push ecx
00555BE9 |. E8 C21B0A00 call 宝宝取名.005F77B0
00555BEE |. 8BF0 mov esi,eax
00555BF0 |. 83C4 08 add esp,0x8
00555BF3 |. 85F6 test esi,esi
00555BF5 |. 75 45 jnz short 宝宝取名.00555C3C
00555BF7 |. 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
00555BFB |. 52 push edx ; /String = "Ph"
00555BFC |. FF15 9C336300 call dword ptr ds:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00555C02 |. 8D7404 13 lea esi,dword ptr ss:[esp+eax+0x13]
00555C06 |. EB 37 jmp short 宝宝取名.00555C3F
00555C08 |> 8D57 4C lea edx,dword ptr ds:[edi+0x4C]
00555C0B |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
00555C0F |. 52 push edx ; 宝宝取名.004A0003
00555C10 |. E8 FD4B0C00 call 宝宝取名.0061A812
00555C15 |. 8B4424 08 mov eax,dword ptr ss:[esp+0x8]
00555C19 |. 8B48 F8 mov ecx,dword ptr ds:[eax-0x8]
00555C1C |. 85C9 test ecx,ecx
00555C1E |.^ 0F85 2AFFFFFF jnz 宝宝取名.00555B4E
00555C24 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
00555C28 |. C78424 1C0200>mov dword ptr ss:[esp+0x21C],-0x1
00555C33 |. E8 A14A0C00 call 宝宝取名.0061A6D9
00555C38 |. 33C0 xor eax,eax
00555C3A |. EB 43 jmp short 宝宝取名.00555C7F
00555C3C |> C606 00 mov byte ptr ds:[esi],0x0
00555C3F |> 68 AC7EF900 push 宝宝取名.00F97EAC ; UNICODE " "
00555C44 |. 56 push esi
00555C45 |. FFD3 call ebx ; 宝宝取名.00544A50
00555C47 |. 8B4424 10 mov eax,dword ptr ss:[esp+0x10]
00555C4B |. 50 push eax
00555C4C |. 56 push esi
00555C4D |. FFD3 call ebx ; 宝宝取名.00544A50
00555C4F |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
00555C53 |. 55 push ebp ; /ShowState = SW_SHOW
00555C54 |. 51 push ecx ; |CmdLine = 0000376E ???
00555C55 |. FF15 6C336300 call dword ptr ds:[<&KERNEL32.WinExec>] ; \WinExec
00555C5B |. 8BF0 mov esi,eax
00555C5D |> 33D2 xor edx,edx ; 宝宝取名.004A0003
00555C5F |. 83FE 20 cmp esi,0x20
00555C62 |. 0F9FC2 setg dl
00555C65 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
00555C69 |. 8BF2 mov esi,edx ; 宝宝取名.004A0003
00555C6B |. C78424 240200>mov dword ptr ss:[esp+0x224],-0x1
00555C76 |. E8 5E4A0C00 call 宝宝取名.0061A6D9
00555C7B |. 5D pop ebp ; 0012E9E0
00555C7C |. 8BC6 mov eax,esi
00555C7E |. 5B pop ebx ; 0012E9E0
00555C7F |> 8B8C24 140200>mov ecx,dword ptr ss:[esp+0x214] ; 宝宝取名.00549A05
00555C86 |. 5F pop edi ; 0012E9E0
00555C87 |. 5E pop esi ; 0012E9E0
00555C88 |. 64:890D 00000>mov dword ptr fs:[0],ecx
00555C8F |. 81C4 18020000 add esp,0x218
5.右键“复制到可执行文件”,然后保存。
6.重新打开保存后的程序再关闭,弹窗消失了!
上面NOP那个属于笨方法,其实我也只知道NOP,才疏学浅呀。幸得Hmily大神指点,又学到了新的知识!
大家碰到这样代码比较多的情况,可以试试Hmily大神提供的方法: 在入口00555AD0那修改成retn简单一些。
感谢Hmily大神!
|
免费评分
-
查看全部评分
|