小白第一天之LOL雨鱼走砍的研究分析与网络验证破解
(编辑:jimmy 日期: 2024/11/17 浏览:3 次 )
第一步 查壳 为UPX壳直接甩脱壳机完美脱壳
第二步 甩入OD查找关键代码,发现加了VM和反程式无法正常调试,所以就还附加大法进行调试
第三步 搜索字符串中发现 “账号或密码错误!”看到这个就比较熟悉了,大部分E盾和山寨都是此提示,直接双击进去研究分析,往上查看代码找到子程序头
程序头明显看出来这是个登陆特征码,我们开始修改
0040C072 $ 55 push ebp 修改为 mov eax,1
0040C073 . 8BEC mov ebp,esp 修改为 retn 10 (子程序结尾为retn 10 所以我们这个地方要对应)
0040C075 . 81EC 20000000 sub esp,0x20 修改为 nop
0040C07B . C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
0040C082 . EB 10 jmp short 雨鱼多功.0040C094
0040C084 . 56 4D 50 72 6>ascii "VMProtect begin",0
0040C094 > 60 pushad
0040C095 . B8 01000000 mov eax,0x1
0040C09A . B8 02000000 mov eax,0x2
0040C09F . B8 04000000 mov eax,0x4
0040C0A4 . B8 02000000 mov eax,0x2
0040C0A9 . B8 05000000 mov eax,0x5
0040C0AE . B8 04000000 mov eax,0x4
0040C0B3 . B8 02000000 mov eax,0x2
0040C0B8 . B8 05000000 mov eax,0x5
0040C0BD . B8 06000000 mov eax,0x6
0040C0C2 . 61 popad
0040C0C3 . 53 push ebx
0040C0C4 . BB 01000000 mov ebx,0x1
0040C0C9 . BB 02000000 mov ebx,0x2
0040C0CE . BB 04000000 mov ebx,0x4
0040C0D3 . BB 02000000 mov ebx,0x2
0040C0D8 . BB 05000000 mov ebx,0x5
0040C0DD . BB 04000000 mov ebx,0x4
0040C0E2 . BB 02000000 mov ebx,0x2
0040C0E7 . BB 05000000 mov ebx,0x5
0040C0EC . BB 05000000 mov ebx,0x5
0040C0F1 . 5B pop ebx ; kernel32.7C817077
0040C0F2 . DBE3 finit
0040C0F4 . C705 08C18C00>mov dword ptr ds:[0x8CC108],0x0
0040C0FE . 68 04000080 push 0x80000004
0040C103 . 6A 00 push 0x0
0040C105 . 8B5D 08 mov ebx,dword ptr ss:[ebp+0x8] ; 雨鱼多功.<ModuleEntryPoint>
0040C108 . 8B03 mov eax,dword ptr ds:[ebx]
0040C10A . 85C0 test eax,eax
0040C10C . 75 05 jnz short 雨鱼多功.0040C113
0040C10E . B8 D3C66D00 mov eax,雨鱼多功.006DC6D3
0040C113 > 50 push eax
0040C114 . 68 01000000 push 0x1
0040C119 . BB 70A14200 mov ebx,雨鱼多功.0042A170
0040C11E . E8 5CDA0100 call 雨鱼多功.00429B7F
0040C123 . 83C4 10 add esp,0x10
0040C126 . 8945 F4 mov dword ptr ss:[ebp-0xC],eax
0040C129 . 837D F4 01 cmp dword ptr ss:[ebp-0xC],0x1
0040C12D . 0F8C 39000000 jl 雨鱼多功.0040C16C
0040C133 . 68 04000080 push 0x80000004
0040C138 . 6A 00 push 0x0
0040C13A . 8B5D 0C mov ebx,dword ptr ss:[ebp+0xC]
0040C13D . 8B03 mov eax,dword ptr ds:[ebx]
0040C13F . 85C0 test eax,eax
0040C141 . 75 05 jnz short 雨鱼多功.0040C148
0040C143 . B8 D3C66D00 mov eax,雨鱼多功.006DC6D3
0040C148 > 50 push eax
0040C149 . 68 01000000 push 0x1
0040C14E . BB 70A14200 mov ebx,雨鱼多功.0042A170
0040C153 . E8 27DA0100 call 雨鱼多功.00429B7F
0040C158 . 83C4 10 add esp,0x10
0040C15B . 8945 E8 mov dword ptr ss:[ebp-0x18],eax
0040C15E . 837D E8 01 cmp dword ptr ss:[ebp-0x18],0x1
0040C162 . 0F8C 04000000 jl 雨鱼多功.0040C16C
0040C168 . 33C0 xor eax,eax
0040C16A . EB 05 jmp short 雨鱼多功.0040C171
0040C16C > B8 01000000 mov eax,0x1
0040C171 > 85C0 test eax,eax
0040C173 . 0F84 6A000000 je 雨鱼多功.0040C1E3
0040C179 . B8 1D3E7300 mov eax,雨鱼多功.00733E1D ; 账号或密码错误!
第四步 登陆我们已经解决了,那么开始解决退出,搜索push 60,看到有个sub esp,0x1C是不是很熟悉,开始修改直接结束它的退出子程序。
004052FE /$ 55 push ebp 修改为 retn
004052FF |. 8BEC mov ebp,esp
00405301 |. 81EC 1C000000 sub esp,0x1C
00405307 |. 68 60000000 push 0x60
0040530C |. E8 62480200 call 雨鱼多功.00429B73
00405311 |. 83C4 04 add esp,0x4
00405314 |. 8945 FC mov [local.1],eax
00405317 |. 8BD8 mov ebx,eax
00405319 |. 8BF8 mov edi,eax
0040531B |. 33C0 xor eax,eax
0040531D |. B9 18000000 mov ecx,0x18
00405322 |. F3:AB rep stos dword ptr es:[edi]
00405324 |. 83C3 1C add ebx,0x1C
第五步 找它的退出暗装我们回到头搜索FF25,发现代码如下
00429B54 \. C3 retn
00429B55 $ FF25 BCC66D00 jmp dword ptr ds:[0x6DC6BC] ; 雨鱼多功.00446F50
00429B5B $ FF25 C0C66D00 jmp dword ptr ds:[0x6DC6C0] ; 雨鱼多功.00446F80
00429B61 $ FF25 C4C66D00 jmp dword ptr ds:[0x6DC6C4] ; 雨鱼多功.00446B30
00429B67 $ FF25 94C66D00 jmp dword ptr ds:[0x6DC694] ; 雨鱼多功.00446EE0
00429B6D $ FF25 98C66D00 jmp dword ptr ds:[0x6DC698] ; 雨鱼多功.00446B60
00429B73 $ FF25 ACC66D00 jmp dword ptr ds:[0x6DC6AC] ; 雨鱼多功.00447050
00429B79 $ FF25 B4C66D00 jmp dword ptr ds:[0x6DC6B4] ; 雨鱼多功.00447150
00429B7F $ FF25 A0C66D00 jmp dword ptr ds:[0x6DC6A0] ; 雨鱼多功.00446BB0
00429B85 $ FF25 B0C66D00 jmp dword ptr ds:[0x6DC6B0] ; 雨鱼多功.00447090
00429B8B $ FF25 A8C66D00 jmp dword ptr ds:[0x6DC6A8] ; 雨鱼多功.00446F20
00429B91 $ FF25 A4C66D00 jmp dword ptr ds:[0x6DC6A4] ; 雨鱼多功.00446F00
00429B97 $ FF25 B8C66D00 jmp dword ptr ds:[0x6DC6B8] ; 雨鱼多功.00447030
00429B9D $ FF25 9CC66D00 jmp dword ptr ds:[0x6DC69C] ; 雨鱼多功.00446B70
00429BA3 CC int3
我们从最下面的jmp依次往上进行寻找倒数第一个明显不是,我们看第二个发现代码如下
00447030 /$ 55 push ebp 修改为retn
00447031 |. 8BEC mov ebp,esp
00447033 |. 8B45 08 mov eax,[arg.1] ; 雨鱼多功.<ModuleEntryPoint>
00447036 |. 50 push eax
00447037 |. B9 60838D00 mov ecx,雨鱼多功.008D8360
0044703C |. E8 2F83FFFF call 雨鱼多功.0043F370
00447041 |. 8B4D 08 mov ecx,[arg.1] ; 雨鱼多功.<ModuleEntryPoint>
00447044 |. 51 push ecx ; /ExitCode = 0x12FFB0
00447045 \. FF15 2C826D00 call dword ptr ds:[<&KERNEL32.ExitProces>; \ExitProcess
0044704B . 5D pop ebp ; kernel32.7C817077
修改00447030 /$ 55 push ebp 为retn OK解决退出暗装
第六步 找它的登陆合法,E盾有很多特征码方法不一,我们就用sub esp,84试一试,回到401000搜索sub esp,84发现代码如下
00405F90 /$ 55 push ebp
00405F91 |. 8BEC mov ebp,esp
00405F93 |. 81EC 84000000 sub esp,0x84
00405F99 |. C745 FC 00000>mov [local.1],0x0
00405FA0 |. C745 F8 00000>mov [local.2],0x0
00405FA7 |. C745 F4 00000>mov [local.3],0x0
00405FAE |. 68 08010000 push 0x108
00405FB3 |. E8 BB3B0200 call 雨鱼多功.00429B73
通过分析,这段代码只有三个赋值,我们继续下一个,发现如下代码
这段是不是很像了?我们开始修改子程序头,然后过第一个赋值,从下选择2-5个进行修改,我就选择3个编辑为111111111111,修改后选择修改的地方复制,然后对mov eax,1进行修改把我们修改后的值给mov eax,00418F7D
00418F6D $ 55 push ebp 修改为mov eax,1 第二次修改mov eax,00418F7D
00418F6E . 8BEC mov ebp,esp 修改为leave
00418F70 . 81EC 84000000 sub esp,0x84 修改为retn
00418F76 . C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
00418F7D . C745 F8 00000>mov dword ptr ss:[ebp-0x8],0x0 修改
00418F84 . C745 F4 00000>mov dword ptr ss:[ebp-0xC],0x0 修改
00418F8B . C745 F0 00000>mov dword ptr ss:[ebp-0x10],0x0 修改
00418F92 . C745 EC 00000>mov dword ptr ss:[ebp-0x14],0x0
00418F99 . C745 E8 00000>mov dword ptr ss:[ebp-0x18],0x0
00418FA0 . 68 08000000 push 0x8
00418FA5 . E8 C90B0100 call 雨鱼多功.00429B73
修改后的代码如下:
00418F6D B8 7D8F4100 mov eax,雨鱼多功.00418F7D ; ASCII "1111111111"
00418F72 C9 leave
00418F73 C3 retn
00418F74 90 nop
00418F75 90 nop
00418F76 . C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
00418F7D 3131 xor dword ptr ds:[ecx],esi
00418F7F 3131 xor dword ptr ds:[ecx],esi
00418F81 3131 xor dword ptr ds:[ecx],esi
00418F83 3131 xor dword ptr ds:[ecx],esi
00418F85 3131 xor dword ptr ds:[ecx],esi
第七步 查找程序暗装 回到头搜索特征码83 C4 04 83 7D ?? 01 0F 8D (这个是E盾的到期时间暗装),不过我们补了时间这个也不需要了,需要的可以自己搜索修改。
第八步 查找登陆成功运算,我们用特征码
55 8B EC 81 EC ?? 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 C7 45 F4 00 00 00 00 C7 45
F0 00 00 00 00 C7 45 EC 00 00 00 00 C7 45 E8 00 00 00 00 C7 45 E4 00 00 00 00 C7 45 E0 00 00 00
00 C7 45 DC 00 00 00 00 C7 45 D8 00 00 00 00 C7 45 D4 00 00 00 00 C7 45 D0 00 00 00 00 C7 45 CC
00 00 00 00 C7 45 C8 00 00 00 00 C7 45 C4 00 00 00 00 C7 45 C0 00 00 00 00
进行搜索,结果如下:
00411186 /$ 55 push ebp 修改为leave
00411187 |. 8BEC mov ebp,esp 修改为retn
00411189 |. 81EC 88000000 sub esp,0x88 修改为nop
0041118F |. C745 FC 00000>mov [local.1],0x0
00411196 |. C745 F8 00000>mov [local.2],0x0
0041119D |. C745 F4 00000>mov [local.3],0x0
004111A4 |. C745 F0 00000>mov [local.4],0x0
004111AB |. C745 EC 00000>mov [local.5],0x0
004111B2 |. C745 E8 00000>mov [local.6],0x0
004111B9 |. C745 E4 00000>mov [local.7],0x0
004111C0 |. C745 E0 00000>mov [local.8],0x0
004111C7 |. C745 DC 00000>mov [local.9],0x0
004111CE |. C745 D8 00000>mov [local.10],0x0
004111D5 |. C745 D4 00000>mov [local.11],0x0
004111DC |. C745 D0 00000>mov [local.12],0x0
004111E3 |. C745 CC 00000>mov [local.13],0x0
004111EA |. C745 C8 00000>mov [local.14],0x0
004111F1 |. C745 C4 00000>mov [local.15],0x0
004111F8 |. C745 C0 00000>mov [local.16],0x0
004111FF |. C745 BC 00000>mov [local.17],0x0
00411206 |. 68 08000000 push 0x8
第九步 查找蓝屏特征码 是这个 55 8B EC 81 EC 2C 00 00 00 C7 45 FC 00 00 00 00 68 0C 00 00 00 ,结果如下
004058D1 /$ 55 push ebp 修改为retn 直接给他过掉
004058D2 |. 8BEC mov ebp,esp
004058D4 |. 81EC 2C000000 sub esp,0x2C
004058DA |. C745 FC 00000>mov [local.1],0x0
004058E1 |. 68 0C000000 push 0xC
004058E6 |. E8 88420200 call 雨鱼多功.00429B73
004058EB |. 83C4 04 add esp,0x4
OK程序到这就分析破解完了,我把软件放到百度云大家可以自己下载破解试试,补丁我就不放出来了,大家自己制作吧~
下一篇:PDF水印移除器