【实战】利用bp ShellExecuteA去软件弹窗。
本帖最后由 醉生梦死. 于 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:
00555ADD|.50 push eax
00555ADE|.64:8925 00000>mov dword ptr fs:,esp
00555AE5|.81EC 0C020000 sub esp,0x20C
00555AEB|.A1 94C9FA00 mov eax,dword ptr ds:
00555AF0|.56 push esi
00555AF1|.57 push edi
00555AF2|.8BF9 mov edi,ecx
00555AF4|.894424 08 mov dword ptr ss:,eax
00555AF8|.8B47 44 mov eax,dword ptr ds:
00555AFB|.C78424 1C0200>mov dword ptr ss:,0x0
00555B06|.85C0 test eax,eax
00555B08|.0F85 FA000000 jnz 宝宝取名.00555C08
00555B0E|.8B4F 48 mov ecx,dword ptr ds: ;宝宝取名.00FAC9A8
00555B11|.8D77 48 lea esi,dword ptr ds:
00555B14|.8B41 F8 mov eax,dword ptr ds:
00555B17|.85C0 test eax,eax
00555B19|.75 1B jnz short 宝宝取名.00555B36
00555B1B|.8D4C24 08 lea ecx,dword ptr ss:
00555B1F|.C78424 1C0200>mov dword ptr ss:,-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:
00555B3F|.E8 1E4D0C00 call 宝宝取名.0061A862
00555B44|.56 push esi
00555B45|.8D4C24 0C lea ecx,dword ptr ss:
00555B49|.E8 A34F0C00 call 宝宝取名.0061AAF1
00555B4E|>8B4C24 08 mov ecx,dword ptr ss:
00555B52|.53 push ebx ;宝宝取名.00544A50
00555B53|.55 push ebp
00555B54|.8BAC24 2C0200>mov ebp,dword ptr ss:
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:
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:
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:
00555BAD|.8D5424 14 lea edx,dword ptr ss:
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:
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:
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:
00555BFB|.52 push edx ; /String = "Ph"
00555BFC|.FF15 9C336300 call dword ptr ds:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00555C02|.8D7404 13 lea esi,dword ptr ss:
00555C06|.EB 37 jmp short 宝宝取名.00555C3F
00555C08|>8D57 4C lea edx,dword ptr ds:
00555C0B|.8D4C24 08 lea ecx,dword ptr ss:
00555C0F|.52 push edx ;宝宝取名.004A0003
00555C10|.E8 FD4B0C00 call 宝宝取名.0061A812
00555C15|.8B4424 08 mov eax,dword ptr ss:
00555C19|.8B48 F8 mov ecx,dword ptr ds:
00555C1C|.85C9 test ecx,ecx
00555C1E|.^ 0F85 2AFFFFFF jnz 宝宝取名.00555B4E
00555C24|.8D4C24 08 lea ecx,dword ptr ss:
00555C28|.C78424 1C0200>mov dword ptr ss:,-0x1
00555C33|.E8 A14A0C00 call 宝宝取名.0061A6D9
00555C38|.33C0 xor eax,eax
00555C3A|.EB 43 jmp short 宝宝取名.00555C7F
00555C3C|>C606 00 mov byte ptr ds:,0x0
00555C3F|>68 AC7EF900 push 宝宝取名.00F97EAC ;UNICODE " "
00555C44|.56 push esi
00555C45|.FFD3 call ebx ;宝宝取名.00544A50
00555C47|.8B4424 10 mov eax,dword ptr ss:
00555C4B|.50 push eax
00555C4C|.56 push esi
00555C4D|.FFD3 call ebx ;宝宝取名.00544A50
00555C4F|.8D4C24 14 lea ecx,dword ptr ss:
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:
00555C69|.8BF2 mov esi,edx ;宝宝取名.004A0003
00555C6B|.C78424 240200>mov dword ptr ss:,-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: ;宝宝取名.00549A05
00555C86|.5F pop edi ;0012E9E0
00555C87|.5E pop esi ;0012E9E0
00555C88|.64:890D 00000>mov dword ptr fs:,ecx
00555C8F|.81C4 18020000 add esp,0x218
5.右键“复制到可执行文件”,然后保存。
6.重新打开保存后的程序再关闭,弹窗消失了!
上面NOP那个属于笨方法,其实我也只知道NOP,才疏学浅呀。幸得Hmily大神指点,又学到了新的知识!
大家碰到这样代码比较多的情况,可以试试Hmily大神提供的方法: 在入口00555AD0那修改成retn简单一些。
感谢Hmily大神!
赶紧换换你那山寨改版权版的peid了,要么用原版,要么用exeinfope好了。
nop那么多有点累,可以直接在入口00555AD0那修改成retn简单一些。
你可以直接在段首retn。这样比较方便。。
你可以在数据窗口把网址改成吾爱破解论坛,这样不就更好了吗 Hmily 发表于 2016-8-23 11:36
赶紧换换你那山寨改版权版的peid了,要么用原版,要么用exeinfope好了。
一针见血呀!谢谢指点! 离大神这么近,顶一下 cqr2287 发表于 2016-8-23 11:49
你可以直接在段首retn。这样比较方便。。
你可以在数据窗口把网址改成吾爱破解论坛,这样不就更好了吗
言之有理。 非常有用感谢
非常有用..感谢.. 学习了的说! 楼主能不能给个软件下载地址?百度一下,不知道下载哪一个?
页:
[1]
2