yijun 发表于 2005-4-17 12:06:27

破解doctotxt

日期:2005年4月17日   破解人:yijun
———————————————————————————————————————————


【软件名称】:doctotxt   
【软件版本】:1.0
【软件大小】:529KB
【下载地址】:internet
【软件简介】:DocToTxt 是一个将Word 文件(以.doc为后缀)转换为文本文件(以.txt为后缀)的
文档格式批量转换工具。使用它可以一次性地把多个 doc 文件转换为多个对应的 txt 文
件,以方便于某些办公和公文处理的需要。在转换后得到的 txt 文件中,原来 doc 文件
中的全部文本(文字)信息得以保留,而图片和表格线等则不复存在。由于txt 文件体积
小巧,又很方便编辑,DocToTxt 工具在某些档案文件的管理中能够发挥很好的作用。
【软件限制】:未注册只能用15次~
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:OD

———————————————————————————————————————————
 
【破解过程】:

   peid查壳知该软件为tElock 0.98b1 -> tE!壳,OD载入选不继续分析,来到以下地方。

00491BD6 >^\E9 25E4FFFF   jmp doctotxt.00490000
00491BDB    0000            add byte ptr ds:,al
00491BDD    00CF            add bh,cl
00491BDF    26:084D 1E      or byte ptr es:,cl
00491BE3    1C 09         sbb al,9
00491BE5    0000            add byte ptr ds:,al
00491BE7    0000            add byte ptr ds:,al
00491BE9    0000            add byte ptr ds:,al
00491BEB    0000            add byte ptr ds:,al
00491BED    003E            add byte ptr ds:,bh
00491BEF    1C 09         sbb al,9
00491BF1    002E            add byte ptr ds:,ch
00491BF3    1C 09         sbb al,9
00491BF5    0026            add byte ptr ds:,ah
00491BF7    1C 09         sbb al,9
00491BF9    0000            add byte ptr ds:,al
00491BFB    0000            add byte ptr ds:,al
00491BFD    0000            add byte ptr ds:,al
00491BFF    0000            add byte ptr ds:,al
00491C01    004B 1C         add byte ptr ds:,cl

ALT+M,在内存映射,项目 26
地址=00481000
大小=0000F000 (61440.)
宿主=doctotxt 00400000
区段=.rsrc
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE
设置内存访问断点。Shift+F9后断在以下地方。
004910A9    F3:A5         rep movs dword ptr es:,dwor>
004910AB    8BCB            mov ecx,ebx
004910AD    F3:A4         rep movs byte ptr es:,byte >
004910AF    8BF2            mov esi,edx
004910B1    8B7C24 28       mov edi,dword ptr ss:
004910B5    52            push edx
004910B6    55            push ebp
004910B7    FC            cld
004910B8    B2 80         mov dl,80
004910BA    A4            movs byte ptr es:,byte ptr >
004910BB    E8 6D000000   call doctotxt.0049112D
004910C0^ 73 F8         jnb short doctotxt.004910BA
004910C2    33C9            xor ecx,ecx
004910C4    E8 64000000   call doctotxt.0049112D
004910C9    73 1A         jnb short doctotxt.004910E5
004910CB    33C0            xor eax,eax
004910CD    E8 5B000000   call doctotxt.0049112D
004910D2    73 20         jnb short doctotxt.004910F4
004910D4    41            inc ecx
再次ALT+M,在内存映射,项目 21
地址=00401000
大小=00070000 (458752.)
宿主=doctotxt 00400000
区段=CODE
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE

设置内存访问断点。Shift+F9后断在以下地方。
00470574    55            push ebp//入口
00470575    8BEC            mov ebp,esp
00470577    B9 06000000   mov ecx,6
0047057C    6A 00         push 0
0047057E    6A 00         push 0
00470580    49            dec ecx
00470581^ 75 F9         jnz short doctotxt.0047057C
00470583    B8 4C034700   mov eax,doctotxt.0047034C
00470588    E8 DB60F9FF   call doctotxt.00406668
0047058D    33C0            xor eax,eax
0047058F    55            push ebp
00470590    68 3B084700   push doctotxt.0047083B
00470595    64:FF30         push dword ptr fs:
00470598    64:8920         mov dword ptr fs:,esp
0047059B    8D55 F0         lea edx,dword ptr ss:
0047059E    B8 50084700   mov eax,doctotxt.00470850      ; ASCII "abc"
OD插件脱壳(不要重建输入表)后关闭OD~~~~~~~~~修复即可,或直接用脱壳软件脱该壳~~~~~~~~~

*********************************************************************************************


