kungbim 发表于 2006-12-6 21:32:24

XXXXX项目管理2006之“天下无狗”

XXXXX项目管理2006之“天下无狗”

文章作者:KuNgBiM
文章目的:无狗打狗
作者邮箱:[email protected]
作者声明:学习交流而已
软件简介:工程项目管理软件
下载地址:自己搜
加密方式:ASPack2.12 + MicroDog4.0.13.0 + RC-UMH3.1
程序类别:Microsoft Visual C++ 6.0
软件限制:狗软常用限制
使用工具:PEiD、OllyICE、Stripper(ASPack脱壳机)

文章明细:
安装好目标程序后,用PEiD查壳ASPack加壳,Stripper脱之(偷懒而已),再次检查VC6编译,OllyICE载入脱壳后的程序:

0063894A >/$55            push    ebp                              ;(initial cpu selection)
0063894B|.8BEC          mov   ebp, esp
0063894D|.6A FF         push    -1
0063894F|.68 D0566700   push    006756D0
00638954|.68 A88A6300   push    <jmp.&MSVCRT._except_handler3>   ;SE 处理程序安装
00638959|.64:A1 0000000>mov   eax, fs:
0063895F|.50            push    eax
00638960|.64:8925 00000>mov   fs:, esp
00638967|.83EC 68       sub   esp, 68
0063896A|.53            push    ebx
0063896B|.56            push    esi
0063896C|.57            push    edi
0063896D|.8965 E8       mov   , esp
00638970|.33DB          xor   ebx, ebx
00638972|.895D FC       mov   , ebx
00638975|.6A 02         push    2
00638977|.FF15 10CF6500 call    [<&MSVCRT.__set_app_type>]       ;msvcrt.__set_app_type
0063897D|.59            pop   ecx
0063897E|.830D 182C6D00>or      dword ptr , FFFFFFFF
00638985|.830D 1C2C6D00>or      dword ptr , FFFFFFFF
0063898C|.FF15 14CF6500 call    [<&MSVCRT.__p__fmode>]         ;msvcrt.__p__fmode
00638992|.8B0D FC2B6D00 mov   ecx,
00638998|.8908          mov   , ecx

使用字符搜索插件搜索关键字符找到:

0061FCE3/$55            push    ebp
0061FCE4|.8BEC          mov   ebp, esp
0061FCE6|.6A FF         push    -1
0061FCE8|.68 CCAE6500   push    0065AECC                         ;SE 处理程序安装
0061FCED|.64:A1 0000000>mov   eax, fs:
0061FCF3|.50            push    eax
0061FCF4|.64:8925 00000>mov   fs:, esp
0061FCFB|.83EC 0C       sub   esp, 0C
0061FCFE|.8D4D F0       lea   ecx,
0061FD01|.E8 2A0E0000   call    00620B30
0061FD06|.C745 FC 00000>mov   dword ptr , 0
0061FD0D|.8D4D F0       lea   ecx,
0061FD10|.E8 5B0E0000   call    00620B70                         ;首次读狗,F2设断
0061FD15|.85C0          test    eax, eax
0061FD17|.75 32         jnz   short 0061FD4B
0061FD19|.68 4CA06C00   push    006CA04C                         ;b
0061FD1E|.68 50A06C00   push    006CA050                         ;项目管理2006 标准版
0061FD23|.8D4D F0       lea   ecx,
0061FD26|.E8 550E0000   call    00620B80                         ;读狗软序列号,F2设断
0061FD2B|.83F8 6E       cmp   eax, 6E
0061FD2E|.75 1B         jnz   short 0061FD4B
0061FD30|.C745 EC 6E000>mov   dword ptr , 6E
0061FD37|.C745 FC FFFFF>mov   dword ptr , -1
0061FD3E|.8D4D F0       lea   ecx,
0061FD41|.E8 1A0E0000   call    00620B60
0061FD46|.8B45 EC       mov   eax,
0061FD49|.EB 19         jmp   short 0061FD64
0061FD4B|>C745 E8 00000>mov   dword ptr , 0
0061FD52|.C745 FC FFFFF>mov   dword ptr , -1
0061FD59|.8D4D F0       lea   ecx,

断点设置完毕后F9运行:

