飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8257|回复: 17

猫脱 PECompact 2.x -> Jeremy Collake

[复制链接]
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-5-8 00:49:15 | 显示全部楼层 |阅读模式
    猫脱 PECompact 2.x -> Jeremy Collake

    软件名称:灵点条码打印系统
    语言种类: 简体中文
    版 本 号: V2.0
    文件大小: 909 K
    发布日期: 2006.03.22
    软件类型: 共享
    脱壳文章作者:野猫III[D.4s]
    演示动画:https://www.chinapyg.com/viewthr ... a=page%3D1#pid25362

    下载地址:http://download.enet.com.cn/html/030812006032201.html
    新版下载:http://down.itbbs.com/Software/View-Software-5672.html <---下载了好像也是2.0版!
    软件简介:
    通用的条码打印系统,配置灵活支持20多种国际标准,无须专用打印机和条码纸,在Windows系统下安装即可使用,打印提供多种选项,可以选择打印条码汉字标题,条形码编码,位置可以任意确定,条码制作所见所得,提供实时预览功能,无需在打印机上反复调试,对纸张无特殊要求,从信封,卡片,证照到不干胶标签,专用条码纸都可以准确打印,输入可以批量制作,个别输入或文本文件导入,输出提供批量,选范围和个别打印的功能,完全能够适合各种行业的特殊要求。

    脱壳过程:

    一、用 PEiD查出是PECompact 2.x -> Jeremy Collake壳。

    二、用OD载入,忽略所有异常,然后重新载入程序。载入后,代码停在这里:

    00401000 > $ B8 681B6300 MOV EAX,JYtmw.00631B68
    00401005 . 50 PUSH EAX
    00401006 . 64:FF35 00000>PUSH DWORD PTR FS:[0]
    //F8单步来到这里,看寄存器。ESP红了。


    ++++++++++++++++++++++++
    EAX 00631B68 JYtmw.00631B68
    ECX 0012FFB0
    EDX 7C92EB94 ntdll.KiFastSystemCallRet
    EBX 7FFDF000
    ESP 0012FFC0 。。。。。。。ESP红了!我们接着下断这个硬件断点。
    EBP 0012FFF0
    ESI FFFFFFFF
    EDI 7C930738 ntdll.7C930738
    EIP 00401006 JYtmw.00401006
    C 0 ES 0023 32位 0(FFFFFFFF)
    P 1 CS 001B 32位 0(FFFFFFFF)
    A 0 SS 0023 32位 0(FFFFFFFF)
    Z 1 DS 0023 32位 0(FFFFFFFF)
    S 0 FS 003B 32位 7FFDE000(FFF)
    T 0 GS 0000 NULL
    D 0
    O 0 LastErr ERROR_CLASS_ALREADY_EXISTS (00000582)
    EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
    ST0 empty -UNORM D1D8 01050104 00000000
    ST1 empty 0.0
    ST2 empty 0.0
    ST3 empty 0.0
    ST4 empty 0.0
    ST5 empty 0.0
    ST6 empty 1.0000000000000000000
    ST7 empty 1.0000000000000000000
    3 2 1 0 E S P U O Z D I
    FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
    FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
    +++++++++++++++++++++++++++++
    在OD命令栏输入dd 12FFC0,Enter键之后,我们在数据窗口中看到:
    0012FFC0 00631B68 JYtmw.00631B68 。。。右键--断点---硬件断点--双字

    0012FFC4 7C816D4F 返回到 kernel32.7C816D4F
    0012FFC8 7C930738 ntdll.7C930738
    ====================然后点OD的运得按钮。来到:
    7C957826 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8]
    7C957829 72 09 JB SHORT ntdll.7C957834
    7C95782B 3B45 F4 CMP EAX,DWORD PTR SS:[EBP-C]
    7C95782E ^ 0F82 F731FFFF JB ntdll.7C94AA2B
    7C957834 50 PUSH EAX
    7C957835 E8 67000000 CALL ntdll.7C9578A1
    7C95783A 84C0 TEST AL,AL
    7C95783C ^ 0F84 E931FFFF JE ntdll.7C94AA2B
    7C957842 F605 5AC3997C 8>TEST BYTE PTR DS:[7C99C35A],80
    7C957849 0F85 20720100 JNZ ntdll.7C96EA6F
    。。F8到这里的时候,跳转不实现。右键--->跟随

    +++++++++++++++++++++++++++++++++
    7C96EA6F 6A 10 PUSH 10
    7C96EA71 53 PUSH EBX
    7C96EA72 6A 00 PUSH 0
    7C96EA74 FF75 0C PUSH DWORD PTR SS:[EBP+C]
    7C96EA77 56 PUSH ESI
    7C96EA78 E8 136B0100 CALL ntdll.7C985590
    7C96EA7D 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
    7C96EA80 ^ E9 CA8DFEFF JMP ntdll.7C95784F
    7C96EA85 57 PUSH EDI 。。。右键-->断点-->运行到所选!
    7C96EA86 FF75 F0 PUSH DWORD PTR SS:[EBP-10]
    +++++++++++++++++++++++++++
    7C957852 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
    7C957855 50 PUSH EAX
    7C957856 FF75 0C PUSH DWORD PTR SS:[EBP+C]
    7C957859 53 PUSH EBX
    7C95785A 56 PUSH ESI
    7C95785B E8 F3BEFCFF CALL ntdll.7C923753
    7C957860 F605 5AC3997C 8>TEST BYTE PTR DS:[7C99C35A],80
    7C957867 8BF8 MOV EDI,EAX
    7C957869 0F85 16720100 JNZ ntdll.7C96EA85
    7C95786F 395D 08 CMP DWORD PTR SS:[EBP+8],EBX
    7C957872 0F84 1B720100 JE ntdll.7C96EA93
    7C957878 8BC7 MOV EAX,EDI
    7C95787A 33C9 XOR ECX,ECX
    7C95787C 2BC1 SUB EAX,ECX
    7C95787E ^ 0F85 8631FFFF JNZ ntdll.7C94AA0A
    7C957884 F646 04 01 TEST BYTE PTR DS:[ESI+4],1
    7C957888 0F85 4F720100 JNZ ntdll.7C96EADD
    7C95788E C645 FF 01 MOV BYTE PTR SS:[EBP-1],1
    7C957892 5F POP EDI
    7C957893 5B POP EBX
    7C957894 8A45 FF MOV AL,BYTE PTR SS:[EBP-1]
    7C957897 5E POP ESI
    7C957898 C9 LEAVE
    7C957899 C2 0800 RETN 8 .............单步来到这里。再单步跳进。一直单步来到下面。
    ++++++++++++++++++++++
    00631B9B 53 PUSH EBX
    00631B9C 51 PUSH ECX
    00631B9D 57 PUSH EDI
    00631B9E 56 PUSH ESI
    00631B9F 52 PUSH EDX
    00631BA0 8D98 57120010 LEA EBX,DWORD PTR DS:[EAX+10001257] 。。。F8到这时,观察ESP.
    00631BA6 8B53 18 MOV EDX,DWORD PTR DS:[EBX+18]
    ++++++++++++++++++++++++
    EAX F06308ED
    ECX 0012FFB0
    EDX 7C92EB94 ntdll.KiFastSystemCallRet
    EBX 7FFD9000
    ESP 0012FFAC ........ESP红了,下命令点断: dd 12ffac
    EBP 0012FFF0
    ESI FFFFFFFF
    EDI 7C930738 ntdll.7C930738
    EIP 00631BA0 JYtmw.00631BA0
    C 0 ES 0023 32位 0(FFFFFFFF)
    P 0 CS 001B 32位 0(FFFFFFFF)
    A 0 SS 0023 32位 0(FFFFFFFF)
    Z 0 DS 0023 32位 0(FFFFFFFF)
    S 0 FS 003B 32位 7FFDF000(FFF)
    T 0 GS 0000 NULL
    D 0
    O 0 LastErr ERROR_CLASS_ALREADY_EXISTS (00000582)
    EFL 00000202 (NO,NB,NE,A,NS,PO,GE,G)
    ST0 empty -UNORM BBB0 01050104 00000000
    ST1 empty 0.0
    ST2 empty 0.0
    ST3 empty 0.0
    ST4 empty 0.0
    ST5 empty 0.0
    ST6 empty 1.0000000000000000000
    ST7 empty 1.0000000000000000000
    3 2 1 0 E S P U O Z D I
    FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
    FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
    ++++++++++++++++++++++++++++++++++++++++++++++++++++
    在OD中下命令断点: dd 12ffac , Enter键之后,我们在数据跟随窗口中看到:
    0012FFAC 7C92EB94 ntdll.KiFastSystemCallRet 。。。右键--断点-硬件访问--双字。


    0012FFB0 FFFFFFFF
    0012FFB4 7C930738 ntdll.7C930738
    +++++++++++点OD的运行按钮程序被断在这里:

    00631C25 5E POP ESI ; JYtmw.005839E0
    00631C26 5F POP EDI
    00631C27 59 POP ECX
    00631C28 5B POP EBX
    00631C29 5D POP EBP
    00631C2A FFE0 JMP EAX 。。。F8单步来这。再F8进去看到光明!
    00631C2C E0 39 LOOPDNE SHORT JYtmw.00631C67

    +++++++++++++++++++++++++++++++++
    005839E0 55 DB 55 ; CHAR 'U'
    。。。。。右键---分析--从模块中删除分析

    005839E1 8B DB 8B
    005839E2 EC DB EC
    005839E3 83 DB 83
    005839E4 C4 DB C4
    005839E5 F0 DB F0
    005839E6 B8 DB B8
    005839E7 40 DB 40 ; CHAR '@'
    005839E8 16 DB 16
    +++++++++++++++++++
    005839E0 55 PUSH EBP 。。。。。。。。很熟悉吧!右键--用Ollydump脱壳--保存。
    005839E1 8BEC MOV EBP,ESP
    005839E3 83C4 F0 ADD ESP,-10
    005839E6 B8 40165800 MOV EAX,JYtmw.00581640
    005839EB E8 A43DE8FF CALL JYtmw.00407794
    005839F0 68 783A5800 PUSH JYtmw.00583A78
    005839F5 68 8C3A5800 PUSH JYtmw.00583A8C ; ASCII "TApplication"
    005839FA E8 5547E8FF CALL JYtmw.00408154 ; JMP 到 USER32.FindWindowA
    ++++++++++++++++
    1839E0

    试运行脱壳后的程序,正常!查壳得:Borland Delphi 6.0 - 7.0

    至此,脱壳完成!谢谢观看。

    本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    [ 本帖最后由 野猫III 于 2006-5-10 16:48 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-8 10:30:52 | 显示全部楼层
    支持猫```

    明白原理熟悉操作后 ESP定律可以直接命令行 HR ESP ,方便点

    这个壳可以在命令行 HR ESP 回车,F9运行几次后看到

    00631C2A   - FFE0                       jmp eax      //再F8单步可以直接JMP到OEP
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-5-8 21:28:25 | 显示全部楼层
    原帖由 风球 于 2006-5-8 10:30 发表
    支持猫```

    明白原理熟悉操作后 ESP定律可以直接命令行 HR ESP ,方便点

    这个壳可以在命令行 HR ESP 回车,F9运行几次后看到

    00631C2A   - FFE0                       jmp eax      //再F8单步可以直接JMP ...


    太感谢风球兄啦!

    老大的方法:

    下断点:bp VirtualFree  F9运行
    https://www.chinapyg.com/viewthr ... highlight=PECompact

    [ 本帖最后由 野猫III 于 2006-5-27 14:17 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-8 21:43:16 | 显示全部楼层
    看了一下,怀疑这个软件的算法可能有点问题,不知是作者故意的还是失误?还是我分析有误???我分析是的2.1的

    004BEB7D     E8 2268F4FF                call 55_.004053A4
    004BEB82     3BF0                       cmp esi,eax                         ; 第五位跟长度比较
    004BEB84     74 15                      je short 55_.004BEB9B        //长度大于16的话根本不可能相等
    004BEB86     8B45 FC                    mov eax,dword ptr ss:[ebp-4]
    004BEB89     E8 1668F4FF                call 55_.004053A4
    004BEB8E     83F8 10                    cmp eax,10          //跟16比较
    004BEB91     7D 08                      jge short 55_.004BEB9B              ; 这里应该是JGE才对呀???


    改为JGE后算法就通了,我的注册机得到的注册码就正常了!!!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-5-8 23:57:49 | 显示全部楼层
    原帖由 风球 于 2006-5-8 21:43 发表
    看了一下,怀疑这个软件的算法可能有点问题,不知是作者故意的还是失误?还是我分析有误???我分析是的2.1的



    改为JGE后算法就通了,我的注册机得到的注册码就正常了!!!


    太棒啦,风球兄请添加多个条码试试!

    [ 本帖最后由 野猫III 于 2006-5-9 00:15 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 11:31:45 | 显示全部楼层
    应该添加多少都没问题吧```30

    放在https://www.chinapyg.com/viewthr ... a=page%3D1#pid25501,没完全测试,猫可帮忙测试一下```呵```

    [ 本帖最后由 风球 于 2006-5-9 12:25 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-5-9 20:35:49 | 显示全部楼层
    原帖由 风球 于 2006-5-9 11:31 发表
    应该添加多少都没问题吧```30

    放在https://www.chinapyg.com/viewthr ... a=page%3D1#pid25501,没完全测试,猫可帮忙测试一下```呵```


    呵呵。。。猫来支持兄弟的啦!

    最后的一站!如果风球兄做个演示或写出它的破文更好!

    因为这个软件相对比较特殊,都要改一个JUMP才能跳出注册码的。


    呵呵。。。老大给本帖加精也,谢谢!

    [ 本帖最后由 野猫III 于 2006-5-9 20:39 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 22:01:32 | 显示全部楼层
    原帖由 野猫III 于 2006-5-9 20:35 发表


    呵呵。。。猫来支持兄弟的啦!

    最后的一站!如果风球兄做个演示或写出它的破文更好!

    因为这个软件相对比较特殊,都要改一个JUMP才能跳出注册码的。

    呵呵。。。老大给本帖加精也,谢谢!


    呵```我也想贴出分析代码的,只但由于这个代码太长了,贴出来也不好作说明,不好写的说,只能说一下大概的算法相当于是逐位比较的类型,长度12位,先比较 偶数位的与当前日期有关有一个异或运算,再比较 奇数位与机器码有关简单的运算。只是怀疑原程序算法机制有个问题,就是上面说的那个问题
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-22 20:08
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2006-5-9 22:39:27 | 显示全部楼层
    原帖由 风球 于 2006-5-9 22:01 发表


    呵```我也想贴出分析代码的,只但由于这个代码太长了,贴出来也不好作说明,不好写的说,只能说一下大概的算法相当于是逐位比较的类型,长度12位,先比较 偶数位的与当前日期有关有一个异或运算,再比较 奇数 ...

    风球=正解。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-22 20:08
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2006-5-9 22:40:51 | 显示全部楼层
    鼓励野猫III 原创。进步快!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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