OD的UNICODE查找关键字很容易来到以下地方处~~~~~~~
004655B0    55            push ebp
004655B1    68 4C574600   push doctotxt.0046574C
004655B6    64:FF30         push dword ptr fs:
004655B9    64:8920         mov dword ptr fs:,esp
004655BC    8D95 E8FEFFFF   lea edx,dword ptr ss:
004655C2    B8 60574600   mov eax,doctotxt.00465760      ; ASCII "abc"
004655C7    E8 B0F5FFFF   call doctotxt.00464B7C
004655CC    6A 00         push 0
004655CE    6A 00         push 0
004655D0    8D45 F0         lea eax,dword ptr ss:
004655D3    50            push eax
004655D4    8D45 F4         lea eax,dword ptr ss:
004655D7    50            push eax
004655D8    8D45 EC         lea eax,dword ptr ss:
004655DB    50            push eax
004655DC    68 00010000   push 100
004655E1    8D85 ECFEFFFF   lea eax,dword ptr ss:
004655E7    50            push eax
004655E8    68 64574600   push doctotxt.00465764         ; ASCII "c:\"
004655ED    E8 2A12FAFF   call <jmp.&kernel32.GetVolumeInf>
004655F2    8D95 E4FEFFFF   lea edx,dword ptr ss:
004655F8    B8 70574600   mov eax,doctotxt.00465770      ; ASCII "dfe"
004655FD    E8 66F6FFFF   call doctotxt.00464C68
00465602    8D95 E0FEFFFF   lea edx,dword ptr ss:
00465608    B8 7C574600   mov eax,doctotxt.0046577C      ; ASCII "rty"
0046560D    E8 9EF6FFFF   call doctotxt.00464CB0
00465612    8D45 FC         lea eax,dword ptr ss:
00465615    50            push eax
00465616    33C9            xor ecx,ecx
00465618    BA 88574600   mov edx,doctotxt.00465788
0046561D    B8 A0574600   mov eax,doctotxt.004657A0
00465622    E8 9D8DFEFF   call doctotxt.0044E3C4
00465627    8D95 DCFEFFFF   lea edx,dword ptr ss:    //在此下断
0046562D    B8 B0574600   mov eax,doctotxt.004657B0      ; ASCII "8uh"
00465632    E8 C1F6FFFF   call doctotxt.00464CF8
00465637    8D95 D8FEFFFF   lea edx,dword ptr ss:
0046563D    B8 BC574600   mov eax,doctotxt.004657BC      ; ASCII "kd;"
00465642    E8 F9F6FFFF   call doctotxt.00464D40
00465647    8B45 EC         mov eax,dword ptr ss:
0046564A    33D2            xor edx,edx
0046564C    52            push edx
0046564D    50            push eax
0046564E    8D85 D0FEFFFF   lea eax,dword ptr ss:
00465654    E8 B72FFAFF   call doctotxt.00408610
00465659    8B85 D0FEFFFF   mov eax,dword ptr ss:   ; 1094317849送EAX
0046565F    8D95 D4FEFFFF   lea edx,dword ptr ss:
00465665    E8 1EF7FFFF   call doctotxt.00464D88          //跟进
0046566A    8B95 D4FEFFFF   mov edx,dword ptr ss://跳出,此时保存的是真码送EDX
00465670    8B45 FC         mov eax,dword ptr ss: //取假码
00465673    E8 74E8F9FF   call doctotxt.00403EEC//比较CALL
00465678    0F85 A8000000   jnz doctotxt.00465726   //关键比较
0046567E    68 2C010000   push 12C
00465683    E8 4C12FAFF   call <jmp.&kernel32.Sleep>
00465688    B2 01         mov dl,1
0046568A    A1 88AC4400   mov eax,dword ptr ds:
0046568F    E8 F456FEFF   call doctotxt.0044AD88
00465694    8945 F8         mov dword ptr ss:,eax
00465697    33C0            xor eax,eax
00465699    55            push ebp
0046569A    68 1F574600   push doctotxt.0046571F
0046569F    64:FF30         push dword ptr fs:
004656A2    64:8920         mov dword ptr fs:,esp
004656A5    BA 01000080   mov edx,80000001
004656AA    8B45 F8         mov eax,dword ptr ss:
004656AD    E8 7657FEFF   call doctotxt.0044AE28
004656B2    B1 01         mov cl,1
004656B4    BA C8574600   mov edx,doctotxt.004657C8      ; ASCII "\Software\Microsoft\Notepad"
004656B9    8B45 F8         mov eax,dword ptr ss:
004656BC    E8 CB57FEFF   call doctotxt.0044AE8C
004656C1    84C0            test al,al
004656C3    74 3C         je short doctotxt.00465701
004656C5    8D95 CCFEFFFF   lea edx,dword ptr ss:
004656CB    8B45 FC         mov eax,dword ptr ss:
004656CE    E8 F1F4FFFF   call doctotxt.00464BC4
004656D3    8B8D CCFEFFFF   mov ecx,dword ptr ss:
004656D9    BA EC574600   mov edx,doctotxt.004657EC      ; ASCII "enroll"
004656DE    8B45 F8         mov eax,dword ptr ss:
004656E1    E8 4259FEFF   call doctotxt.0044B028
004656E6    B8 FC574600   mov eax,doctotxt.004657FC
004656EB    E8 B889FEFF   call doctotxt.0044E0A8
004656F0    C605 E4384700 0>mov byte ptr ds:,0
004656F7    A1 E0384700   mov eax,dword ptr ds:
004656FC    E8 1311FEFF   call doctotxt.00446814
00465701    33C0            xor eax,eax
00465703    5A            pop edx
00465704    59            pop ecx
00465705    59            pop ecx
00465706    64:8910         mov dword ptr fs:,edx
00465709    68 26574600   push doctotxt.00465726
0046570E    8B45 F8         mov eax,dword ptr ss:
00465711    E8 E256FEFF   call doctotxt.0044ADF8
00465716    8B45 F8         mov eax,dword ptr ss:
00465719    E8 9AD7F9FF   call doctotxt.00402EB8
0046571E    C3            retn
****************************************************************
跟进00465665处CALL来到这里:
00464D88    55            push ebp
00464D89    8BEC            mov ebp,esp
00464D8B    83C4 F4         add esp,-0C
00464D8E    53            push ebx
00464D8F    56            push esi
00464D90    57            push edi
00464D91    33C9            xor ecx,ecx
00464D93    894D F4         mov dword ptr ss:,ecx
00464D96    8955 F8         mov dword ptr ss:,edx
00464D99    8945 FC         mov dword ptr ss:,eax   ; 1094317849送EAX
00464D9C    8B45 FC         mov eax,dword ptr ss:
00464D9F    E8 ECF1F9FF   call doctotxt.00403F90
00464DA4    33C0            xor eax,eax                      ; 清EAX
00464DA6    55            push ebp
00464DA7    68 524E4600   push doctotxt.00464E52
00464DAC    64:FF30         push dword ptr fs:
00464DAF    64:8920         mov dword ptr fs:,esp
00464DB2    C705 D0384700 F>mov dword ptr ds:,0F0
00464DBC    8B3D C8384700   mov edi,dword ptr ds:
00464DC2    033D D8384700   add edi,dword ptr ds:
00464DC8    033D D4384700   add edi,dword ptr ds:
00464DCE    033D CC384700   add edi,dword ptr ds:
00464DD4    033D D0384700   add edi,dword ptr ds:
00464DDA    033D DC384700   add edi,dword ptr ds:
00464DE0    33DB            xor ebx,ebx
00464DE2    8B45 FC         mov eax,dword ptr ss:
00464DE5    E8 F2EFF9FF   call doctotxt.00403DDC         ; 测试1094317849长度
00464DEA    85C0            test eax,eax                     ; EAX保存结果
00464DEC    7E 28         jle short doctotxt.00464E16      ; 小于就跳
00464DEE    BE 01000000   mov esi,1
00464DF3    8B55 FC         mov edx,dword ptr ss:   ; 逐位处理1094317849,开始EBX为0。
00464DF6    8A5432 FF       mov dl,byte ptr ds:
00464DFA    32D3            xor dl,bl                        ; DL和BL异或
00464DFC    81E2 FF000000   and edx,0FF                      ; 清EDX高位
00464E02    8B1495 381C4700 mov edx,dword ptr ds:[edx*4+471C>; 51DE003A送EDX
00464E09    C1EB 08         shr ebx,8                        ; EBX右移8位
00464E0C    23DF            and ebx,edi                      ; EBX和EDI与
00464E0E    33D3            xor edx,ebx                      ; EDX和EBX异或
00464E10    8BDA            mov ebx,edx                      ; EBX保存结果
00464E12    46            inc esi                        ; ESI加一
00464E13    48            dec eax                        ; EAX减一
00464E14^ 75 DD         jnz short doctotxt.00464DF3      ; 没处理完继续,处理完后EBX=54DF37ED
00464E16    8BC3            mov eax,ebx                      ; 结果送EAX
00464E18    33D2            xor edx,edx                      ; 清EDX
00464E1A    52            push edx
00464E1B    50            push eax
00464E1C    8D55 F4         lea edx,dword ptr ss:
00464E1F    B8 08000000   mov eax,8
00464E24    E8 1B38FAFF   call doctotxt.00408644
00464E29    8B45 F4         mov eax,dword ptr ss:   ; 保存54DF37ED
00464E2C    8B55 F8         mov edx,dword ptr ss:
00464E2F    E8 2434FAFF   call doctotxt.00408258
00464E34    33C0            xor eax,eax
00464E36    5A            pop edx
00464E37    59            pop ecx
00464E38    59            pop ecx
00464E39    64:8910         mov dword ptr fs:,edx
00464E3C    68 594E4600   push doctotxt.00464E59
00464E41    8D45 F4         lea eax,dword ptr ss:
00464E44    E8 F7ECF9FF   call doctotxt.00403B40
00464E49    8D45 FC         lea eax,dword ptr ss:
00464E4C    E8 EFECF9FF   call doctotxt.00403B40         ; 将54DF37ED中大写字母转换成小写
00464E51    C3            retn                              //返回




———————————————————————————————————————————

【Crack_总结】:

   这个软件可能是把机器码通过一系列运算成一个固定值,就好象我的是1094317849一样,再通过以上计算成注册码,我的是54df37ed。
   明码比较,没什么可多说的~~~~~~~~~

xbb[DFCG] 发表于 2005-4-17 15:47:31

支持一下。

noTme 发表于 2005-4-17 19:09:16

给你加5分

atgmtd 发表于 2005-10-31 11:07:01

页: [1]
查看完整版本: 破解doctotxt