好友
阅读权限10
听众
最后登录1970-1-1
|
【文章标题】: 进进金牌网吧奖励0703脱壳去自校验去广告
【文章作者】: sky827
【软件名称】: 进进金牌网吧奖励0703
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
1.查壳 UPX 2.93 (LZMA) *
2.脱壳
手脱吧,OD载入
101315C0 > 60 pushad
101315C1 BE 00900C10 mov esi,进进金牌.100C9000
101315C6 8DBE 0080F4FF lea edi,dword ptr ds:[esi+FFF48000]
101315CC 57 push edi
101315CD 89E5 mov ebp,esp
101315CF 8D9C24 80C1FFFF lea ebx,dword ptr ss:[esp-3E80]
第一次ESP定律,来到
100971B4 F8 clc
100971B5 73 21 jnb short 进进金牌.100971D8
100971B7 D017 rcl byte ptr ds:[edi],1
100971B9 FD std
100971BA 0C C9 or al,0C9
继续F8跟踪,来到
100971D8 60 pushad
100971D9 EB 13 jmp short 进进金牌.100971EE
100971DB 031D 4F2C6AA2 add ebx,dword ptr ds:[A26A2C4F]
100971E1 D4 A1 aam 0A1
100971E3 3E:C7 ??? ; 未知命令
100971E5 BD 197874E3 mov ebp,E3747819
100971EA 5D pop ebp
100971EB CC int3
100971EC 5D pop ebp
第二次ESP定律,来到
100973F9 F9 stc
100973FA EB 03 jmp short 进进金牌.100973FF
100973FC 27 daa
100973FD 1F pop ds
100973FE 14 E9 adc al,0E9
10097400 FD std
10097401 C2 FDFF retn 0FFFD
10097404 8BCB mov ecx,ebx
接着F8跟来到OEP了
10073701 55 push ebp
10073702 8BEC mov ebp,esp
10073704 6A FF push -1
10073706 68 70CF0C10 push 进进金牌.100CCF70
1007370B 68 B45F0710 push 进进金牌.10075FB4
10073710 64:A1 00000000 mov eax,dword ptr fs:[0]
10073716 50 push eax
10073717 64:8925 0000000>mov dword ptr fs:[0],esp
1007371E 83EC 58 sub esp,58
10073721 53 push ebx
10073722 56 push esi
10073723 57 push edi
10073724 8965 E8 mov dword ptr ss:[ebp-18],esp
10073727 FF15 9C510B10 call dword ptr ds:[100B519C] ; kernel32.GetVersion
1007372D 33D2 xor edx,edx
1007372F 8AD4 mov dl,ah
10073731 8915 9C3B1210 mov dword ptr ds:[10123B9C],edx
10073737 8BC8 mov ecx,eax
脱壳修复吧.
运行脱壳后的程序.
出现提示:外挂程序被破坏.请到官方网站从新下载.(PS:从新应该为重新吧?)
3.处理自校验吧.提示很明显,那么F12法吧.
OD载入脱壳后的程序,运行,出现提示,点暂停,再点查看调用堆栈
调用堆栈 ,项目 14
地址=0012FC10
堆栈=10017596
函数例程 / 参数=? USER32.MessageBoxA
调用来自=123.10017590
框架=0012FC0C
点显示堆栈来到
10017582 81E6 00100000 and esi,1000
10017588 8D0470 lea eax,dword ptr ds:[eax+esi*2]
1001758B 50 push eax
1001758C 52 push edx
1001758D 51 push ecx
1001758E 6A 00 push 0
10017590 FF15 04560B10 call dword ptr ds:[<&USER32.MessageBoxA>>; USER32.MessageBoxA
向上找在端首下断
100174F0 83EC 64 sub esp,64 下断
100174F3 56 push esi
100174F4 8B7424 74 mov esi,dword ptr ss:[esp+74]
100174F8 57 push edi
100174F9 8B7E 08 mov edi,dword ptr ds:[esi+8]
100174FC 57 push edi
100174FD E8 9E060100 call 123.10027BA0
10017502 83C4 04 add esp,4
10017505 85C0 test eax,eax
10017507 74 10 je short 123.10017519
4.OD重新运行程序
00174F0 83EC 64 sub esp,64 断下.
注意右下角窗口
0012FC90 100341C1 返回到 123.100341C1
0012FC94 0012FCA0
0012FC98 00000003
0012FC9C 0012FCB4
0012FCA0 00000000
0012FCA4 00000000
0012FCA8 00000000
0012FCAC 10011D28 返回到 123.10011D28 来自 123.1001643D
在0012FCAC 10011D28 返回到 123.10011D28 来自 123.1001643D 右键反汇编中跟随
来到
10011CDC |. /0F84 0C000000 je 123.10011CEE 跳转不实现,则下面的JMP能跳过提示
10011CE2 |. |C745 F8 01000>mov [local.2],1 改NOP
10011CE9 |. |E9 47000000 jmp 123.10011D35
10011CEE |> \C745 F8 00000>mov [local.2],0
10011CF5 |. 68 04000080 push 80000004
10011CFA |. 6A 00 push 0
10011CFC |. 68 7A830B10 push 123.100B837A
10011D01 |. 68 01030080 push 80000301
10011D06 |. 6A 00 push 0
10011D08 |. 68 10000000 push 10
10011D0D |. 68 04000080 push 80000004
10011D12 |. 6A 00 push 0
10011D14 |. 68 DA830B10 push 123.100B83DA
10011D19 |. 68 03000000 push 3
10011D1E |. BB F0740110 mov ebx,123.100174F0
10011D23 |. E8 15470000 call 123.1001643D ; 提示CALL
10011D28 |. 83C4 28 add esp,28
10011D2B |. 6A 00 push 0
10011D2D |. E8 29470000 call 123.1001645B
10011D32 |. 83C4 04 add esp,4
10011D35 |> 8B45 F8 mov eax,[local.2]
10011CDC |. /0F84 0C000000 je 123.10011CEE 改NOP
保存运行OK。
5。去广告。查找字符串吧
E语言的,好像以前查找字符串的方法不好用。只好用老方法吧。
(当程序字符串隐藏时,F8走,使程序运行,F7跟进程序运行的CALL,再寻找字符串!)
如果有人知道更好方法的告诉下,谢谢。
1. 100737DC |. E8 67E90000 call 1231.10082148 出现程序窗口
下断点,重新运行,F7跟进F8走
2.10082158 |. E8 AD8E0000 call 1231.1008B00A 出现程序窗口
下断点,重新运行,F7跟进F8走
3.1008B04E |. FF50 50 call dword ptr ds:[eax+50] 出现程序窗口
下断点,重新运行,F7跟进F8走
4.10028F47 |. E8 8FD4FEFF call 1231.100163DB 出现程序窗口
下断点,重新运行,F7跟进F8走
5.来到了
100163DB /$ B8 06000000 mov eax,6
100163E0 |. E8 40000000 call 1231.10016425 过了这个CALL后能查查字符串了
100163E5 |. FC cld
100163E6 |. DBE3 finit
100163E8 |. E8 EDFFFFFF call 1231.100163DA
熟识了吧.现在可以查字符串了.
能找到可能有用的.
http://www.338mu.com/cf/cfwg.htm 程序窗口中的广告
http://www.338mu.com/ 官网=弹出的广告
双击来到
100110C5 |. BB 06000000 mov ebx,6
100110CA |. E8 35FFFFFF call 1231.10011004
100110CF |. 68 04000080 push 80000004
100110D4 |. 6A 00 push 0
100110D6 |. 68 7E820B10 push 1231.100B827E ; http://www.338mu.com/
100110DB |. 68 01000400 push 40001
100110E0 |. 68 BC4B0116 push 16014BBC
100110E5 |. 68 6F000152 push 5201006F
100110EA |. 68 04000000 push 4
修方很多.我一般给它个错误的地址如
push 10066EF0
修改保存,运行OK,去广告成功.
--------------------------------------------------------------------------------
【版权声明】: 本文原创于52pojie, 转载请注明作者并保持文章的完整, 谢谢!
2011年08月15日 00:10:55
|
免费评分
-
查看全部评分
|