飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7469|回复: 3

[原创] 破解doctotxt

[复制链接]
  • TA的每日心情
    开心
    2017-4-4 09:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-4-17 12:06:27 | 显示全部楼层 |阅读模式
    日期:2005年4月17日   破解人:yijun[PYG]
    ———————————————————————————————————————————


    【软件名称】: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:[eax],al
    00491BDD    00CF            add bh,cl
    00491BDF    26:084D 1E      or byte ptr es:[ebp+1E],cl
    00491BE3    1C 09           sbb al,9
    00491BE5    0000            add byte ptr ds:[eax],al
    00491BE7    0000            add byte ptr ds:[eax],al
    00491BE9    0000            add byte ptr ds:[eax],al
    00491BEB    0000            add byte ptr ds:[eax],al
    00491BED    003E            add byte ptr ds:[esi],bh
    00491BEF    1C 09           sbb al,9
    00491BF1    002E            add byte ptr ds:[esi],ch
    00491BF3    1C 09           sbb al,9
    00491BF5    0026            add byte ptr ds:[esi],ah
    00491BF7    1C 09           sbb al,9
    00491BF9    0000            add byte ptr ds:[eax],al
    00491BFB    0000            add byte ptr ds:[eax],al
    00491BFD    0000            add byte ptr ds:[eax],al
    00491BFF    0000            add byte ptr ds:[eax],al
    00491C01    004B 1C         add byte ptr ds:[ebx+1C],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:[edi],dwor>
    004910AB    8BCB            mov ecx,ebx
    004910AD    F3:A4           rep movs byte ptr es:[edi],byte >
    004910AF    8BF2            mov esi,edx
    004910B1    8B7C24 28       mov edi,dword ptr ss:[esp+28]
    004910B5    52              push edx
    004910B6    55              push ebp
    004910B7    FC              cld
    004910B8    B2 80           mov dl,80
    004910BA    A4              movs byte ptr es:[edi],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:[eax]
    00470598    64:8920         mov dword ptr fs:[eax],esp
    0047059B    8D55 F0         lea edx,dword ptr ss:[ebp-10]
    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:[eax]
    004655B9    64:8920         mov dword ptr fs:[eax],esp
    004655BC    8D95 E8FEFFFF   lea edx,dword ptr ss:[ebp-118]
    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:[ebp-10]
    004655D3    50              push eax
    004655D4    8D45 F4         lea eax,dword ptr ss:[ebp-C]
    004655D7    50              push eax
    004655D8    8D45 EC         lea eax,dword ptr ss:[ebp-14]
    004655DB    50              push eax
    004655DC    68 00010000     push 100
    004655E1    8D85 ECFEFFFF   lea eax,dword ptr ss:[ebp-114]
    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:[ebp-11C]
    004655F8    B8 70574600     mov eax,doctotxt.00465770        ; ASCII "dfe"
    004655FD    E8 66F6FFFF     call doctotxt.00464C68
    00465602    8D95 E0FEFFFF   lea edx,dword ptr ss:[ebp-120]
    00465608    B8 7C574600     mov eax,doctotxt.0046577C        ; ASCII "rty"
    0046560D    E8 9EF6FFFF     call doctotxt.00464CB0
    00465612    8D45 FC         lea eax,dword ptr ss:[ebp-4]
    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:[ebp-124]    //在此下断
    0046562D    B8 B0574600     mov eax,doctotxt.004657B0        ; ASCII "8uh"
    00465632    E8 C1F6FFFF     call doctotxt.00464CF8
    00465637    8D95 D8FEFFFF   lea edx,dword ptr ss:[ebp-128]
    0046563D    B8 BC574600     mov eax,doctotxt.004657BC        ; ASCII "kd;"
    00465642    E8 F9F6FFFF     call doctotxt.00464D40
    00465647    8B45 EC         mov eax,dword ptr ss:[ebp-14]
    0046564A    33D2            xor edx,edx
    0046564C    52              push edx
    0046564D    50              push eax
    0046564E    8D85 D0FEFFFF   lea eax,dword ptr ss:[ebp-130]
    00465654    E8 B72FFAFF     call doctotxt.00408610
    00465659    8B85 D0FEFFFF   mov eax,dword ptr ss:[ebp-130]   ; 1094317849送EAX
    0046565F    8D95 D4FEFFFF   lea edx,dword ptr ss:[ebp-12C]
    00465665    E8 1EF7FFFF     call doctotxt.00464D88          //跟进
    0046566A    8B95 D4FEFFFF   mov edx,dword ptr ss:[ebp-12C]  //跳出,此时[EBP-12C]保存的是真码送EDX
    00465670    8B45 FC         mov eax,dword ptr ss:[ebp-4] //取假码
    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:[44AC88]
    0046568F    E8 F456FEFF     call doctotxt.0044AD88
    00465694    8945 F8         mov dword ptr ss:[ebp-8],eax
    00465697    33C0            xor eax,eax
    00465699    55              push ebp
    0046569A    68 1F574600     push doctotxt.0046571F
    0046569F    64:FF30         push dword ptr fs:[eax]
    004656A2    64:8920         mov dword ptr fs:[eax],esp
    004656A5    BA 01000080     mov edx,80000001
    004656AA    8B45 F8         mov eax,dword ptr ss:[ebp-8]
    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:[ebp-8]
    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:[ebp-134]
    004656CB    8B45 FC         mov eax,dword ptr ss:[ebp-4]
    004656CE    E8 F1F4FFFF     call doctotxt.00464BC4
    004656D3    8B8D CCFEFFFF   mov ecx,dword ptr ss:[ebp-134]
    004656D9    BA EC574600     mov edx,doctotxt.004657EC        ; ASCII "enroll"
    004656DE    8B45 F8         mov eax,dword ptr ss:[ebp-8]
    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:[4738E4],0
    004656F7    A1 E0384700     mov eax,dword ptr ds:[4738E0]
    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:[eax],edx
    00465709    68 26574600     push doctotxt.00465726
    0046570E    8B45 F8         mov eax,dword ptr ss:[ebp-8]
    00465711    E8 E256FEFF     call doctotxt.0044ADF8
    00465716    8B45 F8         mov eax,dword ptr ss:[ebp-8]
    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:[ebp-C],ecx
    00464D96    8955 F8         mov dword ptr ss:[ebp-8],edx
    00464D99    8945 FC         mov dword ptr ss:[ebp-4],eax     ; 1094317849送EAX
    00464D9C    8B45 FC         mov eax,dword ptr ss:[ebp-4]
    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:[eax]
    00464DAF    64:8920         mov dword ptr fs:[eax],esp
    00464DB2    C705 D0384700 F>mov dword ptr ds:[4738D0],0F0
    00464DBC    8B3D C8384700   mov edi,dword ptr ds:[4738C8]
    00464DC2    033D D8384700   add edi,dword ptr ds:[4738D8]
    00464DC8    033D D4384700   add edi,dword ptr ds:[4738D4]
    00464DCE    033D CC384700   add edi,dword ptr ds:[4738CC]
    00464DD4    033D D0384700   add edi,dword ptr ds:[4738D0]
    00464DDA    033D DC384700   add edi,dword ptr ds:[4738DC]
    00464DE0    33DB            xor ebx,ebx
    00464DE2    8B45 FC         mov eax,dword ptr ss:[ebp-4]
    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:[ebp-4]     ; 逐位处理1094317849,开始EBX为0。
    00464DF6    8A5432 FF       mov dl,byte ptr ds:[edx+esi-1]
    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:[ebp-C]
    00464E1F    B8 08000000     mov eax,8
    00464E24    E8 1B38FAFF     call doctotxt.00408644
    00464E29    8B45 F4         mov eax,dword ptr ss:[ebp-C]     ; [ebp-c]保存54DF37ED
    00464E2C    8B55 F8         mov edx,dword ptr ss:[ebp-8]
    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:[eax],edx
    00464E3C    68 594E4600     push doctotxt.00464E59
    00464E41    8D45 F4         lea eax,dword ptr ss:[ebp-C]
    00464E44    E8 F7ECF9FF     call doctotxt.00403B40
    00464E49    8D45 FC         lea eax,dword ptr ss:[ebp-4]
    00464E4C    E8 EFECF9FF     call doctotxt.00403B40           ; 将54DF37ED中大写字母转换成小写
    00464E51    C3              retn                              //返回




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

    【Crack_总结】:

       这个软件可能是把机器码通过一系列运算成一个固定值,就好象我的是1094317849一样,再通过以上计算成注册码,我的是54df37ed。
       明码比较,没什么可多说的~~~~~~~~~
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-10-16 20:38
  • 签到天数: 1491 天

    [LV.10]以坛为家III

    发表于 2005-4-17 15:47:31 | 显示全部楼层
    支持一下。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-4-17 19:09:16 | 显示全部楼层
    给你加5分
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-31 11:07:01 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表