飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4123|回复: 6

[原创] PanoramaStudio v2.1.2 Pro 爆破

[复制链接]
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

    发表于 2014-6-25 04:37:32 | 显示全部楼层 |阅读模式
    本帖最后由 geekcat 于 2014-6-25 04:46 编辑

    【文章标题】:  PanoramaStudio v2.1.2 Pro   爆破
    【文章作者】: geekcat
    【作者邮箱】: geek_huang@163.com
    【作者主页】:
    【软件名称】: PanoramaStudio v2.1.2 Pro
    【软件大小】: 5.23 MB (5,491,009 字节)
    【加壳方式】: 无
    【保护方式】: 注册码
    【编写语言】: Borland C++ 1999
    【使用工具】: OD、PEID、DEDE、PE Explorer
    【操作平台】: XP SP3
    破解声明】:破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:PanoramaStudio 能制作无缝的360度全景图片,在几个步骤之内就能将简单的图片合成为完美的全景图,并为高级用户提供了强大的图片处理功能
    【破解声明】:PYG第九轮作业3
    --------------------------------------------------------------------------------------------------------------------------------
    【破解过程】

    思路:1)程序运行出现模态对话框,想去掉这个NAG框来达到破解,由于水平太差没成功;2)查找字符串来切入验证体系,没找到有用信息;3)API函数下断,能断下太返回太多前后花了差多1个半小时还没找到放弃;4)没办法最后只能用工具DEDE来直接找按钮事件。

    1、DEDE载入程序,在注册窗体里找到三个按钮事件;用PPE Explorer查找具体是那个按钮,翻了一会还是没找到,OD载入程序F9跑起来输入注册信息果断三个全下断,点击“OK”断到按钮事件上;
    代码:

    0046E42C  /.  55            push ebp                                 ;  按钮事件
    0046E42D  |.  8BEC          mov ebp,esp
    0046E42F  |.  83C4 8C       add esp,-0x74
    0046E432  |.  53            push ebx
    0046E433  |.  56            push esi
    0046E434  |.  57            push edi
    ………………………………………………………………………………………………………省略去中间N多代码
    0046E605  |> \50            push eax
    0046E606  |.  8B15 9C284D00 mov edx,dword ptr ds:[0x4D289C]          ;  Panorama.004D2614
    0046E60C      FF52 68       call dword ptr ds:[edx+0x68]             ;  关键CALL
    0046E60F  |.  83C4 08       add esp,0x8
    0046E612  |.  BA 02000000   mov edx,0x2
    0046E617  |.  50            push eax
    0046E618  |.  8D45 E8       lea eax,dword ptr ss:[ebp-0x18]
    0046E61B  |.  FF4D B8       dec dword ptr ss:[ebp-0x48]
    0046E61E  |.  E8 15CA0300   call Panorama.004AB038
    0046E623  |.  FF4D B8       dec dword ptr ss:[ebp-0x48]
    0046E626  |.  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
    0046E629  |.  BA 02000000   mov edx,0x2
    0046E62E  |.  E8 05CA0300   call Panorama.004AB038
    0046E633  |.  59            pop ecx
    0046E634  |.  85C9          test ecx,ecx
    0046E636  |.  0F84 BC010000 je Panorama.0046E7F8                     ;  关键跳 跳就注册失败
    0046E63C  |.  66:C745 AC 50>mov word ptr ss:[ebp-0x54],0x50
    ………………………………………………………………………………………………………省略去中间N多代码
    0046E803  |.  83F8 02       cmp eax,0x2
    0046E806  |.  7E 0D         jle short Panorama.0046E815
    0046E808  |.  8B15 BC644D00 mov edx,dword ptr ds:[<&VCL50.@Forms@App>;  Vcl50.@Forms@Application
    0046E80E  |.  8B02          mov eax,dword ptr ds:[edx]
    0046E810  |.  E8 A5D90300   call <jmp.&VCL50.@Forms@TApplication@Ter>;  注册时点OK后有很大的缓冲
    0046E815  |>  68 D0070000   push 0x7D0                               ; /Timeout = 2000. ms
    0046E81A  |.  E8 69E70300   call <jmp.&KERNEL32.Sleep>               ; \Sleep
    0046E81F  |.  68 18DB0000   push 0xDB18
    0046E824  |.  E8 7FE60300   call <jmp.&PALNG._LoadRStr>                         ;  出现 注册信息错误
    0046E829  |.  59            pop ecx
    0046E82A  |.  8BD8          mov ebx,eax

    2、按钮事件里CALL很多,一个一个具体分析的话容易出错把头转晕而且花时间也多,今天听了Nisy大大的第八课,正好听到 “如果一个CALL调用地方太多一般不是关键CALL” 按照这个方法以及要跳过下面的注册出错误这两个原则,找到关键CALL及关键跳转,F7进关键CALL;
    代码:

    1004442F      CC            int3
    10044430   .  8B4424 04     mov eax,dword ptr ss:[esp+0x4]
    10044434   .  57            push edi
    10044435   .  8B7C24 0C     mov edi,dword ptr ss:[esp+0xC]
    10044439   .  50            push eax
    1004443A   .  E8 41FDFBFF   call ppano.10004180                         ;F7进:看到这段代码没有对eax赋值等操作
    1004443F   .  83C4 04       add esp,0x4
    10044442   .  5F            pop edi
    10044443   .  C3            retn

    3、F7进上面1004443A   .  E8 41FDFBFF   call ppano.10004180
    代码:
    ………………………………………………………………………………………………………省略去上面N多代码
    100041D8  |.^\75 FA         \jnz short ppano.100041D4
    100041DA  |>  E8 61280500   call ppano.10056A40                      ;  F7进去可以找到另一个爆破点
    100041DF  |.  84C0          test al,al
    100041E1  |.  74 1A         je short ppano.100041FD
    100041E3  |.  803D DEAD1510>cmp byte ptr ds:[0x1015ADDE],0xE7
    100041EA  |.  75 11         jnz short ppano.100041FD
    100041EC  |.  803D DDAD1510>cmp byte ptr ds:[0x1015ADDD],0xF6
    100041F3  |.  75 08         jnz short ppano.100041FD
    100041F5  |.  B8 01000000   mov eax,0x1
    100041FA  |.  5E            pop esi
    100041FB  |.  5B            pop ebx
    100041FC  |.  C3            retn
    100041FD  |>  5E            pop esi
    100041FE  |.  33C0          xor eax,eax                              ;  爆破点:or eax,eax或mov al,1
    10004200  |.  5B            pop ebx
    10004201  \.  C3            retn

    4、F7进上面100041DA  |>  E8 61280500   call ppano.10056A40
    代码:

    10056D5A  |.  E8 41020000   call ppano.10056FA0
    10056D5F  |.  8B8C24 DC0400>mov ecx,dword ptr ss:[esp+0x4DC]
    10056D66  |.  8A4424 13     mov al,byte ptr ss:[esp+0x13]                  ;  爆破点:mov al,1或把esp+0x13修改为esp-/+上一个数值,使它所在内存中的值不为零
    10056D6A  |.  5F            pop edi
    10056D6B  |.  5E            pop esi
    10056D6C  |.  64:890D 00000>mov dword ptr fs:[0],ecx
    10056D73  |.  5B            pop ebx
    10056D74  |.  8BE5          mov esp,ebp
    10056D76  |.  5D            pop ebp
    10056D77  \.  C3            retn

    ----------------------------------------------------------------------------------------------------------------------------
    【破解总结】:
    1、关键字符串查找不到,这点做好;
    2、API函数能断下但返回点找不位,使分析者花很多精力而放弃;
    3、只修改关键跳转还是注册失败,有二次验证但在关键CALL里没找到这个二次验证调用的地方;
    4、这个二次验证调用的地方应该在关键CALL与上面第3步中第一个爆破点之间(如果在这个爆破点之后调用来实现二次验证,那这个地方爆破就会失败);
    5、这个软件再高版本就换C++写的,没有搞定。
    6、想用DUP2来做DLL的补丁(今天N大的第八介绍了DUP怎样做exe文件补丁),最终没折腾出这个用这个DLL的补丁,到N大说了怎样做DLL再回来补做一个;
    ----------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于geekcat,转载请注明作者并保存文章的完整!

    评分

    参与人数 1威望 +4 飘云币 +4 收起 理由
    Dxer + 4 + 4 赞一个!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-2-11 20:08
  • 签到天数: 774 天

    [LV.10]以坛为家III

    发表于 2014-6-25 10:45:01 | 显示全部楼层
    赞一个!赞一个!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-6-25 11:09:01 | 显示全部楼层
    新版的也不难爆破。

    点评

    新手啊,争取一天一个,以第九轮的作业为目标多练手!写错了的,没写好的多多指教!  详情 回复 发表于 2014-6-26 08:57
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

     楼主| 发表于 2014-6-26 08:57:14 | 显示全部楼层
    DaShanRen 发表于 2014-6-25 11:09
    新版的也不难爆破。

    新手啊,争取一天一个,以第九轮的作业为目标多练手!写错了的,没写好的多多指教!

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-7-15 16:49:47 | 显示全部楼层
    感谢,学习了!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-1 20:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-7-6 20:30:56 | 显示全部楼层
    路过必顶,谢谢分享。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 14:28
  • 签到天数: 605 天

    [LV.9]以坛为家II

    发表于 2018-7-22 14:09:53 | 显示全部楼层
    好东西,谢谢分享!学习学习,受教了,有没有最新版的爆破???
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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