0061FD06|.C745 FC 00000>mov   dword ptr , 0
0061FD0D|.8D4D F0       lea   ecx,
0061FD10|.E8 5B0E0000   call    00620B70                         ;断下后,F7跟进
0061FD15|.85C0          test    eax, eax
0061FD17|.75 32         jnz   short 0061FD4B                   ;这里不能跳,跳则为学习版
0061FD19|.68 4CA06C00   push    006CA04C
0061FD1E|.68 50A06C00   push    006CA050                         ;项目管理2006 标准版
0061FD23|.8D4D F0       lea   ecx,

跟进call    00620B70:

00620B70   $B9 902B6D00   mov   ecx, 006D2B90                  ;跟进后来到这里
00620B75   .E9 36060000   jmp   006211B0                         ;跳向读狗点——跳转①
00620B7A      90            nop
00620B7B      90            nop
00620B7C      90            nop
00620B7D      90            nop
00620B7E      90            nop
00620B7F      90            nop

上面跳转①来到:

006211B0   > \56            push    esi
006211B1   .57            push    edi
006211B2   .8BF9          mov   edi, ecx
006211B4   .83CE FF       or      esi, FFFFFFFF
006211B7   .C605 B82B6D00>mov   byte ptr , 0
006211BE   .C605 BC2B6D00>mov   byte ptr , 0
006211C5   .C705 B42B6D00>mov   dword ptr , 0F026
006211CF   .C705 C42B6D00>mov   dword ptr , 0
006211D9   .E8 2C7F0000   call    0062910A                         ;读狗核心,不必跟进
006211DE   .85C0          test    eax, eax                         ;EAX有狗为0,无狗为27EF,必须清零
                                                                     ; (修改为:xor   eax, eax)
006211E0      75 0E         jnz   short 006211F0                   ;这里不能跳
006211E2   .A1 C42B6D00   mov   eax,
006211E7   .0C 02         or      al, 2
006211E9   .33F6          xor   esi, esi
006211EB   .A3 C42B6D00   mov   , eax
006211F0   >8BCF          mov   ecx, edi
006211F2   .E8 C9040000   call    006216C0
006211F7   .85C0          test    eax, eax
006211F9   .74 1A         je      short 00621215
006211FB   .E8 0E160000   call    0062280E
00621200   .85C0          test    eax, eax
00621202   .75 11         jnz   short 00621215
00621204   .A1 C42B6D00   mov   eax,
00621209   .5F            pop   edi
0062120A   .0C 01         or      al, 1
0062120C   .5E            pop   esi
0062120D   .A3 C42B6D00   mov   , eax
00621212   .33C0          xor   eax, eax
00621214   .C3            retn
00621215   >8BC6          mov   eax, esi
00621217   .5F            pop   edi
00621218   .5E            pop   esi
00621219   .C3            retn                                     ;返回

在006211DE处,EAX赋值为0后,0061FD17处就不再跳转了(第一处狗杀掉)。

继续F9运行中断:

0061FD26|.E8 550E0000   call    00620B80                         ;断下后,F7跟进
0061FD2B|.83F8 6E       cmp   eax, 6E
0061FD2E|.75 1B         jnz   short 0061FD4B                   ;这里不能跳,跳则为必须输入序列号,错误则进入学习版
0061FD30|.C745 EC 6E000>mov   dword ptr , 6E
0061FD37|.C745 FC FFFFF>mov   dword ptr , -1
0061FD3E|.8D4D F0       lea   ecx,

跟进call    00620B80:

00620B80/$53            push    ebx                              ;跟进后来到这里
00620B81|.55            push    ebp
00620B82|.8B6C24 10   mov   ebp,
00620B86|.56            push    esi
00620B87|.57            push    edi
00620B88|.33C0          xor   eax, eax
00620B8A|.BE 68A06C00   mov   esi, 006CA068                  ;z
00620B8F|.8BCD          mov   ecx, ebp
00620B91|>8A19          /mov   bl,
00620B93|.8AD3          |mov   dl, bl
00620B95|.3A1E          |cmp   bl,
00620B97|.75 1C         |jnz   short 00620BB5                  ;程序正常运行则跳转
00620B99|.84D2          |test    dl, dl
00620B9B|.74 14         |je      short 00620BB1
00620B9D|.8A59 01       |mov   bl,
00620BA0|.8AD3          |mov   dl, bl
00620BA2|.3A5E 01       |cmp   bl,
00620BA5|.75 0E         |jnz   short 00620BB5
00620BA7|.83C1 02       |add   ecx, 2
00620BAA|.83C6 02       |add   esi, 2
00620BAD|.84D2          |test    dl, dl
00620BAF|.^ 75 E0         \jnz   short 00620B91
00620BB1|>33C9          xor   ecx, ecx
00620BB3|.EB 05         jmp   short 00620BBA
00620BB5|>1BC9          sbb   ecx, ecx
00620BB7|.83D9 FF       sbb   ecx, -1
00620BBA|>8B7C24 14   mov   edi,
00620BBE|.85C9          test    ecx, ecx
00620BC0|.75 0F         jnz   short 00620BD1
00620BC2|.6A 00         push    0
00620BC4|.6A 39         push    39
00620BC6|.57            push    edi
00620BC7|.B9 902B6D00   mov   ecx, 006D2B90
00620BCC|.E8 EF000000   call    00620CC0                         ;加载序列号输入窗体
00620BD1|> \BE 64A06C00   mov   esi, 006CA064                  ;b
00620BD6|.8BCD          mov   ecx, ebp
00620BD8|>8A19          /mov   bl,                      ;验证狗序列号是否正确
00620BDA|.8AD3          |mov   dl, bl
00620BDC|.3A1E          |cmp   bl,                      ; (修改为:mov   bl, )
00620BDE|.75 1C         |jnz   short 00620BFC                  ;序列号正确则跳转,必须跳
00620BE0|.84D2          |test    dl, dl
00620BE2|.74 14         |je      short 00620BF8
00620BE4|.8A59 01       |mov   bl,
00620BE7|.8AD3          |mov   dl, bl
00620BE9|.3A5E 01       |cmp   bl,
00620BEC|.75 0E         |jnz   short 00620BFC
00620BEE|.83C1 02       |add   ecx, 2
00620BF1|.83C6 02       |add   esi, 2
00620BF4|.84D2          |test    dl, dl
00620BF6|.^ 75 E0         \jnz   short 00620BD8
00620BF8|>33C9          xor   ecx, ecx
00620BFA|.EB 05         jmp   short 00620C01
00620BFC|>1BC9          sbb   ecx, ecx
00620BFE|.83D9 FF       sbb   ecx, -1
00620C01|>85C9          test    ecx, ecx
00620C03|.75 0E         jnz   short 00620C13
00620C05|.6A 1C         push    1C
00620C07|.51            push    ecx
00620C08|.57            push    edi
00620C09|.B9 902B6D00   mov   ecx, 006D2B90
00620C0E|.E8 AD000000   call    00620CC0                         ;加载序列号输入窗体
00620C13|> \5F            pop   edi                              ;检测狗与序列号
00620C14|.5E            pop   esi
00620C15      2D 13020000   sub   eax, 213
00620C1A|.5D            pop   ebp
00620C1B|.5B            pop   ebx
00620C1C|.74 12         je      short 00620C30                   ;对应正确则跳,必须跳
                                                                     ; (修改为:jnz   short 00620C30)
00620C1E|.83E8 6F       sub   eax, 6F
00620C21|.74 05         je      short 00620C28
00620C23|.33C0          xor   eax, eax                         ;Default case of switch 00620C15
00620C25|.C2 0800       retn    8
00620C28|>B8 4C040000   mov   eax, 44C                         ;Case 282 of switch 00620C15
00620C2D|.C2 0800       retn    8
00620C30|>B8 6E000000   mov   eax, 6E                        ;Case 213 of switch 00620C15
00620C35\.C2 0800       retn    8

以上修改好了后,0061FD2E处就不再跳转了(第二处狗杀掉)。

小结:

这只狗是老狗了,非常容易打掉,此上的修改仅为打狗而已,达到软件脱狗运行的目的,并且标准版中的功能全部能使用了。
如果想使用该软件的更多专业版功能,则还需要进一步研究,请见下文:

因为专业版与标准版有一些功能上的区别,所以软件的专业版功能更为强大。

继续用字符搜索插件搜索:“标准版”

我这里找到N处,并且在所有这些提示上的能跳过改提示的跳转上设断!这里我就不一一例举出来了。

