首页
社区
课程
招聘
[求助]关于围棋助手完整版8.76的脱壳问题
2006-7-14 14:41 8095

[求助]关于围棋助手完整版8.76的脱壳问题

2006-7-14 14:41
8095
请问为什么我在给围棋助手完整版8.76脱壳后,运行软件就死机了?
我有PEID查壳后显示:
Go600.exe        ::        UPX-Scrambler RC1.x -> ┫nT?L
GoExt.dll        ::        Microsoft Visual C++ 6.0 DLL
mfc42.dll        ::        Microsoft Visual C++ 6.0 DLL [调试]
Stone.dll        ::        ASPack 2.11 -> Alexey Solodovnikov
我把Go600.exe和Stone.dll都脱壳了,而且修复了Go600.exe的输入表,之后运行Go600.exe电脑就特慢,跟要死机似的!
希望那位高手指点迷津!
不胜感激!谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (20)
雪    币: 29414
活跃值: (18615)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2006-7-14 16:57
2
0
如果脱壳没问题,那可能是自校验。有些软件自校验做的比较隐蔽,如不断消耗资源等。
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-7-21 09:43
3
0
我找不到自检验啊......!
我找到三处比较文件大小的地放:
cmp eax,57E00
都改了,不过没有用!
哪位高手帮我看看,谢谢!
软件下载地址:http://sq5.onlinedown.net/down/go600cd.zip
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-7-23 21:02
4
0
没人理我呀........
我自己顶!
雪    币: 224
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
lajiaolz 2 2006-7-24 10:14
5
0
与脱壳无关,自己慢慢找吧,要解决自校验、存盘等
雪    币: 250
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
邪秀才 2 2006-7-24 10:16
6
0
我想帮你看看,可是,你的程序下载的太大了,98M,我用迅雷下,说原始地址得到的大小长度太小,从候选资源下
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-7-24 15:25
7
0
那你去这里看看,这里肯定能下!
谢谢啦!
http://www.onlinedown.net/soft/8958.htm
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ToT 2006-7-24 22:37
8
0
0041A88A   /75 0F           jnz     short 0041A89B
0041A88C   |68 401F0000     push    1F40
0041A891   |E8 601C0700     call    <jmp.&mfc42.#823_operator new>
0041A896   |83C4 04         add     esp, 4
0041A899  ^|EB F1           jmp     short 0041A88C

看这里,如果41A88A这里没有跳转,就会陷入一个死循环,这个循环会将资源消耗殆尽
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 66 2006-7-25 16:44
9
0
最初由 ToT 发布
0041A88A /75 0F jnz short 0041A89B
0041A88C |68 401F0000 push 1F40
0041A891 |E8 601C0700 call <jmp.&mfc42.#823_operator new>
0041A896 |83C4 04 add esp, 4
0041A899 ^|EB F1 jmp short 0041A88C
........


如果它要循环,我们就干掉它,retn 或 nop 或强制 jmp 看看哪种爽就用哪种!
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
美丽破船 5 2006-7-25 17:35
10
0
我刚接触脱破解!请问如何定位自校验??相关的函数都有哪些??
谢谢!
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ToT 2006-7-26 01:02
11
0
最初由 KuNgBiM 发布
如果它要循环,我们就干掉它,retn 或 nop 或强制 jmp 看看哪种爽就用哪种!


