首页
社区
课程
招聘
[求助]某软件安装后提示#e007请检查加密狗.
发表于: 2005-7-16 16:03 10440

[求助]某软件安装后提示#e007请检查加密狗.

2005-7-16 16:03
10440
某软件安装后提示#E007请检查加密狗,是否插在计算机上.然后用C32Asm反汇编,查看字符串(用W32dsm打开查看,然后显示找不到数据参考),找到#E007处,也不能定位到反汇编代码中,但是字符串参考下面显示有5个CALL如下:
String Resource ID=57400: #E007 请假查加密狗,是否插到计算机上
::004262D8->PUSH E038
004262CB  PUSH 0                                 
004262CD  LEA ECX,[EAX+358]                       
004262D3  CALL 004527AA                           
004262D8  PUSH E038                              
004262DD  MOV ECX,48407C                          
004262E2  CALL 0041A6C0                           
::00426FCC->PUSH E038
00426FBF  PUSH 0                                 
00426FC1  LEA ECX,[EDX+358]                       
00426FC7  CALL 004527AA                           
00426FCC  PUSH E038                              
00426FD1  MOV ECX,48407C                          
00426FD6  CALL 0041A6C0                           
::0042713B->PUSH E038
0042712E  PUSH 0                                 
00427130  LEA ECX,[EDX+358]                       
00427136  CALL 004527AA                           
0042713B  PUSH E038                              
00427140  MOV ECX,48407C                          
00427145  CALL 0041A6C0                           
::004271A0->PUSH E038
00427193  PUSH 0                                 
00427195  ADD ECX,358                             
0042719B  CALL 004527AA                           
004271A0  PUSH E038                              
004271A5  MOV ECX,48407C                          
004271AA  CALL 0041A6C0                           
::004317EC->PUSH E038
004317DF  PUSH 0                                 
004317E1  ADD ECX,358                             
004317E7  CALL 004527AA                           
004317EC  PUSH E038                              
004317F1  MOV ECX,48407C                          
004317F6  CALL 0041A6C0
那么下面我该怎么做呢,谢谢.(小弟刚学破解不久,正好又是学习俄语的,等过几天就要去俄罗斯上学,正好可以用上这个软件,所以请各位大哥指教,谢谢)

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

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对了,还有他用的是什么狗呢?如何能看出来?谢谢.