F9运行,随便找软件一个标准版限制的功能中断下来,我找的是“数据检查”功能。

中断后:

00563F37/.55                   push    ebp
00563F38|.8BEC               mov   ebp, esp
00563F3A|.6A FF                push    -1
00563F3C|.68 CCF16400          push    0064F1CC                              ;SE 处理程序安装
00563F41|.64:A1 00000000       mov   eax, fs:
00563F47|.50                   push    eax
00563F48|.64:8925 00000000   mov   fs:, esp
00563F4F|.81EC 68010000      sub   esp, 168
00563F55|.898D B4FEFFFF      mov   , ecx
00563F5B|.833D 48A06C00 6E   cmp   dword ptr , 6E                ;这里有问题!研究的数据!
00563F62|.0F85 06010000      jnz   0056406E                              ;这里跳转则能使用对应处限制的功能
00563F68|.6A 00                push    0
00563F6A|.6A 00                push    0
00563F6C|.68 8C196B00          push    006B198C                              ;功能
00563F71|.68 9AF00000          push    0F09A
00563F76|.8D8D C8FEFFFF      lea   ecx,
00563F7C|.E8 73370D00          call    <jmp.&MFC42.#537_CString::CString>
00563F81|.8985 B0FEFFFF      mov   , eax
00563F87|.8B85 B0FEFFFF      mov   eax,
00563F8D|.8985 ACFEFFFF      mov   , eax
00563F93|.C745 FC 00000000   mov   dword ptr , 0
00563F9A|.8B8D ACFEFFFF      mov   ecx,
00563FA0|.51                   push    ecx
00563FA1|.68 94196B00          push    006B1994                              ;标准版不提供
00563FA6|.8D8D C4FEFFFF      lea   ecx,
00563FAC|.E8 43370D00          call    <jmp.&MFC42.#537_CString::CString>

我们在00563F5B处用“数据窗口中跟随”-->“内存地址”:

006CA0486E 00 00 00 42 00 00 00 CF EE C4 BF B9 DC C0 EDn...B...项目管理
006CA05832 30 30 35 20 B1 EA D7 BC B0 E6 00 42 00 00 002006 标准版.B...
006CA0685A 00 00 00 01 03 01 0A 04 06 0B 32 07 09 33 64Z.... 2.3d
006CA0780A 0C 65 78 0D 0F 79 82 10 12 83 87 13 15 88 91..ex.y?儑垜
006CA08816 18 92 9B 19 1B 9C B9 1C 1E BA CD 1F 21 CE E1挍湽和!吾
006CA09822 24 E2 E6 25 27 E7 FE 4C 50 54 33 00 00 00 00"$怄%'琬LPT3....
006CA0A84C 50 54 32 00 00 00 00 4C 50 54 31 00 00 00 00LPT2....LPT1....
006CA0B8A1 BF D0 F2 C1 D0 BA C5 00 00 00 00 C7 EB CA E4】序列号....请输
006CA0C8C8 EB A1 BE 00 00 00 00 01 01 00 00 00 00 00 00入【..........
006CA0D856 65 72 73 69 6F 6E 31 32 33 03 00 9C 01 52 43Version123.?RC
006CA0E82D 55 4D 48 2D 4C 4D 2D 57 33 32 49 4E 54 46 00-UMH-LM-W32INTF.
006CA0F800 00 00 00 00 00 00 00 00 00 00 00 00 00 80 7C..............

冷血书生 发表于 2006-12-6 22:42:30

支持的,支持的!

haishi 发表于 2006-12-7 10:49:36

好文,支持!

glts 发表于 2006-12-7 13:21:27

好文“天下无狗”绝招的名式哈哈。

musoft 发表于 2006-12-7 21:56:12

/:D 支持下,嘿嘿~学习~

下下雪 发表于 2006-12-9 13:45:11

学习了,欧对狗一窍不通

风球 发表于 2006-12-9 13:57:13

支持&学习

wyh1983 发表于 2006-12-10 21:41:17

值 得收藏,!!!!!

afen 发表于 2006-12-10 22:01:23

不错 学到东西了 哈哈:lol:

shueg 发表于 2006-12-11 20:38:55

学习一下:P :P
页: [1] 2
查看完整版本: XXXXX项目管理2006之“天下无狗”