这个壳我也一直在脱,貌似程序暗桩很多。这个地方跳转过去之后后面还有暗桩,还会消耗系统资源,可是我找不到了:(
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-7-26 21:05
12
0
确实有很多!
除了那一处,类似的暗桩我也找到几处,不过了之后还是不行呀........!
哎......太多了......
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-7-30 20:22
13
0
ToT有没有新进展?来论坛多联系!
谢谢!
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骨灰C 2006-8-1 10:59
14
0
这个程序不难,不过校验点多些,且运用mfc函数后 异常让程序嵌入死循环 且用了多线程来校验 对新手来说难于入手。
1:
0041B134     E8 29140700             call bfGo600.0048C562                              ; jmp to MFC42.#3318
0041B139     8BF0                    mov esi,eax
0041B13B     56                      push esi
0041B13C     E8 B5130700             call bfGo600.0048C4F6                              ; jmp to MFC42.#823
0041B141     83C4 04                 add esp,4

0041b134 处的call是读出当前文件的容量 16进制 未脱壳是57e00脱了必定大于这个数 因为是upx压缩的。 下面代码空间不够 可以在这里打个补丁。

2:
0041B1CA    /79 05                   jns short bfGo600.0041B1D1
0041B1CC    |4B                      dec ebx
0041B1CD    |83CB FC                 or ebx,FFFFFFFC
0041B1D0    |43                      inc ebx
0041B1D1    \8B4424 18               mov eax,dword ptr ss:[esp+18]
0041B1D5     43                      inc ebx
0041B1D6     03FE                    add edi,esi
0041B1D8     0FBE00                  movsx eax,byte ptr ds:[eax]
0041B1DB     99                      cdq
0041B1DC     F7FB                    idiv ebx
0041B1DE     8BD8                    mov ebx,eax
0041B1E0     8BC1                    mov eax,ecx
0041B1E2     99                      cdq
0041B1E3     F7FF                    idiv edi
0041B1E5     0FBE16                  movsx edx,byte ptr ds:[esi]
0041B1E8     03D8                    add ebx,eax
0041B1EA     3BDA                    cmp ebx,edx
0041B1EC     0F85 9D000000           jnz bfGo600.0041B28F
0041B1F2     8B7C24 18               mov edi,dword ptr ss:[esp+18]
0041B1F6     8B4424 28               mov eax,dword ptr ss:[esp+28]
0041B1FA     41                      inc ecx
0041B1FB     83C7 05                 add edi,5
0041B1FE     46                      inc esi
0041B1FF     3BC8                    cmp ecx,eax
0041B201     897C24 18               mov dword ptr ss:[esp+18],edi
0041B205   ^ 7C B0                   jl short bfGo600.0041B1B7
这里是将内存的中的文件与未脱的文件进行内部比较 一个一个对比,不相同就跳下 jnz bfGo600.0041B28F  mov al,1 ret后再次死循环 nop掉这处即可。

3:
程序中 运算 保存等 比较了未脱壳的文件大小值 57e00
00431B32     3D 007E0500             cmp eax,57E00
00431B37     74 22                   je short bfGo600.00431B5B
00431B39     E8 CCAA0500             call bfGo600.0048C60A                              ; jmp to MFC42.#1168
0043B9A4     3D 007E0500             cmp eax,57E00
0043B9A9     74 22                   je short bfGo600.0043B9CD
0043B9AB     E8 5A0C0500             call bfGo600.0048C60A                              ; jmp to MFC42.#1168

0043E8D4     3D 007E0500             cmp eax,57E00
0043E8D9     74 22                   je short bfGo600.0043E8FD
0043E8DB     E8 2ADD0400             call bfGo600.0048C60A                              ; jmp to MFC42.#1168

累计3处。

4:
最后一处新手不易发现,程序还是死循环 留意一下 会发现在线程里,不过od无法中断在线程创建处,可以在一开始的 call mfc...那个死循环调用所以命令处设断。 中间有好多异常,需要小心处理 才能断在如下 :
00479DF2     3C 61                   cmp al,61
00479DF4     74 47                   je short bfGo600.00479E3D
00479DF6     3C C1                   cmp al,0C1
00479DF8     74 43                   je short bfGo600.00479E3D
00479DFA     3C 03                   cmp al,3
00479DFC     74 3F                   je short bfGo600.00479E3D
00479DFE     3C 48                   cmp al,48
00479E00     74 3B                   je short bfGo600.00479E3D
00479E02     E8 EB270100             call bfGo600.0048C5F2                              ; jmp to MFC42.#1175

这4处 再次比较 相等即可。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xizhu 2006-8-1 12:11
15
0
这程序我脱过,除了死循环,还有其它的暗桩。对于爆破手来说的话很烦的。
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-8-1 22:37
16
0
多谢 骨灰C 指点!
软件已经被我爆破了!!!
    谢谢!!!   
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ToT 2006-8-5 20:50
17
0
恭喜DCracker
这个程序我今天搞定的,程序的暗桩其实有三类,按照每类的特征代码在整个程序中搜索比较好,如果只是通过不断的实验找暗桩其实很可能找不全。
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ToT 2006-8-5 20:56
18
0
最初由 骨灰C 发布
这个程序不难,不过校验点多些,且运用mfc函数后 异常让程序嵌入死循环 且用了多线程来校验 对新手来说难于入手。
1:
0041B134 E8 29140700 call bfGo600.0048C562 ; jmp to MFC42.#3318
0041B139 8BF0 mov esi,eax
0041B13B 56 push esi
........


我最一开始也是用这些方法找暗桩的,但其实找的不全,如果我没记错的话,程序的暗桩不下10个,至少这是我找到的。软件的暗桩我找到了3种,两种是消耗系统资源,一种是异常退出。

消耗资源的方法基本都是用new+死循环的方法,第一种可以搜索ASCII"500",程序中应该有两处,把前面的跳转改成强制跳转即可。

第二种是这样的死循环,同样道理,改前面的跳转即可
0041A88C    68 401F0000     push    1F40
0041A891    E8 601C0700     call    <jmp.&mfc42.#823_operator new>
0041A896    83C4 04         add     esp, 4
0041A899  ^ EB F1           jmp     short 0041A88C

第三种是这样的,直接退出:
0043B9A4    3D 007E0500     cmp     eax, 57E00
0043B9A9    EB 22           jmp     short 0043B9CD
0043B9AB    E8 5A0C0500     call    <jmp.&mfc42.#1168_AfxGetModuleSt>
0043B9B0    8B48 04         mov     ecx, [eax+4]
0043B9B3    6A 00           push    0
0043B9B5    C681 C4000000 0>mov     byte ptr [ecx+C4], 1
0043B9BC    C646 44 01      mov     byte ptr [esi+44], 1
0043B9C0    C686 72DC0200 0>mov     byte ptr [esi+2DC72], 1
0043B9C7    FF15 38EB4900   call    [<&msvcrt.exit>]                 ; MSVCRT.exit

分别找到每种暗桩的特征代码,然后修改跳转即可,这样的方法我觉得找暗桩会稍微全一些。
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
bfqyygy 1 2006-8-5 23:46
19
0
最怕就是自校验!!
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
DCracker 2 2006-8-6 16:54
20
0
恩,不错!学习!
这软件我虽然爆破了,但其实开始是想算出注册码的,
不过我不能确定注册运算的地方,没办法只能把NAG去了,改了关键跳~~~~~
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jtfzp 2006-8-8 08:57
21
0
最初由 DCracker 发布
多谢 骨灰C 指点!
软件已经被我爆破了!!!
谢谢!!!

我也是个围棋爱好者,能给我一份吗?jtfzp@163.com
游客
登录 | 注册 方可回帖
返回