首页
社区
课程
招聘
[原创]国产某图书馆管理系统脱壳&破解分析(yoda's cryptor 1.x )
发表于: 2005-12-31 00:26 10552

[原创]国产某图书馆管理系统脱壳&破解分析(yoda's cryptor 1.x )

2005-12-31 00:26
10552

【软件名称】:XXXX图书馆管理系统   软件版本:8.82
【软件大小】:5480KB
【下载地址】:网上都是功能不全的演示版,注册后作者提供无功能限制版
【软件简介】:适用于单位图书馆,学校图书馆,是图书租借机构的最近图书管理软件,是您管理图书的最佳帮手。适用于单位图书馆,学校图书馆,是图书租借机构的最近图书管理软件,是您管理图书的最佳帮手。本图书馆管理系统具有方便的借书、还书、查找等操作。支持条形码扫描抢,可以让您更加方便的管理图书。并可以自定义图书类型,读者类型,方便添加图书、管理图书、管理用户。提供强大而又易用的借书和还书操作,完全独立的数据库系统。数据管理为您提供:读者管理,图书管理。数据查询为您提供:借阅情况,书库查询,编号查询。报表为您提供简单报表和详细报表,并提供方便的打印机设置和打印,还有数据导出功能,能够导出HTML和TXT文本文件和EXECL等格式文件供您选择。系统设置提供默认借阅时间和默认续借时间。本系统具有安全的数据库备份方案,简单易用,豪华的仿WINDOWS操作方式,可以使您很快上手,打印机设置为您打印提供解决方案根据需要设置相应的借出时间、借出册数。
【软件限制】:加密狗
【破解声明】:初学Crack,只是感兴趣,没有其它目的。第一次发分析贴,失误之处难免,敬请诸位大侠赐教!
【操作系统】:winxp sp2
【破解工具】:peid094,ollydbg1.1

―――――――――――――――――――――――――――――――――――――――――――
 
【破解过程】:

前段时间,单位急需一款图书管理软件,于是,花9XX购买了这款图书管理软件,正式版是用USB狗进行加密的,脱狗无法运行,由于单位图书馆新购进上万册图书,要求短时间录入完毕,一台机器有点力不从心。于是试着解狗。用peid查壳显示是yoda's cryptor 1.x / modified加的壳,但脱壳机却不能正常脱壳,只能手工进行啦~~
打开OD,调试选项选择忽略全部异常,用Isdebugpresent插件去掉OD的调试器标志,载入主程序,提示被压缩,取消分析。
004FD060     60                  pushad                    <------//ollydbg载入后停在这里
004FD061     E8 00000000         call 图书馆管.004FD066
004FD066     5D                  pop ebp                         ; kernel32.7C816D4F
004FD067     81ED 13414000       sub ebp,图书馆管.00404113
004FD06D     B9 F10B0000         mov ecx,0BF1
004FD072     8DBD 5B414000       lea edi,dword ptr ss:[ebp+40415>
004FD078     8BF7                mov esi,edi                     ; ntdll.7C930738
004FD07A     AC                  lods byte ptr ds:[esi]
004FD07B     C0C0 5A             rol al,5A
004FD07E     04 3D               add al,3D
004FD080     02C1                add al,cl
004FD082     2C BF               sub al,0BF
004FD084     02C1                add al,cl
004FD086     F8                  clc
004FD087     04 B2               add al,0B2
004FD089     04 97               add al,97
004FD08B     EB 01               jmp short 图书馆管.004FD08E
004FD08D   - E9 C0C828F9         jmp F9789952
004FD092     04 26               add al,26
004FD094     04 74               add al,74
004FD09A    /EB 01               jmp short 图书馆管.004FD09D
004FD09C    |E8 F82CE234         call 3531FD99
004FD0A1     F8                  clc
004FD0A2     34 BA               xor al,0BA
004FD0A4     C0C0 5A             rol al,5A
004FD0A7     04 3D               add al,3D
004FD0A9     02C1                add al,cl
004FD0AB     AA                  stos byte ptr es:[edi]
004FD0AC   ^ E2 CC               loopd short 图书馆管.004FD07A <------//循环,到下一行按F4运行,
004FD0AE     89E6                mov esi,esp
...........................

004FD0AE     8B4424 20           mov eax,dword ptr ss:[esp+20]         ; kernel32.7C816D4F
004FD0B2     40                  inc eax
004FD0B3     78 0A               js short 图书馆管.004FD0BF
004FD0B5     C785 71494000 01000>mov dword ptr ss:[ebp+404971],1
004FD0BF     8D85 0D414000       lea eax,dword ptr ss:[ebp+40410D]
004FD0C5     B9 03070000         mov ecx,703
004FD0CA     E8 1A030000         call 图书馆管.004FD3E9
004FD0CF     8985 6D494000       mov dword ptr ss:[ebp+40496D],eax
004FD0D5     8B85 65494000       mov eax,dword ptr ss:[ebp+404965]
004FD0DB     83E0 01             and eax,1
004FD0DE    /74 40               je short 图书馆管.004FD120   <------//跳得好远
004FD0E0    |8DB5 DD4A4000       lea esi,dword ptr ss:[ebp+404ADD]
004FD0E6    |8D85 BA414000       lea eax,dword ptr ss:[ebp+4041BA]
004FD0EC    |8946 08             mov dword ptr ds:[esi+8],eax
004FD0EF    |8BFD                mov edi,ebp
004FD0F1    |8D85 FB484000       lea eax,dword ptr ss:[ebp+4048FB]
004FD0F7    |33DB                xor ebx,ebx
004FD0F9    |50                  push eax
004FD0FA    |64:FF33             push dword ptr fs:[ebx]
004FD0FD    |64:8923             mov dword ptr fs:[ebx],esp
004FD100    |BD 4B484342         mov ebp,4243484B
004FD105    |66:B8 0400          mov ax,4
004FD109    |EB 01               jmp short 图书馆管.004FD10C
004FD10B    |FFCC                dec esp
004FD10D    |8BEF                mov ebp,edi                           ; 图书馆管.004FD763
004FD10F    |33DB                xor ebx,ebx
004FD111    |64:8F03             pop dword ptr fs:[ebx]                ; ntdll.7C930738
004FD114    |83C4 04             add esp,4
004FD117    |3C 04               cmp al,4
004FD119    |74 05               je short 图书馆管.004FD120
004FD11B    |EB 01               jmp short 图书馆管.004FD11E
004FD11D   -|E9 61C38B85         jmp 85DB9483
004FD122     5D                  pop ebp                               ; ntdll.7C930738
004FD123     49                  dec ecx
004FD124     40                  inc eax
004FD125     0003                add byte ptr ds:[ebx],al
004FD127     40                  inc eax
004FD128     3C 05               cmp al,5
...........................
来到这里

004FD120     8B85 5D494000       mov eax,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD126     0340 3C             add eax,dword ptr ds:[eax+3C]
004FD129     05 80000000         add eax,80
004FD12E     8B08                mov ecx,dword ptr ds:[eax]            ; kernel32.LoadLibraryA
004FD130     038D 5D494000       add ecx,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD136     83C1 10             add ecx,10
004FD139     8B01                mov eax,dword ptr ds:[ecx]
004FD13B     0385 5D494000       add eax,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD141     8B18                mov ebx,dword ptr ds:[eax]            ; kernel32.LoadLibraryA
004FD143     899D E94A4000       mov dword ptr ss:[ebp+404AE9],ebx
004FD149     83C0 04             add eax,4
004FD14C     8B18                mov ebx,dword ptr ds:[eax]            ; kernel32.LoadLibraryA
004FD14E     899D ED4A4000       mov dword ptr ss:[ebp+404AED],ebx
004FD154     8D85 F14A4000       lea eax,dword ptr ss:[ebp+404AF1]
004FD15A     50                  push eax                              ; <&KeRnEl32.LoadLibraryA>
004FD15B     FF95 E94A4000       call dword ptr ss:[ebp+404AE9]
004FD161     8BF0                mov esi,eax                           ; <&KeRnEl32.LoadLibraryA>
004FD163     8985 FE4A4000       mov dword ptr ss:[ebp+404AFE],eax     ; <&KeRnEl32.LoadLibraryA>
004FD169     8D85 024B4000       lea eax,dword ptr ss:[ebp+404B02]
004FD16F     E8 19010000         call 图书馆管.004FD28D                 <------//取得句柄
004FD174     8985 134B4000       mov dword ptr ss:[ebp+404B13],eax     ; <&KeRnEl32.LoadLibraryA>
004FD17A     8D85 174B4000       lea eax,dword ptr ss:[ebp+404B17]
004FD180     E8 08010000         call 图书馆管.004FD28D
004FD185     8985 264B4000       mov dword ptr ss:[ebp+404B26],eax     ; <&KeRnEl32.LoadLibraryA>
004FD18B     8D85 2A4B4000       lea eax,dword ptr ss:[ebp+404B2A]
004FD191     E8 F7000000         call 图书馆管.004FD28D
004FD196     8985 3D4B4000       mov dword ptr ss:[ebp+404B3D],eax     ; <&KeRnEl32.LoadLibraryA>
004FD19C     8D85 414B4000       lea eax,dword ptr ss:[ebp+404B41]
004FD1A2     E8 E6000000         call 图书馆管.004FD28D                <------//EAX出现“Createfilea”,记得以前看
过精华6里loveboom关于此壳的分析,下一行并未出现经典的cmp eax,-1。
004FD1A7     8985 4D4B4000       mov dword ptr ss:[ebp+404B4D],eax     ; <&KeRnEl32.LoadLibraryA>
004FD1AD     8D85 514B4000       lea eax,dword ptr ss:[ebp+404B51]
004FD1B3     E8 D5000000         call 图书馆管.004FD28D
004FD1B8     8985 5D4B4000       mov dword ptr ss:[ebp+404B5D],eax     ; <&KeRnEl32.LoadLibraryA>
004FD1BE     8D85 614B4000       lea eax,dword ptr ss:[ebp+404B61]
004FD1C4     E8 C4000000         call 图书馆管.004FD28D
004FD1C9     8985 6C4B4000       mov dword ptr ss:[ebp+404B6C],eax     ; <&KeRnEl32.LoadLibraryA>
004FD1CF     8D85 704B4000       lea eax,dword ptr ss:[ebp+404B70]
004FD1D5     E8 B3000000         call 图书馆管.004FD28D                <------//读文件
004FD1DA     8985 794B4000       mov dword ptr ss:[ebp+404B79],eax     ; 图书馆管.004FDAC3
004FD1E0     8D85 7D4B4000       lea eax,dword ptr ss:[ebp+404B7D]
004FD1E6     E8 A2000000         call 图书馆管.004FD28D                <------//取文件大小
004FD1EB     8985 894B4000       mov dword ptr ss:[ebp+404B89],eax     ; 图书馆管.004FDAC3
004FD1F1     8D85 8D4B4000       lea eax,dword ptr ss:[ebp+404B8D]
004FD1F7     E8 91000000         call 图书馆管.004FD28D                <------//关闭句柄
004FD1FC     8985 994B4000       mov dword ptr ss:[ebp+404B99],eax     ; 图书馆管.004FDAC3
004FD202     8D85 A64B4000       lea eax,dword ptr ss:[ebp+404BA6]
004FD208     50                  push eax                              ; 图书馆管.004FDAC3
004FD209     FF95 E94A4000       call dword ptr ss:[ebp+404AE9]        ; <------//调用一个安装在%windir%\system32下的YTuDriver3.dll库文件,用resource hacker打开好象是一个注册组件
004FD20F     8BF0                mov esi,eax                           ; 图书馆管.004FDAC3
004FD211     8985 B54B4000       mov dword ptr ss:[ebp+404BB5],eax     ; 图书馆管.004FDAC3
004FD217     8D85 B94B4000       lea eax,dword ptr ss:[ebp+404BB9]
004FD21D     E8 6B000000         call 图书馆管.004FD28D                 <------//读取驱动,估计是加密狗的驱动
004FD222     8985 C04B4000       mov dword ptr ss:[ebp+404BC0],eax     ; 图书馆管.004FDAC3
004FD228     8D85 9D4B4000       lea eax,dword ptr ss:[ebp+404B9D]
004FD22E     E8 5A000000         call 图书馆管.004FD28D
004FD233     8985 A24B4000       mov dword ptr ss:[ebp+404BA2],eax     ; 图书馆管.004FDAC3
004FD239     8D85 C44B4000       lea eax,dword ptr ss:[ebp+404BC4]
004FD23F     50                  push eax                              ; 图书馆管.004FDAC3
004FD240     FF95 E94A4000       call dword ptr ss:[ebp+404AE9]        ; kernel32.LoadLibraryA
004FD246     8BF0                mov esi,eax                           ; 图书馆管.004FDAC3
004FD248     8985 CF4B4000       mov dword ptr ss:[ebp+404BCF],eax     ; 图书馆管.004FDAC3
004FD24E     8D85 D34B4000       lea eax,dword ptr ss:[ebp+404BD3]
004FD254     E8 34000000         call 图书馆管.004FD28D
004FD259     8985 DF4B4000       mov dword ptr ss:[ebp+404BDF],eax     ; 图书馆管.004FDAC3
004FD25F     8D85 E34B4000       lea eax,dword ptr ss:[ebp+404BE3]
004FD265     50                  push eax                              ; 图书馆管.004FDAC3
004FD266     FF95 E94A4000       call dword ptr ss:[ebp+404AE9]        ; kernel32.LoadLibraryA
004FD26C     8BF0                mov esi,eax                           ; 图书馆管.004FDAC3
004FD26E     8985 F04B4000       mov dword ptr ss:[ebp+404BF0],eax     ; 图书馆管.004FDAC3
004FD274     8D85 F44B4000       lea eax,dword ptr ss:[ebp+404BF4]
004FD27A     E8 0E000000         call 图书馆管.004FD28D
004FD27F     8985 FF4B4000       mov dword ptr ss:[ebp+404BFF],eax     ; 图书馆管.004FDAC3
004FD285     8D85 43434000       lea eax,dword ptr ss:[ebp+404343]
004FD28B     50                  push eax                              ; 图书馆管.004FDAC3
004FD28C     C3                  retn
004FD28D     50                  push eax                              ; 图书馆管.004FDAC3
004FD28E     56                  push esi                              ; kernel32.7C800000
004FD28F     FF95 ED4A4000       call dword ptr ss:[ebp+404AED]        ; kernel32.GetProcAddress
004FD295     C3                  retn
004FD296     F785 65494000 10000>test dword ptr ss:[ebp+404965],10
004FD2A0     74 37               je short 图书馆管.004FD2D9
004FD2A2     64:FF35 30000000    push dword ptr fs:[30]
004FD2A9     58                  pop eax                               ; ntdll.7C930738
004FD2AA     85C0                test eax,eax
004FD2AC     78 0F               js short 图书馆管.004FD2BD
004FD2AE     8B40 0C             mov eax,dword ptr ds:[eax+C]
004FD2B1     8B40 0C             mov eax,dword ptr ds:[eax+C]
004FD2B4     C740 20 00100000    mov dword ptr ds:[eax+20],1000
004FD2BB     EB 1C               jmp short 图书馆管.004FD2D9
004FD2BD     6A 00               push 0
004FD2BF     FF95 134B4000       call dword ptr ss:[ebp+404B13]        ; kernel32.GetModuleHandleA
004FD2C5     85D2                test edx,edx                          ; ntdll.7C99C0D8
004FD2C7     79 10               jns short 图书馆管.004FD2D9
004FD2C9     837A 08 FF          cmp dword ptr ds:[edx+8],-1
004FD2CD     75 0A               jnz short 图书馆管.004FD2D9
004FD2CF     8B52 04             mov edx,dword ptr ds:[edx+4]
004FD2D2     C742 50 00100000    mov dword ptr ds:[edx+50],1000
004FD2D9     8BBD 5D494000       mov edi,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD2DF     037F 3C             add edi,dword ptr ds:[edi+3C]
004FD2E2     8BB5 5D494000       mov esi,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD2E8     8B4F 54             mov ecx,dword ptr ds:[edi+54]
004FD2EB     8D85 684D4000       lea eax,dword ptr ss:[ebp+404D68]
004FD2F1     50                  push eax
004FD2F2     6A 04               push 4
004FD2F4     51                  push ecx                              ; ntdll.7C937304
004FD2F5     FFB5 5D494000       push dword ptr ss:[ebp+40495D]        ; 图书馆管.00400000
004FD2FB     FF95 264B4000       call dword ptr ss:[ebp+404B26]        
004FD301     F785 65494000 08000>test dword ptr ss:[ebp+404965],8
004FD30B     0F84 FD000000       je 图书馆管.004FD40E
004FD311     68 04010000         push 104
004FD316     8DBD 684D4000       lea edi,dword ptr ss:[ebp+404D68]
004FD31C     57                  push edi                              ; 图书馆管.004FDCBB
004FD31D     6A 00               push 0
004FD31F     FF95 3D4B4000       call dword ptr ss:[ebp+404B3D]        ; kernel32.GetModuleFileNameA
004FD325     B8 0684EBEE         mov eax,EEEB8406
004FD32A     8985 364D4000       mov dword ptr ss:[ebp+404D36],eax
004FD330     8D85 324C4000       lea eax,dword ptr ss:[ebp+404C32]
004FD336     50                  push eax
004FD337     FFB5 364D4000       push dword ptr ss:[ebp+404D36]
004FD33D     6A 01               push 1
004FD33F     6A 00               push 0
004FD341     FF95 FF4B4000       call dword ptr ss:[ebp+404BFF]        <--------//检测加密狗状态
004FD347     0BC0                or eax,eax
004FD349     74 18               je short 图书馆管.004FD363            <--------//有狗则跳转
004FD34B     6A 00               push 0
004FD34D     8D85 034C4000       lea eax,dword ptr ss:[ebp+404C03]
004FD353     50                  push eax
004FD354     8D85 084C4000       lea eax,dword ptr ss:[ebp+404C08]
004FD35A     50                  push eax
004FD35B     6A 00               push 0
004FD35D     FF95 DF4B4000       call dword ptr ss:[ebp+404BDF]        ; USER32.MessageBoxA  <--------//无狗运行到
这里弹出错误对话窗口“请检查加密锁...”
004FD363     FFB5 364D4000       push dword ptr ss:[ebp+404D36]
004FD369     FF95 A24B4000       call dword ptr ss:[ebp+404BA2]        ; YTuDrive.pass
004FD36F     FFB5 364D4000       push dword ptr ss:[ebp+404D36]
004FD375     FF95 C04B4000       call dword ptr ss:[ebp+404BC0]        ; YTuDrive.driver
004FD37B     6A 00               push 0
004FD37D     68 80000000         push 80
004FD382     6A 03               push 3
004FD384     6A 00               push 0
004FD386     6A 01               push 1
004FD388     68 00000080         push 80000000
004FD38D     57                  push edi                              ; 图书馆管.004FDCBB
004FD38E     FF95 4D4B4000       call dword ptr ss:[ebp+404B4D]        ; kernel32.CreateFileA
004FD394     83F8 FF             cmp eax,-1
004FD397     75 04               jnz short 图书馆管.004FD39D
004FD399     33C0                xor eax,eax
004FD39B     EB 71               jmp short 图书馆管.004FD40E
004FD39D     8BF8                mov edi,eax
004FD39F     6A 00               push 0
004FD3A1     57                  push edi                              ; 图书馆管.004FDCBB
004FD3A2     FF95 894B4000       call dword ptr ss:[ebp+404B89]        ; kernel32.GetFileSize
004FD3A8     83E8 05             sub eax,5
004FD3AB     96                  xchg eax,esi                          ; 图书馆管.00400000
004FD3AC     56                  push esi                              ; 图书馆管.00400000
004FD3AD     6A 40               push 40
004FD3AF     FF95 5D4B4000       call dword ptr ss:[ebp+404B5D]        ; kernel32.GlobalAlloc
004FD3B5     0BC0                or eax,eax
004FD3B7     75 02               jnz short 图书馆管.004FD3BB
004FD3B9     EB 4A               jmp short 图书馆管.004FD405
004FD3BB     93                  xchg eax,ebx                          ; kernel32.GetProcAddress
004FD3BC     6A 00               push 0
004FD3BE     8D85 684D4000       lea eax,dword ptr ss:[ebp+404D68]
004FD3C4     50                  push eax
004FD3C5     56                  push esi                              ; 图书馆管.00400000
004FD3C6     53                  push ebx                              ; kernel32.GetProcAddress
004FD3C7     57                  push edi                              ; 图书馆管.004FDCBB
004FD3C8     FF95 794B4000       call dword ptr ss:[ebp+404B79]        ; kernel32.ReadFile
004FD3CE     8BC3                mov eax,ebx                           ; kernel32.GetProcAddress
004FD3D0     8BCE                mov ecx,esi                           ; 图书馆管.00400000
004FD3D2     53                  push ebx                              ; kernel32.GetProcAddress
004FD3D3     57                  push edi                              ; 图书馆管.004FDCBB
004FD3D4     E8 10000000         call 图书馆管.004FD3E9
004FD3D9     8985 69494000       mov dword ptr ss:[ebp+404969],eax
004FD3DF     5F                  pop edi                               ; ntdll.7C930738
004FD3E0     5B                  pop ebx                               ; ntdll.7C930738

.............省略若干段

004FD561    /EB 17               jmp short 图书馆管.004FD57A
004FD563    |8B56 04             mov edx,dword ptr ds:[esi+4]
004FD566    |0395 5D494000       add edx,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD56C    |EB 04               jmp short 图书馆管.004FD572
004FD56E    |41                  inc ecx
004FD56F    |83C2 04             add edx,4
004FD572    |833A 00             cmp dword ptr ds:[edx],0
004FD575   ^|75 F7               jnz short 图书馆管.004FD56E
004FD577    |83C6 0C             add esi,0C
004FD57A    \837E 04 00          cmp dword ptr ds:[esi+4],0
004FD57E   ^ 75 E3               jnz short 图书馆管.004FD563     <--------//这里不往回跳,在下一行F4         
004FD580     33D2                xor edx,edx
004FD582     B8 05000000         mov eax,5
004FD587     F7E1                mul ecx
004FD589     50                  push eax
004FD58A     6A 00               push 0
004FD58C     FF95 5D4B4000       call dword ptr ss:[ebp+404B5D]        ; kernel32.GlobalAlloc
004FD592     0BC0                or eax,eax
004FD594     75 05               jnz short 图书馆管.004FD59B
004FD596     83C4 04             add esp,4
004FD599     61                  popad
004FD59A     C3                  retn
004FD59B     8907                mov dword ptr ds:[edi],eax
004FD59D     8947 04             mov dword ptr ds:[edi+4],eax
004FD5A0     5E                  pop esi                               ; 图书馆管.004FD8C8
004FD5A1     E9 42010000         jmp 图书馆管.004FD6E8                 <--------//跳得好远
004FD5A6     8B1E                mov ebx,dword ptr ds:[esi]
004FD5A8     039D 5D494000       add ebx,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD5AE     8BC3                mov eax,ebx
.............
来到这里

004FD6E8     837E 04 00          cmp dword ptr ds:[esi+4],0
004FD6EC   ^ 0F85 B4FEFFFF       jnz 图书馆管.004FD5A6                 <--------//这里不往回跳,在下一行F4
004FD6F2     33C0                xor eax,eax                           ; MSVBVM60.__vbaFreeStr<--------//原来是VB6

写的
004FD6F4     40                  inc eax                               ; MSVBVM60.__vbaFreeStr
004FD6F5     83F8 01             cmp eax,1
004FD6F8     74 02               je short 图书馆管.004FD6FC
004FD6FA     61                  popad
004FD6FB     C3                  retn
004FD6FC     F785 65494000 02000>test dword ptr ss:[ebp+404965],2
004FD706     74 18               je short 图书馆管.004FD720
004FD708     8BBD 5D494000       mov edi,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD70E     037F 3C             add edi,dword ptr ds:[edi+3C]
004FD711     8B4F 54             mov ecx,dword ptr ds:[edi+54]
004FD714     8BB5 5D494000       mov esi,dword ptr ss:[ebp+40495D]     ; 图书馆管.00400000
004FD71A     C606 00             mov byte ptr ds:[esi],0
004FD71D     46                  inc esi                               ; 图书馆管.004FD8D4
004FD71E   ^ E2 FA               loopd short 图书馆管.004FD71A
004FD720     8D85 0D414000       lea eax,dword ptr ss:[ebp+40410D]
004FD726     B9 03070000         mov ecx,703
004FD72B     EB 01               jmp short 图书馆管.004FD72E
004FD72D   - E9 E8B6FCFF         jmp 图书馆管.004C8E1A
004FD732     FFEB                jmp far ebx                           ; 非法使用寄存器
004FD734     01C7                add edi,eax
004FD736     8B9D 6D494000       mov ebx,dword ptr ss:[ebp+40496D]
004FD73C     33C3                xor eax,ebx
004FD73E     74 08               je short 图书馆管.004FD748
004FD740     EB 01               jmp short 图书馆管.004FD743
004FD742     2C 61               sub al,61
004FD744     EB 01               jmp short 图书馆管.004FD747
004FD746     E8 C38DBD10         call 110D650E
004FD74B     48                  dec eax
004FD74C     40                  inc eax
004FD74D     008B F7B9DF00       add byte ptr ds:[ebx+DFB9F7],cl
004FD753     0000                add byte ptr ds:[eax],al
004FD755     33DB                xor ebx,ebx
004FD757     AC                  lods byte ptr ds:[esi]
004FD758     34 79               xor al,79
004FD75A     2AC3                sub al,bl
004FD75C     C0C0 02             rol al,2
004FD75F     AA                  stos byte ptr es:[edi]
004FD760     43                  inc ebx
004FD761   ^ E2 F4               loopd short 图书馆管.004FD757       <------//循环,到下一行按F4运行   
004FD763     8D85 3A4D4000       lea eax,dword ptr ss:[ebp+404D3A]
004FD769     50                  push eax                              ; 图书馆管.004FDC8D
004FD76A     FFB5 FE4A4000       push dword ptr ss:[ebp+404AFE]        ; kernel32.7C800000
004FD770     FF95 ED4A4000       call dword ptr ss:[ebp+404AED]        ; kernel32.GetProcAddress  
004FD776     0BC0                or eax,eax                            ; 图书馆管.004FDC8D
004FD778     74 08               je short 图书馆管.004FD782
004FD77A     FFD0                call eax                              ; 图书馆管.004FDC8D
004FD77C     0BC0                or eax,eax                            ; 图书馆管.004FDC8D
004FD77E     74 02               je short 图书馆管.004FD782
004FD780     61                  popad
004FD781     C3                  retn
004FD782     F785 65494000 01000>test dword ptr ss:[ebp+404965],1
004FD78C     74 4F               je short 图书馆管.004FD7DD
004FD78E     8DB5 DD4A4000       lea esi,dword ptr ss:[ebp+404ADD]
004FD794     8D85 65484000       lea eax,dword ptr ss:[ebp+404865]
004FD79A     8946 08             mov dword ptr ds:[esi+8],eax          ; 图书馆管.004FDC8D
004FD79D     33DB                xor ebx,ebx
004FD79F     8D85 2C494000       lea eax,dword ptr ss:[ebp+40492C]
004FD7A5     50                  push eax                              ; 图书馆管.004FDC8D
004FD7A6     64:FF33             push dword ptr fs:[ebx]
004FD7A9     64:8923             mov dword ptr fs:[ebx],esp
004FD7AC     8BFD                mov edi,ebp
004FD7AE     B8 00440000         mov eax,4400
004FD7B3     EB 01               jmp short 图书馆管.004FD7B6
004FD7B5     C7                  ???                                   ; 未知命令
004FD7B6     CD 68               int 68
004FD7B8     33DB                xor ebx,ebx
004FD7BA     64:8F03             pop dword ptr fs:[ebx]                ; kernel32.7C800000
004FD7BD     83C4 04             add esp,4
004FD7C0     66:81FF 9712        cmp di,1297
004FD7C5     74 0E               je short 图书馆管.004FD7D5
004FD7C7     66:81FF 7712        cmp di,1277
004FD7CC     74 07               je short 图书馆管.004FD7D5
004FD7CE     66:81FF 3013        cmp di,1330
004FD7D3     75 08               jnz short 图书馆管.004FD7DD
004FD7D5     EB 01               jmp short 图书馆管.004FD7D8
004FD7D7     FF61 EB             jmp dword ptr ds:[ecx-15]
004FD7DA     01E8                add eax,ebp
004FD7DC     C3                  retn
004FD7DD     8D85 C4484000       lea eax,dword ptr ss:[ebp+4048C4]
004FD7E3     50                  push eax                              ; 图书馆管.004FDC8D
004FD7E4     C3                  retn
004FD7E5     55                  push ebp
004FD7E6     8BEC                mov ebp,esp
004FD7E8     57                  push edi                              ; 图书馆管.004FD842
004FD7E9     8B45 10             mov eax,dword ptr ss:[ebp+10]
004FD7EC     8BB8 C4000000       mov edi,dword ptr ds:[eax+C4]
004FD7F2     FF37                push dword ptr ds:[edi]
004FD7F4     33FF                xor edi,edi                           ; 图书馆管.004FD842
004FD7F6     64:8F07             pop dword ptr fs:[edi]                ; kernel32.7C800000
004FD7F9     8380 C4000000 08    add dword ptr ds:[eax+C4],8
004FD800     8BB8 A4000000       mov edi,dword ptr ds:[eax+A4]
004FD806     C1C7 07             rol edi,7
004FD809     89B8 B8000000       mov dword ptr ds:[eax+B8],edi         ; 图书馆管.004FD842
004FD80F     B8 00000000         mov eax,0
004FD814     5F                  pop edi                               ; kernel32.7C800000
004FD815     C9                  leave
004FD816     C3                  retn
004FD817     32C0                xor al,al
004FD819     8DBD 0D414000       lea edi,dword ptr ss:[ebp+40410D]
004FD81F     B9 85070000         mov ecx,785
004FD824     AA                  stos byte ptr es:[edi]
004FD825   ^ E2 FD               loopd short 图书馆管.004FD824         <------//循环,到下一行按F4运行
004FD827     8DBD EF484000       lea edi,dword ptr ss:[ebp+4048EF]
004FD82D     B9 5D040000         mov ecx,45D
004FD832     AA                  stos byte ptr es:[edi]
004FD833   ^ E2 FD               loopd short 图书馆管.004FD832         <------//循环,到下一行按F4运行
004FD835     61                  popad
004FD836     50                  push eax                              ; 图书馆管.004FDC8D <------//此壳的标志  
004FD837     33C0                xor eax,eax                           ; 图书馆管.004FDC8D
004FD839     64:FF30             push dword ptr fs:[eax]
004FD83C     64:8920             mov dword ptr fs:[eax],esp
004FD83F     EB 01               jmp short 图书馆管.004FD842            <------//异常跳转,一般OEP离此不远了。
004FD841     87EB                xchg ebx,ebp
004FD843     0000                add byte ptr ds:[eax],al
004FD845     0000                add byte ptr ds:[eax],al
............................
来到这里

004FD842     0000                add byte ptr ds:[eax],al <------//出现访问违反异常,按shift+F8跳过。               
004FD844     0000                add byte ptr ds:[eax],al
004FD846     0000                add byte ptr ds:[eax],al
004FD848     0000                add byte ptr ds:[eax],al
004FD84A     0000                add byte ptr ds:[eax],al
004FD84C     0000                add byte ptr ds:[eax],al
004FD84E     0000                add byte ptr ds:[eax],al
............................

00402912   - FF25 30114000       jmp dword ptr ds:[401130]             ; MSVBVM60.__vbaVarTstNe
00402918   - FF25 48114000       jmp dword ptr ds:[401148]             ; MSVBVM60.__vbaVarCopy
0040291E   - FF25 18104000       jmp dword ptr ds:[401018]             ; MSVBVM60.__vbaVarMove
00402924   - FF25 6C114000       jmp dword ptr ds:[40116C]             ; MSVBVM60.__vbaVarForNext
0040292A   - FF25 6C104000       jmp dword ptr ds:[40106C]             ; MSVBVM60.__vbaVarForInit
00402930   - FF25 5C114000       jmp dword ptr ds:[40115C]             ; MSVBVM60.__vbaStrVarCopy
00402936   - FF25 B0104000       jmp dword ptr ds:[4010B0]             ; MSVBVM60.__vbaAryConstruct2
0040293C   - FF25 38114000       jmp dword ptr ds:[401138]             ; MSVBVM60.__vbaVarAdd
00402942   - FF25 04104000       jmp dword ptr ds:[401004]             ; MSVBVM60.__vbaVarSub
00402948   - FF25 50104000       jmp dword ptr ds:[401050]             ; MSVBVM60.rtcVarFromFormatVar
0040294E   - FF25 D8104000       jmp dword ptr ds:[4010D8]             ; MSVBVM60.EVENT_SINK_QueryInterface
00402954   - FF25 9C104000       jmp dword ptr ds:[40109C]             ; MSVBVM60.EVENT_SINK_AddRef
0040295A   - FF25 CC104000       jmp dword ptr ds:[4010CC]             ; MSVBVM60.EVENT_SINK_Release
00402960   - FF25 C8104000       jmp dword ptr ds:[4010C8]             ; MSVBVM60.Zombie_GetTypeInfoCount
00402966   - FF25 64104000       jmp dword ptr ds:[401064]             ; MSVBVM60.Zombie_GetTypeInfo
0040296C   - FF25 00104000       jmp dword ptr ds:[401000]             ; MSVBVM60.EVENT_SINK_GetIDsOfNames
00402972   - FF25 38104000       jmp dword ptr ds:[401038]             ; MSVBVM60.EVENT_SINK_Invoke
00402978   - FF25 84104000       jmp dword ptr ds:[401084]             ; MSVBVM60.GetMemStr
0040297E   - FF25 90104000       jmp dword ptr ds:[401090]             ; MSVBVM60.PutMemStr
00402984   - FF25 2C114000       jmp dword ptr ds:[40112C]             ; MSVBVM60.ThunRTMain
0040298A     0000                add byte ptr ds:[eax],al
0040298C     68 68314000         push 图书馆管.00403168                ; ASCII "VB5!6&vb6chs.dll"
00402991     E8 EEFFFFFF         call 图书馆管.00402984                ; jmp to MSVBVM60.ThunRTMain <------//停在这里,提示被调试的程序无法处理异常,进程终止。
接下来又重复了几遍,仍然如此。后来,仔细分析了出错地址代码及注释,发现了一个问题:每次都是出现访问违反异常后按F8从004FD842直接跳到00402991,然后进程终止,为什么没有经过上一行呢?于是重新载入主程序,清除所有断点,试着直接在命令行中下硬件中断HE 0040298C,F9运行,跳过004FD842处的访问违反异常后,程序断在了0040298C,再按F8单步跟踪,这次在00402991处没有提示无法处理,程序正常运行,又试了几次,都成功运行,所以初步断定0040298C就是OEP。接下来用OD脱壳插件直接在当前调试进程中成功脱壳,程序运行正常。下面发生的事让我百思不得其解:本想正式分析和狗相关代码以便脱狗运行,谁知一个意外却使我到此收工了,去掉狗看看出错提示时,结果没有狗脱壳后的程序也正常运行了。运行未脱壳程序,找到出错提示,在脱壳后的主程序中查找,居然找不到,个人认为这个软件是把狗和壳捆帮在一起了。本人菜鸟一个,对加密狗接触的也不多,请各位大虾多提意见,多批评指正。

【破解总结】:
主要工作是脱壳的过程。查壳得知是yoda's cryptor 1.x / modified,用脱壳机不能正确脱壳,估计做了伪装,手工脱壳注意几个循环和回跳,最后是出错分析,个人感觉,经验比较重要。无狗的情况下也跟了很久,但搞不定,由于已和软件作者联系,待版本升级后再提供此版本供大家练习。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错!够详细!
2005-12-31 01:05
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
强,顶啊!
2005-12-31 08:26
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哈哈,是域天的狗壳吧,加密强度软件作者可能也没有什么好办法,除了换一种狗。
2005-12-31 14:19
0
雪    币: 89
活跃值: (171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
从这个狗的分析情况来就说,,这个不是什么强狗,
楼是没有深层进入修改
2006-1-1 19:17
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
6
支持+学习!
2006-1-1 20:51
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
最初由 sjclch 发布
从这个狗的分析情况来就说,,这个不是什么强狗,
楼是没有深层进入修改


没错,我想进一步分析时,软件已可脱狗运行,运气多了一点。看看这篇文章就知道猛狗了。
http://www.pediy.com/bbshtml/BBS5/pediy50445.htm
2006-1-1 23:41
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
最初由 sjclch 发布
从这个狗的分析情况来就说,,这个不是什么强狗,
楼是没有深层进入修改

和作者联系过,他说的。
2006-1-1 23:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
文章真不错!学习.
2006-1-7 16:26
0
雪    币: 215
活跃值: (82)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
我要好好的学习了,
2006-1-10 06:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好文章!值得我学习。
2006-1-10 15:27
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
到作者主页上看了看,发现已经更新,所以发到这里。由于附件太大,大家去我的网络优盘下载吧,分卷压缩,共两个文件,解压密码请看压缩包内说明。只放三天请需要的朋友尽快下载。破解文件太大,我加了北斗2.9的壳。如需破解文件请与我联系。
2006-1-12 23:16
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好文章,要好好研究一下。
2006-1-15 14:06
0
游客
登录 | 注册 方可回帖
返回
//