刚刚下载了大老的文件加密狗检测工具点打开,显示:就要开始检测程序了如果文件大于1兆的话检测的时间会久点请耐心等待!此文件的大小是 712704字节.
点检测后显示Run-time error File not fount.然后就退出了,晕死我了.对这个文件用PEID0.93扫描显示是Microsoft Visual C++ 6.0没有加壳.
2005-7-16 16:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找到了提示"#E007请检查加密狗"的部分在CWordAnalysisDll.dll
代码如下:
1000761F   |.  BE A8590110     mov esi,CWordAna.100159A8         ;  ASCII "NULL"
10007624   |.  B8 0C410210     mov eax,CWordAna.1002410C
10007629   |>  8A10            /mov dl,byte ptr ds:[eax]
1000762B   |.  8A1E            |mov bl,byte ptr ds:[esi]
1000762D   |.  8ACA            |mov cl,dl
1000762F   |.  3AD3            |cmp dl,bl
10007631   |.  74 1E           |je short CWordAna.10007651
10007633   |.  84C9            |test cl,cl
10007635   |.  75 16           |jnz short CWordAna.1000764D
10007637   |.  8A50 01         |mov dl,byte ptr ds:[eax+1]
1000763A   |.  8A5E 01         |mov bl,byte ptr ds:[esi+1]
1000763D   |.  8ACA            |mov cl,dl
1000763F   |.  3AD3            |cmp dl,bl
10007641   |.  74 0E           |je short CWordAna.10007651
10007643   |.  83C0 02         |add eax,2
10007646   |.  83C6 02         |add esi,2
10007649   |.  84C9            |test cl,cl
1000764B   |.^ 74 DC           \je short CWordAna.10007629
1000764D   |>  33C0            xor eax,eax
1000764F   |.  EB 05           jmp short CWordAna.10007656
10007651   |>  1BC0            sbb eax,eax
10007653   |.  83D8 FF         sbb eax,-1
10007656   |>  5F              pop edi
10007657   |.  5E              pop esi
10007658   |.  85C0            test eax,eax
1000765A   |.  5B              pop ebx
1000765B   |.  75 1F           jnz short CWordAna.1000767C
1000765D   |.  6A 30           push 30                           ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
1000765F   |.  68 94590110     push CWordAna.10015994            ; |Title = "System Information"
10007664   |.  68 74590110     push CWordAna.10015974            ; |Text = "#E007 Please Check Soft Dog!"  //就是这里
10007669   |.  50              push eax                          ; |hOwner
1000766A   |.  A2 72590110     mov byte ptr ds:[10015972],al     ; |
1000766F   |.  FF15 40310110   call dword ptr ds:[<&USER32.Messa>; \MessageBoxA
10007675   |.  6A 00           push 0
10007677   |.  E8 7E2D0000     call CWordAna.1000A3FA
1000767C   |>  8B4424 14       mov eax,dword ptr ss:[esp+14]
10007680   |.  3D B5030000     cmp eax,3B5                       ;  Switch (cases 0..4E4)
10007685   |.  77 5D           ja short CWordAna.100076E4
10007687   |.  74 3F           je short CWordAna.100076C8
10007689   |.  83E8 00         sub eax,0
1000768C   |.  74 23           je short CWordAna.100076B1
1000768E   |.  2D A4030000     sub eax,3A4
10007693   |.  74 59           je short CWordAna.100076EE
10007695   |.  83E8 04         sub eax,4
10007698   |.  75 54           jnz short CWordAna.100076EE
1000769A   |.  8B4424 10       mov eax,dword ptr ss:[esp+10]     ;  Case 3A8 of switch 10007680
1000769E   |.  8B4C24 0C       mov ecx,dword ptr ss:[esp+C]
100076A2   |.  50              push eax
100076A3   |.  51              push ecx
100076A4   |.  8B4D 10         mov ecx,dword ptr ss:[ebp+10]
100076A7   |.  E8 549AFFFF     call CWordAna.10001100
100076AC   |.  5D              pop ebp
100076AD   |.  59              pop ecx
100076AE   |.  C2 0C00         retn 0C
2005-7-16 17:01
0
雪    币: 483
活跃值: (182)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看起来有点像是S3 的狗.
2005-7-16 21:18
0
雪    币: 278
活跃值: (200)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 00nn 发布
对了,还有他用的是什么狗呢?如何能看出来?谢谢.


刚刚下载了大老的文件加密狗检测工具点打开,显示:就要开始检测程序了如果文件大于1兆的话检测的时间会久点请耐心等待!此文件的大小是 712704字节.
点检测后显示Run-time error File not fount.然后就退出了,晕死我了.对这个文件用PEID0.93扫描显示是Microsoft Visual C++ 6.0没有加壳.


在C 下面找doginfo.txt
2005-7-17 13:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 NCFZ 发布



在C 下面找doginfo.txt


恩,c下面有doginfo.txt但是是一个效果,找不到加密的壳.我把目录里面所有的文件夹都试过一遍了.问了大老,她到现在也没回答......
2005-7-17 13:33
0
雪    币: 413
活跃值: (837)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
看了N遍这个文章, 始终不敢发言,终是忍不住了,还是说一下:
E007这个信息我个人看觉得是圣天诺的狗的信息!
还有分流程的分支处理,可以理解成一个大二叉树了!

虽然有Soft dog的信息,但看程序的代码不象是S3或是其它的狗。个
人水平有限,供您参考。
2005-7-17 22:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩,谢谢,不管是不是,总算有人提出建设性意见了,呵呵,谢谢
2005-7-20 14:36
0
雪    币: 45
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你好,
就从你给的这部分代码来看
1000765B   |.  75 1F           jnz short CWordAna.1000767C 这个是关键部分,决定了是否显示消息框.
1000765D   |.  6A 30           push 30                           ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
1000765F   |.  68 94590110     push CWordAna.10015994            ; |Title = "System Information"
10007664   |.  68 74590110     push CWordAna.10015974            ; |Text = "#E007 Please Check Soft Dog!"  //就是这里
10007669   |.  50              push eax                          ; |hOwner
1000766A   |.  A2 72590110     mov byte ptr ds:[10015972],al     ; |
1000766F   |.  FF15 40310110   call dword ptr ds:[<&USER32.Messa>; \MessageBoxA

如果EAX非0 则不显示提示框,

问题来了,EAX的数值是什么呢? 下面有
10007680   |.  3D B5030000     cmp eax,3B5                       ;  Switch (cases 0..4E4)
10007685   |.  77 5D           ja short CWordAna.100076E4
10007687   |.  74 3F           je short CWordAna.100076C8
10007689   |.  83E8 00         sub eax,0
1000768C   |.  74 23           je short CWordAna.100076B1
1000768E   |.  2D A4030000     sub eax,3A4
10007693   |.  74 59           je short CWordAna.100076EE
10007695   |.  83E8 04         sub eax,4
10007698   |.  75 54           jnz short CWordAna.100076EE
判断 EAX 与 3B5 的大小
如果EAX>3B5 跳转到CWordAna.100076E4
如果EAX=3B5 跳转到CWordAna.100076C8
如果EAX<3B5 那么EAX-0 判断EAX是否是0 如果是就跳转到je short CWordAna.100076B1
如果你在上面
1000765B   |.  75 1F           jnz short CWordAna.1000767C
位置贸然JMP的话呢程序应该在这里给你进一步的提示了..呵呵
如果EAX-3A4=0 则跳转到 CWordAna.100076EE
如果EAX-4<>0 则跳转到 CWordAna.100076EE

所以呢..
程序看不完整也是比较麻烦的呢
2005-7-21 18:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
软件下载地址:
72ck6Y4c8H3i4K6y4m8i4K6u0r3i4K6u0r3x3U0p5^5i4K6u0W2z5e0u0Q4x3X3f1#2y4q4)9J5k6e0p5$3x3R3`.`. 里面的看雪目录,目录里面RUDICT.exe是主安装程序,RCUPDATA.exe是升级文件,必须升级它,才会提示要加密狗.主程序22.25M,升级程序1M.我放在服务器上,带宽是100M,所以应该很快就可以下载OK.
谢谢大家的帮忙.希望哪位大哥破解了后可以把破解方法和思路给贴出来,谢谢了.
2005-7-22 18:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
顶一下......
2005-7-23 23:39
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
OD载入软件,下断 bp MessageBoxA
F9运行,程序开始,启动后一会,程序被OD拦住,
77D504EA U>  8BFF            mov edi,edi
77D504EC     55              push ebp
77D504ED     8BEC            mov ebp,esp
77D504EF     833D BC04D777 0>cmp dword ptr ds:[77D704BC],0
77D504F6     74 24           je short USER32.77D5051C
77D504F8     64:A1 18000000  mov eax,dword ptr fs:[18]
77D504FE     6A 00           push 0
77D50500     FF70 24         push dword ptr ds:[eax+24]
77D50503     68 240BD777     push USER32.77D70B24
77D50508     FF15 C812D177   call dword ptr ds:[<&KERNEL32.InterlockedCompareExchange>]        ; kernel32.InterlockedCompareExchange
77D5050E     85C0            test eax,eax
77D50510     75 0A           jnz short USER32.77D5051C
77D50512     C705 200BD777 0>mov dword ptr ds:[77D70B20],1
77D5051C     6A 00           push 0
77D5051E     FF75 14         push dword ptr ss:[ebp+14]
77D50521     FF75 10         push dword ptr ss:[ebp+10]
77D50524     FF75 0C         push dword ptr ss:[ebp+C]
77D50527     FF75 08         push dword ptr ss:[ebp+8]
77D5052A     E8 2D000000     call USER32.MessageBoxExA  这里是出错的调用
77D5052F     5D              pop ebp
77D50530     C2 1000         retn 10

一路F8,出现错误框,确定后,到达RETN返回上一级,然后再上一级

004270D0    .  83EC 20       sub esp,20
004270D3    .  8D4424 00     lea eax,dword ptr ss:[esp]
004270D7    .  8D4C24 10     lea ecx,dword ptr ss:[esp+10]
004270DB    .  C705 78424800>mov dword ptr ds:[484278],14FAB3BF
004270E5    .  56            push esi
004270E6    .  C705 7C424800>mov dword ptr ds:[48427C],0BDDC2
004270F0    .  A3 74424800   mov dword ptr ds:[484274],eax
004270F5    .  890D 70424800 mov dword ptr ds:[484270],ecx
004270FB    .  E8 E1C20000   call MultiDic.004333E1
00427100    .  85C0          test eax,eax
00427102    .  0F84 DE000000 je MultiDic.004271E6
00427108    .  A1 80404800   mov eax,dword ptr ds:[484080]
0042710D    .  85C0          test eax,eax
0042710F    .  75 6F         jnz short MultiDic.00427180
00427111    .  8B0D E83F4800 mov ecx,dword ptr ds:[483FE8]
00427117    .  6A 00         push 0
00427119    .  C705 80404800>mov dword ptr ds:[484080],1
00427123    .  E8 82B60200   call MultiDic.004527AA
00427128    .  8B15 E83F4800 mov edx,dword ptr ds:[483FE8]
0042712E    .  6A 00         push 0
00427130    .  8D8A 58030000 lea ecx,dword ptr ds:[edx+358]
00427136    .  E8 6FB60200   call MultiDic.004527AA
0042713B    .  68 38E00000   push
00427176    .  B8 01000000   mov eax,1
0042717B    .  5E            pop esi
0042717C    .  83C4 20       add esp,20
0042717F    .  C3            retn
这是一段校验代码,F8运行到RETN再返回上一级,

呵呵,上面有个大侠说了去改读狗的跳转,,我在这里,是再往上返回一级
到了4544C1,用W32ASM静态汇编,呵呵,关键CALL就是眼前了,修改4544C1的JE,改为JNZ,OK,
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00454446(C), :0045444B(C), :00454452(C), :00454457(C), :0045446A(U)
|
:0045449C FF7710                  push [edi+10]
:0045449F 8365FC00                and dword ptr [ebp-04], 00000000
:004544A3 8B5F14                  mov ebx, dword ptr [edi+14]

* Reference To: KERNEL32.SetEvent, Ord:0265h
                                  |
:004544A6 FF152C834600            Call dword ptr [0046832C]
:004544AC 6AFF                    push FFFFFFFF
:004544AE 53                      push ebx

* Reference To: KERNEL32.WaitForSingleObject, Ord:02CEh
                                  |
:004544AF FF15A8834600            Call dword ptr [004683A8]
:004544B5 53                      push ebx

* Reference To: KERNEL32.CloseHandle, Ord:001Bh
                                  |
:004544B6 FF158C834600            Call dword ptr [0046838C]
:004544BC 8B4650                  mov eax, dword ptr [esi+50]
:004544BF 85C0                    test eax, eax
:004544C1 7408                    je 004544CB
:004544C3 FF764C                  push [esi+4C]
:004544C6 FFD0                    call eax
:004544C8 59                      pop ecx
:004544C9 EB17                    jmp 004544E2

小结,这个程序用静态汇编很难搞,因为没有字符串参考,而且出错也是
:004544C6 FFD0                    call eax
缺点是用bp MessageBoxA能够拦住程序,且查狗的校验应该只有这一处,程序中有5处过来校验狗,
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00454446(C), :0045444B(C), :00454452(C), :00454457(C), :0045446A(U)
,修改
:004544C1 7408                    je 004544CB

:004544C1 7408                    jne 004544CB
就可以搞定程序,
没有认真测试,可能还有不到之处,望大侠指出
2005-7-24 11:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢,呵呵,我去试了,谢谢各位大侠.

楼上的大侠,用你的方法改了随便点几个单词过段时间还是会出现请检查加密狗的对话框的.晕,还有那里要改呢?

这样改完后只是比原来没改的时候用的时间稍微长一点.

继续研究中......
2005-7-24 21:05
0
雪    币: 45
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这写天比较忙,看到楼主把软件发出来了,我测试了一下,原来不是楼主所找的那一个位置,加密狗校验一共放在三个文件中,
MultiDict.exe
UniteDicSearch.dll
CWordAnalysisDll.dll
首先我们按照njzzzzzz大虾的说法用OD载入,下断bp MessageboxA
来到这里
0041A720   |.  6A 00             push 0                                                       ; /Style = MB_OK|MB_APPLMODAL
0041A722   |.  52                push edx                                                     ; |Title
0041A723   |.  50                push eax                                                     ; |Text
0041A724   |.  FF15 8C854600     call dword ptr ds:[<&USER32.GetFocus>]                       ; |[GetFocus
0041A72A   |.  50                push eax                                                     ; |hOwner
0041A72B   |.  FF15 90854600     call dword ptr ds:[<&USER32.MessageBoxA>]                    ; \MessageBoxA ====就是这里啦
0041A731   |.  8D4C24 00         lea ecx,dword ptr ss:[esp]
0041A735   |.  C64424 10 00      mov byte ptr ss:[esp+10],0
0041A73A   |.  E8 3B470300       call MultiDic.0044EE7A
0041A73F   |.  8D4C24 04         lea ecx,dword ptr ss:[esp+4]
0041A743   |.  C74424 10 FFFFFFF>mov dword ptr ss:[esp+10],-1
0041A74B   |.  E8 2A470300       call MultiDic.0044EE7A
0041A750   |.  8B4C24 08         mov ecx,dword ptr ss:[esp+8]
0041A754   |.  64:890D 00000000  mov dword ptr fs:[0],ecx
0041A75B   |.  83C4 14           add esp,14
0041A75E   \.  C2 0400           retn 4

从上面的代码段可以看出这是程序编写者自己写的一个调用消息框的过程
F8一次调出提示框
Ctrl+F9执行到Retn
一次F8返回到调用位置
004270D0    .  83EC 20           sub esp,20
004270D3    .  8D4424 00         lea eax,dword ptr ss:[esp]
004270D7    .  8D4C24 10         lea ecx,dword ptr ss:[esp+10]
004270DB    .  C705 78424800 BFB>mov dword ptr ds:[484278],14FAB3BF
004270E5    .  56                push esi
004270E6    .  C705 7C424800 C2D>mov dword ptr ds:[48427C],0BDDC2
004270F0    .  A3 74424800       mov dword ptr ds:[484274],eax
004270F5    .  890D 70424800     mov dword ptr ds:[484270],ecx
004270FB       E8 E1C20000       call MultiDic.004333E1
00427100       85C0              test eax,eax
00427102       0F84 DE000000     je MultiDic.004271E6
00427108    .  A1 80404800       mov eax,dword ptr ds:[484080]
0042710D    .  85C0              test eax,eax
0042710F    .  75 6F             jnz short MultiDic.00427180
00427111    .  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
00427117    .  6A 00             push 0
00427119    .  C705 80404800 010>mov dword ptr ds:[484080],1
00427123    .  E8 82B60200       call MultiDic.004527AA
00427128    .  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
0042712E    .  6A 00             push 0
00427130    .  8D8A 58030000     lea ecx,dword ptr ds:[edx+358]
00427136    .  E8 6FB60200       call MultiDic.004527AA
0042713B    .  68 38E00000       push 0E038                                                   ; /Arg1 = 0000E038
00427140    .  B9 7C404800       mov ecx,MultiDic.0048407C                                    ; |
00427145       E8 7635FFFF       call MultiDic.0041A6C0
0042714A    .  A1 E83F4800       mov eax,dword ptr ds:[483FE8]
0042714F    .  8B35 8C864600     mov esi,dword ptr ds:[<&USER32.PostMessageA>]                ;  USER32.PostMessageA
00427155    .  6A 00             push 0                                                       ; /lParam = 0
00427157    .  6A 00             push 0                                                       ; |wParam = 0
00427159    .  8B48 1C           mov ecx,dword ptr ds:[eax+1C]                                ; |
0042715C    .  6A 12             push 12                                                      ; |Message = WM_QUIT
0042715E    .  51                push ecx                                                     ; |hWnd
0042715F    .  FFD6              call esi                                                     ; \PostMessageA
00427161    .  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
00427167    .  6A 00             push 0                                                       ; /lParam = 0
00427169    .  6A 00             push 0                                                       ; |wParam = 0
0042716B    .  6A 12             push 12                                                      ; |Message = WM_QUIT
0042716D    .  8B82 74030000     mov eax,dword ptr ds:[edx+374]                               ; |
00427173    .  50                push eax                                                     ; |hWnd
00427174    .  FFD6              call esi                                                     ; \PostMessageA
00427176    .  B8 01000000       mov eax,1
0042717B    .  5E                pop esi
0042717C    .  83C4 20           add esp,20
0042717F    .  C3                retn
00427180    >  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
00427186    .  6A 00             push 0
00427188    .  E8 1DB60200       call MultiDic.004527AA
0042718D    .  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
00427193    .  6A 00             push 0
00427195    .  81C1 58030000     add ecx,358
0042719B    .  E8 0AB60200       call MultiDic.004527AA
004271A0    .  68 38E00000       push 0E038                                                   ; /Arg1 = 0000E038
004271A5    .  B9 7C404800       mov ecx,MultiDic.0048407C                                    ; |
004271AA    .  E8 1135FFFF       call MultiDic.0041A6C0                                       ; \MultiDic.0041A6C0
004271AF    .  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
004271B5    .  8B35 8C864600     mov esi,dword ptr ds:[<&USER32.PostMessageA>]                ;  USER32.PostMessageA
004271BB    .  6A 00             push 0                                                       ; /lParam = 0
004271BD    .  6A 00             push 0                                                       ; |wParam = 0
004271BF    .  8B42 1C           mov eax,dword ptr ds:[edx+1C]                                ; |
004271C2    .  6A 12             push 12                                                      ; |Message = WM_QUIT
004271C4    .  50                push eax                                                     ; |hWnd
004271C5    .  FFD6              call esi                                                     ; \PostMessageA
004271C7    .  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
004271CD    .  6A 00             push 0                                                       ; /lParam = 0
004271CF    .  6A 00             push 0                                                       ; |wParam = 0
004271D1    .  6A 12             push 12                                                      ; |Message = WM_QUIT
004271D3    .  8B91 74030000     mov edx,dword ptr ds:[ecx+374]                               ; |
004271D9    .  52                push edx                                                     ; |hWnd
004271DA    .  FFD6              call esi                                                     ; \PostMessageA
004271DC    .  B8 01000000       mov eax,1
004271E1    .  5E                pop esi
004271E2    .  83C4 20           add esp,20
004271E5    .  C3                retn
上面
00427123    .  E8 82B60200       call MultiDic.004527AA
位置就是显示消息框的位置,在这里我建议可以不使用njzzzzzz大虾的方法继续返回上一级了,在00427102位置直接修改为
jmp MultiDic.004271E6
那么不管什么时候调用效果都是一样的.下面要注意的地方是
0042715F    .  FFD6              call esi   \PostMessageA
传入的消息参数有一项是
WM_QUIT
说明了程序在判断加密狗失败的时候调用PostMessageA迫使程序退出.
那么我们来看看到底有多少地方调用了PostMessageA呢?下断点PostMessageA
在Intermodual Calls里面看到一共有15处,而传入WM_QUIT参数的分别在
第一处
004262AD   |.  E8 98E70000       call <jmp.&UniteDicSearch.CDicApi::UniteDic_SearchEx>
004262B2   |.  3D E70ECEFE       cmp eax,FECE0EE7
004262B7   |.  75 7F             jnz short MultiDic.00426338
004262B9   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
004262BF   |.  6A 00             push 0
004262C1   |.  E8 E4C40200       call MultiDic.004527AA
004262C6   |.  A1 E83F4800       mov eax,dword ptr ds:[483FE8]
004262CB   |.  6A 00             push 0
004262CD   |.  8D88 58030000     lea ecx,dword ptr ds:[eax+358]
004262D3   |.  E8 D2C40200       call MultiDic.004527AA
004262D8   |.  68 38E00000       push 0E038                                                   ; /Arg1 = 0000E038
004262DD   |.  B9 7C404800       mov ecx,MultiDic.0048407C                                    ; |
004262E2   |.  E8 D943FFFF       call MultiDic.0041A6C0                                       ; \MultiDic.0041A6C0
004262E7   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
004262ED   |.  8B35 8C864600     mov esi,dword ptr ds:[<&USER32.PostMessageA>]                ;  USER32.PostMessageA
004262F3   |.  6A 00             push 0                                                       ; /lParam = 0
004262F5   |.  6A 00             push 0                                                       ; |wParam = 0
004262F7   |.  8B51 1C           mov edx,dword ptr ds:[ecx+1C]                                ; |
004262FA   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
004262FC   |.  52                push edx                                                     ; |hWnd
004262FD   |.  FFD6              call esi                                                     ; \PostMessageA
004262FF   |.  A1 E83F4800       mov eax,dword ptr ds:[483FE8]
00426304   |.  6A 00             push 0                                                       ; /lParam = 0
00426306   |.  6A 00             push 0                                                       ; |wParam = 0
00426308   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
0042630A   |.  8B88 74030000     mov ecx,dword ptr ds:[eax+374]                               ; |
00426310   |.  51                push ecx                                                     ; |hWnd
00426311   |.  FFD6              call esi                                                     ; \PostMessageA
00426313   |.  8D4C24 20         lea ecx,dword ptr ss:[esp+20]
00426317   |.  C74424 18 FFFFFFF>mov dword ptr ss:[esp+18],-1
0042631F   |.  E8 568B0200       call MultiDic.0044EE7A
00426324   |.  33C0              xor eax,eax
00426326   |.  8B4C24 10         mov ecx,dword ptr ss:[esp+10]
0042632A   |.  64:890D 00000000  mov dword ptr fs:[0],ecx
00426331   |.  5E                pop esi
00426332   |.  83C4 18           add esp,18
00426335   |.  C2 0800           retn 8
第二处
00426F4A   |.  E8 FBDA0000       call <jmp.&UniteDicSearch.CDicApi::UniteDic_SearchEx>
00426F4F   |.  83F8 FF           cmp eax,-1
00426F52   |.  74 19             je short MultiDic.00426F6D
00426F54   |.  8B7424 28         mov esi,dword ptr ss:[esp+28]
00426F58   |.  8D5424 2C         lea edx,dword ptr ss:[esp+2C]
00426F5C   |.  52                push edx
00426F5D   |.  8BCE              mov ecx,esi
00426F5F   |.  E8 8B7C0200       call MultiDic.0044EBEF
00426F64   |.  895C24 0C         mov dword ptr ss:[esp+C],ebx
00426F68   |.  E9 CD000000       jmp MultiDic.0042703A
00426F6D   |>  8B46 3C           mov eax,dword ptr ds:[esi+3C]
00426F70   |.  8B4E 10           mov ecx,dword ptr ds:[esi+10]
00426F73   |.  50                push eax
00426F74   |.  51                push ecx
00426F75   |.  51                push ecx
00426F76   |.  8D5424 38         lea edx,dword ptr ss:[esp+38]
00426F7A   |.  8BCC              mov ecx,esp
00426F7C   |.  896424 20         mov dword ptr ss:[esp+20],esp
00426F80   |.  52                push edx
00426F81   |.  E8 697C0200       call MultiDic.0044EBEF
00426F86   |.  8D4424 14         lea eax,dword ptr ss:[esp+14]                                ; |
00426F8A   |.  8D4E 14           lea ecx,dword ptr ds:[esi+14]                                ; |
00426F8D   |.  50                push eax                                                     ; |Arg1
00426F8E   |.  E8 5DA70000       call MultiDic.004316F0                                       ; \MultiDic.004316F0
00426F93   |.  8B4C24 08         mov ecx,dword ptr ss:[esp+8]
00426F97   |.  C64424 20 02      mov byte ptr ss:[esp+20],2
00426F9C   |.  51                push ecx
00426F9D   |.  E8 1A5D0100       call MultiDic.0043CCBC
00426FA2   |.  83C4 04           add esp,4
00426FA5   |.  3D 19F13101       cmp eax,131F119
00426FAA   |.  75 6D             jnz short MultiDic.00427019
00426FAC   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
00426FB2   |.  6A 00             push 0
00426FB4   |.  E8 F1B70200       call MultiDic.004527AA
00426FB9   |.  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
00426FBF   |.  6A 00             push 0
00426FC1   |.  8D8A 58030000     lea ecx,dword ptr ds:[edx+358]
00426FC7   |.  E8 DEB70200       call MultiDic.004527AA
00426FCC   |.  68 38E00000       push 0E038                                                   ; /Arg1 = 0000E038
00426FD1   |.  B9 7C404800       mov ecx,MultiDic.0048407C                                    ; |
00426FD6   |.  E8 E536FFFF       call MultiDic.0041A6C0                                       ; \MultiDic.0041A6C0
00426FDB   |.  A1 E83F4800       mov eax,dword ptr ds:[483FE8]
00426FE0   |.  8B35 8C864600     mov esi,dword ptr ds:[<&USER32.PostMessageA>]                ;  USER32.PostMessageA
00426FE6   |.  6A 00             push 0                                                       ; /lParam = 0
00426FE8   |.  6A 00             push 0                                                       ; |wParam = 0
00426FEA   |.  8B48 1C           mov ecx,dword ptr ds:[eax+1C]                                ; |
00426FED   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
00426FEF   |.  51                push ecx                                                     ; |hWnd
00426FF0   |.  FFD6              call esi                                                     ; \PostMessageA
00426FF2   |.  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
00426FF8   |.  6A 00             push 0                                                       ; /lParam = 0
00426FFA   |.  6A 00             push 0                                                       ; |wParam = 0
00426FFC   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
00426FFE   |.  8B82 74030000     mov eax,dword ptr ds:[edx+374]                               ; |
00427004   |.  50                push eax                                                     ; |hWnd
00427005   |.  FFD6              call esi                                                     ; \PostMessageA
00427007   |.  8B7424 28         mov esi,dword ptr ss:[esp+28]
0042700B   |.  68 883F4800       push MultiDic.00483F88
00427010   |.  8BCE              mov ecx,esi
00427012   |.  E8 D17E0200       call MultiDic.0044EEE8
00427017   |.  EB 10             jmp short MultiDic.00427029
00427019   |>  8B7424 28         mov esi,dword ptr ss:[esp+28]
0042701D   |.  8D4C24 08         lea ecx,dword ptr ss:[esp+8]
00427021   |.  51                push ecx
00427022   |.  8BCE              mov ecx,esi
00427024   |.  E8 C67B0200       call MultiDic.0044EBEF
00427029   |>  8D4C24 08         lea ecx,dword ptr ss:[esp+8]
0042702D   |.  895C24 0C         mov dword ptr ss:[esp+C],ebx
00427031   |.  885C24 20         mov byte ptr ss:[esp+20],bl
00427035   |.  E8 407E0200       call MultiDic.0044EE7A
0042703A   |>  8D4C24 2C         lea ecx,dword ptr ss:[esp+2C]
0042703E   |.  C64424 20 00      mov byte ptr ss:[esp+20],0
00427043   |.  E8 327E0200       call MultiDic.0044EE7A
00427048   |.  8B4C24 18         mov ecx,dword ptr ss:[esp+18]
0042704C   |.  8BC6              mov eax,esi
0042704E   |.  5E                pop esi
0042704F   |.  64:890D 00000000  mov dword ptr fs:[0],ecx
00427056   |.  5B                pop ebx
00427057   |.  83C4 1C           add esp,1C
0042705A   \.  C2 0800           retn 8

第三处

004317A4   |.  E8 07330000       call <jmp.&CWordAnalysisDll.CWordRestore::GetFirstWord>
004317A9   |.  50                push eax
004317AA   |.  8D4C24 30         lea ecx,dword ptr ss:[esp+30]
004317AE   |.  E8 35D70100       call MultiDic.0044EEE8
004317B3   |.  8B4424 2C         mov eax,dword ptr ss:[esp+2C]
004317B7   |.  C64424 18 03      mov byte ptr ss:[esp+18],3
004317BC   |.  50                push eax
004317BD   |.  E8 FAB40000       call MultiDic.0043CCBC
004317C2   |.  83C4 04           add esp,4
004317C5   |.  3D 19F13101       cmp eax,131F119
004317CA   |.  75 6E             jnz short MultiDic.0043183A
004317CC   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
004317D2   |.  6A 00             push 0
004317D4   |.  E8 D10F0200       call MultiDic.004527AA
004317D9   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
004317DF   |.  6A 00             push 0
004317E1   |.  81C1 58030000     add ecx,358
004317E7   |.  E8 BE0F0200       call MultiDic.004527AA
004317EC   |.  68 38E00000       push 0E038                                                   ; /Arg1 = 0000E038
004317F1   |.  B9 7C404800       mov ecx,MultiDic.0048407C                                    ; |
004317F6   |.  E8 C58EFEFF       call MultiDic.0041A6C0                                       ; \MultiDic.0041A6C0
004317FB   |.  8B15 E83F4800     mov edx,dword ptr ds:[483FE8]
00431801   |.  8B35 8C864600     mov esi,dword ptr ds:[<&USER32.PostMessageA>]                ;  USER32.PostMessageA
00431807   |.  6A 00             push 0                                                       ; /lParam = 0
00431809   |.  6A 00             push 0                                                       ; |wParam = 0
0043180B   |.  8B42 1C           mov eax,dword ptr ds:[edx+1C]                                ; |
0043180E   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
00431810   |.  50                push eax                                                     ; |hWnd
00431811   |.  FFD6              call esi                                                     ; \PostMessageA
00431813   |.  8B0D E83F4800     mov ecx,dword ptr ds:[483FE8]
00431819   |.  6A 00             push 0                                                       ; /lParam = 0
0043181B   |.  6A 00             push 0                                                       ; |wParam = 0
0043181D   |.  6A 12             push 12                                                      ; |Message = WM_QUIT
0043181F   |.  8B91 74030000     mov edx,dword ptr ds:[ecx+374]                               ; |
00431825   |.  52                push edx                                                     ; |hWnd
00431826   |.  FFD6              call esi                                                     ; \PostMessageA
00431828   |.  8B7424 20         mov esi,dword ptr ss:[esp+20]
0043182C   |.  68 883F4800       push MultiDic.00483F88
00431831   |.  8BCE              mov ecx,esi
00431833   |.  E8 B0D60100       call MultiDic.0044EEE8
00431838   |.  EB 1F             jmp short MultiDic.00431859
0043183A   |>  8D4424 2C         lea eax,dword ptr ss:[esp+2C]
0043183E   |.  B9 FC404800       mov ecx,MultiDic.004840FC
00431843   |.  50                push eax
00431844   |.  E8 6AD70100       call MultiDic.0044EFB3
00431849   |.  8B7424 20         mov esi,dword ptr ss:[esp+20]
0043184D   |.  68 FC404800       push MultiDic.004840FC
00431852   |.  8BCE              mov ecx,esi
00431854   |.  E8 96D30100       call MultiDic.0044EBEF
00431859   |>  895C24 08         mov dword ptr ss:[esp+8],ebx
0043185D   |.  885C24 18         mov byte ptr ss:[esp+18],bl
00431861   |.  8D4C24 2C         lea ecx,dword ptr ss:[esp+2C]
00431865   |>  E8 10D60100       call MultiDic.0044EE7A
0043186A   |>  8D4C24 24         lea ecx,dword ptr ss:[esp+24]
0043186E   |.  C64424 18 00      mov byte ptr ss:[esp+18],0
00431873   |.  E8 02D60100       call MultiDic.0044EE7A
00431878   |.  8B4C24 10         mov ecx,dword ptr ss:[esp+10]
0043187C   |.  8BC6              mov eax,esi
0043187E   |.  5E                pop esi
0043187F   |.  5B                pop ebx
00431880   |.  64:890D 00000000  mov dword ptr fs:[0],ecx
00431887   |.  83C4 14           add esp,14
0043188A   \.  C2 1000           retn 10
包括上面调试中的一共4处
那么使用刚才说的分别设置

第一处 004262B7  修改为 jmp short MultiDic.00426338
第二处 00426FAA  修改为 jmp short MultiDic.00427019
第三处 004317CA  修改为 jmp short MultiDic.0043183A
第四处 00427102  修改为 jmp MultiDic.004271E6

通过对程序的分析 可以看出 使用了时钟来判断加密狗,使用了查找单词判断加密狗,使用了在访问第一个单词来判断加密狗
这样主程序算是破解完成

========================
继续调试发现出现了英文版的提示信息在查询的时候
那么在
UniteDicSearch.dll
CWordAnalysisDll.dll
下断Bp messageboxa
找到相应位置
CWordAnalysisDll.dll中
0039765B   |. /75 1F             jnz short CWordAna.0039767C
0039765D   |. |6A 30             push 30                                                      ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0039765F   |. |68 94593A00       push CWordAna.003A5994                                       ; |Title = "System Information"
00397664   |. |68 74593A00       push CWordAna.003A5974                                       ; |Text = "#E007 Please Check Soft Dog!"
00397669   |. |50                push eax                                                     ; |hOwner
0039766A   |. |A2 72593A00       mov byte ptr ds:[3A5972],al                                  ; |
0039766F   |. |FF15 40313A00     call dword ptr ds:[<&USER32.MessageBoxA>]                    ; \MessageBoxA
00397675   |. |6A 00             push 0
00397677   |. |E8 7E2D0000       call CWordAna.0039A3FA
0039767C   |> \8B4424 14         mov eax,dword ptr ss:[esp+14]
修改 0039765B 为 jmp short CWordAna.0039767C

UniteDicSearch.dll中
100018BD    /75 1F               jnz short UniteDic.100018DE
100018BF    |6A 30               push 30
100018C1    |68 64F00110         push UniteDic.1001F064                                       ; ASCII "System InformationSystem"
100018C6    |68 44F00110         push UniteDic.1001F044                                       ; ASCII "#E007 Please Check Soft Dog!"
100018CB    |50                  push eax
100018CC    |A2 40F00110         mov byte ptr ds:[1001F040],al
100018D1    |FF15 38A10110       call dword ptr ds:[<&USER32.MessageBoxA>]                    ; USER32.MessageBoxA
100018D7    |6A 00               push 0
100018D9    |E8 77D90000         call UniteDic.1000F255
100018DE    \8B7424 18           mov esi,dword ptr ss:[esp+18]
修改 100018BD 为 jmp short UniteDic.100018DE

至此,打完收工,调试不再出现该类加密狗提示问题.

翠花....上酸菜.
2005-7-27 21:17
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
呵呵Sywpl大侠果然是高手呀, 厉害,精辟呀
2005-7-29 10:44
0
雪    币: 45
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我哪里是什么高手呀,话说回来这个软件还是蛮好用的哦,有时候上一些俄文网站看东东,想点个下载都不知道从何处下手..晕..
有了她移动过去好歹能知道个把单词的意思..
谢谢楼主咯.
2005-7-30 14:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
客气客气啊,应该谢谢大哥你才对,呵呵,我们学俄语的太需要这个东西了.
2005-7-31 18:04
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个是正式版吗?文件包怎么这么小啊?
而且UPDATE后好象不能打开设置菜单,词库都没多少。
2005-8-1 09:59
0
游客
登录 | 注册 方可回帖
返回