飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8918|回复: 12

[原创] 用软件本身做注册机--破解图像缩放大师1.0笔记

[复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-2-22 14:15:03 | 显示全部楼层 |阅读模式
    【破文标题】用软件本身做注册机--图像缩放大师1.0破解笔记
    【破文作者】zaas[PYG][FCT]
    【破解工具】OllyICE,PEiD v0.94
    【破解平台】WinXP
    【软件名称】图像缩放大师 1.0
    【更新时间】2010-2-21
    【软件类别】国产软件/图片压缩
    【软件语言】简体中文
    【应用平台】WinXP/2000/2003/Vista
    【软件性质】共享(收费)软件
    【软件大小】312KB
    【原版下载】http://www.onlinedown.net/soft/99782.htm
    【保护方式】注册码
    【软件简介】图像缩放大师是一款专业的,支持批量修改图片大小软件,支持多种图片格式,如JPG, PNG, GIF, BMP, TIFF等;并且可以自由设置修改后的宽度、高度、是否保留纵横比等; 支持图片格式转换;操作简单,转换速度极快。
    功能列表
    1. 支持多种图片格式:JPG, PNG, GIF, BMP, TIFF
    2. 不需要另外安装 .net 环境,支持在Win2000/XP/2003 下直接运行
    3. 支持保留 EXIF 图像信息
    4. 支持批量操作
    5. 自定义文件输出尺寸大小:按比例、自定尺寸等等

    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------
    【破解内容】
    --------------------------------------------------------------
    **************************************************************
    用PEiD查壳,Microsoft Visual C++ 7.0 [Debug]易的吧。。。
    **************************************************************
    输入错误的注册码,有字符串提示,直接找到关键call。
    本来是打算研究下算法,看看能不能写注册机的,可没想到算法部分不难但是臭长,懒得分析了。本打算放弃的。转念一想,索性拿来练习下SMC。。。

    输入序列号和假码,来到注册验证部分。
    1. 00406594   .  C68424 600300>mov     byte ptr [esp+360], 1
    2. 0040659C   .  E8 86070200   call    00426D27                         ;  序列号
    3. 004065A1   .  8D4C24 08     lea     ecx, dword ptr [esp+8]
    4. 004065A5   .  51            push    ecx
    5. 004065A6   .  8D8E C0000000 lea     ecx, dword ptr [esi+C0]
    6. 004065AC   .  E8 76070200   call    00426D27                         ;  假码
    7. 004065B1   .  8B4424 08     mov     eax, dword ptr [esp+8]
    8. 004065B5   .  51            push    ecx
    9. 004065B6   .  83C0 F0       add     eax, -10
    10. 004065B9   .  896424 14     mov     dword ptr [esp+14], esp
    11. 004065BD   .  8BFC          mov     edi, esp
    12. 004065BF   .  50            push    eax
    13. 004065C0   .  E8 9BB7FFFF   call    00401D60
    14. 004065C5   .  83C0 10       add     eax, 10
    15. 004065C8   .  8907          mov     dword ptr [edi], eax
    16. 004065CA   .  8B4424 14     mov     eax, dword ptr [esp+14]
    17. 004065CE   .  83C0 F0       add     eax, -10
    18. 004065D1   .  896424 1C     mov     dword ptr [esp+1C], esp
    19. 004065D5   .  8BFC          mov     edi, esp
    20. 004065D7   .  50            push    eax
    21. 004065D8   .  C68424 680300>mov     byte ptr [esp+368], 2
    22. 004065E0   .  E8 7BB7FFFF   call    00401D60
    23. 004065E5   .  83C0 10       add     eax, 10
    24. 004065E8   .  83C4 04       add     esp, 4
    25. 004065EB   .  8BCE          mov     ecx, esi
    26. 004065ED   .  8907          mov     dword ptr [edi], eax
    27. 004065EF   .  C68424 640300>mov     byte ptr [esp+364], 1
    28. 004065F7   .  E8 44FDFFFF   call    00406340                         ;  关键call
    29. 004065FC   .  85C0          test    eax, eax
    30. 004065FE   .  75 34         jnz     short 00406634
    31. 00406600   .  6A 40         push    40
    32. 00406602   .  68 5C314300   push    0043315C                         ;  errormessage!
    33. 00406607   .  68 40314300   push    00433140                         ;  invalidate license info!
    复制代码
    跟进关键call,明白了注册码是根据序列号通过一系列附加字符串MD5得来的,可惜最后出现明码。具体过程不再多说。直接来到比较call附近:
    1. 00406490   .  FF52 04       call    dword ptr [edx+4]
    2. 00406493   >  8B7424 28     mov     esi, dword ptr [esp+28]          ;  假码
    3. 00406497   .  8B4424 0C     mov     eax, dword ptr [esp+C]           ;  真码
    4. 0040649B   ?  56            push    esi
    5. 0040649C      50            push    eax
    6. 0040649D      E8 39F40000   call    004158DB                         ;  比较call
    复制代码
    软件在判断注册成功会会把注册码序列号写入注册表的software\flyingstudio\imageresizer:
    1. 00406645   .  68 D0304300   push    004330D0                         ;  software\flyingstudio\imageresizer
    2. 0040664A   .  68 01000080   push    80000001
    3. 0040664F   .  8D8C24 380300>lea     ecx, dword ptr [esp+338]
    4. 00406656   .  C68424 680300>mov     byte ptr [esp+368], 3
    5. 0040665E   .  E8 AD2B0000   call    00409210
    6. 00406663   .  8B4424 0C     mov     eax, dword ptr [esp+C]
    7. 00406667   .  50            push    eax
    8. 00406668   .  68 C0304300   push    004330C0                         ;  license name
    9. 0040666D   .  8D8C24 340300>lea     ecx, dword ptr [esp+334]
    10. 00406674   .  E8 C72A0000   call    00409140
    11. 00406679   .  8B4C24 08     mov     ecx, dword ptr [esp+8]
    12. 0040667D   .  51            push    ecx
    13. 0040667E   .  68 B0304300   push    004330B0                         ;  license code
    14. 00406683   .  8D8C24 340300>lea     ecx, dword ptr [esp+334]
    15. 0040668A   .  E8 B12A0000   call    00409140
    16. 0040668F   .  8D8C24 2C0300>lea     ecx, dword ptr [esp+32C]
    17. 00406696   .  E8 852A0000   call    00409120
    18. 0040669B   .  6A 40         push    40
    19. 0040669D   .  68 30314300   push    00433130                         ;  congratulation!
    20. 004066A2   .  68 F4304300   push    004330F4                         ;  registration success!\n\nthank you for register our software!
    复制代码
    既然有明码,嘿嘿。。。让我们输入假码后把真码写入注册表吧~~~这样,下次不用破解版也可以直接使用了哈。。。再说这个软件这么小,完全可以当一个KeyGen来用了,hohohoho。。。
    找到一段空白00431b00,让它在比较之前跳过来,用真码替换掉假码
    1. 00406490  |.  FF52 04       call    dword ptr [edx+4]
    2. 00406493  |>  8B7424 28     mov     esi, dword ptr [esp+28]
    3. 00406497  |.  E9 64B60200   jmp     00431B00                         ;  跳到我想去的地方
    4. 0040649C  |.  50            push    eax
    5. 0040649D  |.  E8 39F40000   call    004158DB
    复制代码
    嘿,用一段简短的汇编代码。。。。替换吧~~

    1. 00431B00   > \8B4424 0C     mov     eax, dword ptr [esp+C]           ;  刚刚覆盖掉的地方
    2. 00431B04   .  50            push    eax                              ;  保存现场
    3. 00431B05   .  56            push    esi
    4. 00431B06   .  51            push    ecx
    5. 00431B07   >  66:0FB608     movzx   cx, byte ptr [eax]               ;  取真码字符
    6. 00431B0B   .  40            inc     eax
    7. 00431B0C   .  880E          mov     byte ptr [esi], cl               ;  替换假码
    8. 00431B0E   .  46            inc     esi
    9. 00431B0F   .  84C9          test    cl, cl
    10. 00431B11   .^ 75 F4         jnz     short 00431B07                   ;  全部换完结束
    11. 00431B13   .  59            pop     ecx
    12. 00431B14   .  5E            pop     esi
    13. 00431B15   .  58            pop     eax                              ;  回复现场
    14. 00431B16   .  56            push    esi                              ;  刚刚覆盖掉的地方
    复制代码
    替换完了则是真码和真码比较,当然注册成功了~~~~
    软件很乖的把真码写进注册表了,看看去吧
    [HKEY_CURRENT_USER\Software\FlyingStudio\ImageResizer]
    "License Name"="zaas[PYG][FCT]"
    "License Code"="312D8294DA7055AD3D6D6879D3B6B9F4ADD084A2EED273B92E63EB8F20F67107768CAA1A73A529599E249821D5634D754C3C83F851E8C5182D4C7224"
    删掉这些又可以用别的序列号注册了,就象注册机一样。。。
    输入假码的时候需多输入点,否则会因为开辟的内存空间不足产生一些问题。。。
    【破解总结】
    破解极度简单,属于秒杀型。SMC一下练练手兼练习下汇编。。。
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    [ 本帖最后由 zaas 于 2010-2-22 14:20 编辑 ]

    评分

    参与人数 1飘云币 +40 收起 理由
    月之精灵 + 40 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-2-22 16:55:50 | 显示全部楼层
    进来偷偷学习下(现在没人哈/:018 )
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-2-22 18:42:40 | 显示全部楼层
    z牛好精力啊。。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2010-2-22 18:59:33 | 显示全部楼层
    注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-2-22 19:02:04 | 显示全部楼层
    学习了,谢谢楼主分享
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-2-22 19:27:42 | 显示全部楼层
    原帖由 tianxj 于 2010-2-22 18:59 发表
    注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")

    T大火眼金睛哈。。。
    我看到里边有
    0040B1BF   .  C74424 38 012>mov     dword ptr [esp+38], 67452301     ; |
    0040B1C7   .  C74424 3C 89A>mov     dword ptr [esp+3C], EFCDAB89     ; |
    0040B1CF   .  C74424 40 FED>mov     dword ptr [esp+40], 98BADCFE     ; |
    0040B1D7   .  C74424 44 765>mov     dword ptr [esp+44], 10325476     ; |
    就没去想别的,呵呵。。
    不过这个软件的加密没T大说的那么简单,SHA1每次的结果加上固定字符串,如是三次,而且固定字符串还有大小写的变化哦。。

    [ 本帖最后由 zaas 于 2010-2-22 19:30 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-2-22 19:53:21 | 显示全部楼层
    根据T大的提示,该软件的算法描述如下(VB):
        A = sha1(Text1.Text & "yafzVFCr4PxLI9MX8Hbv")
        B = sha1(A & "XNtKZV5Tqci0WYO8dmS9")
        Text2.Text = A & B & sha1(A & B & "MNJXx4ZYgGLtPmpS0k27")
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2010-2-22 20:23:34 | 显示全部楼层
    原帖由 tianxj 于 2010-2-22 18:59 发表
    注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")

    你太厉害了,这么快就把算法搞出来了。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-20 15:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-3-14 18:26:29 | 显示全部楼层
    学习一下,呵呵。。。感谢分享!谢谢了!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-10 18:38
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    发表于 2011-2-6 15:12:41 | 显示全部楼层
    00406490   .  FF52 04       call    dword ptr [edx+4]

    00406493   >  8B7424 28     mov     esi, dword ptr [esp+28]          ;  假码

    00406497   .  8B4424 0C     mov     eax, dword ptr [esp+C]           ;  真码

    0040649B   ?  56            push    esi

    0040649C      50            push    eax

    0040649D      E8 39F40000   call    004158DB                         ;  比较call
    改一行不知道行不行
    0040649B   ?  56            push    esi

    push esi, dword ptr [esp+C]
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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