飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11056|回复: 17

[原创] Presentation Assistant 2.8.0破解分析

  [复制链接]
  • TA的每日心情
    奋斗
    2024-4-16 17:05
  • 签到天数: 149 天

    [LV.7]常住居民III

    发表于 2014-5-4 23:35:26 | 显示全部楼层 |阅读模式
    【破文标题】Presentation Assistant 2.8.0破解分析
    【破文作者】Beijingren
    【破解工具】OD
    【破解平台】XP
    【软件名称】Presentation Assistant 2.8.0
    【软件大小】6.2MB
    【原版下载】http://www.presentation-assistant.com/download/presentationa.zip
    【保护方式】ini文件
    【软件简介】看名字就知道了,演讲辅助用的,感觉软件很不错,smallhorse发布了一个他破解的版本,才知道这么个软件,然后下载了原版。花一个晚上研究了一下,感觉注册过程还是比较简单的,写个破文备份。这个月开始会连续加班数个月,希望年底能有个好收成~~暂停crack的活动一段时间,主要精力还得养家糊口,呵呵。
    ------------------------------------------------------------------------
    【破解过程】我下载的是免安装的portable版本
    先试着运行了一下,标题,关于会有trial字样,输假码有错误对话框
    PEID,无壳,VC++
    OD载入,Unicode查找,看到很多有用信息
    其中就有license\license.ini,当然,还有trial version
    到license\license.ini下断,看了下参数,新建了一个,内容如下
    [License]
    USERID=Beijingren
    SERIALNUMBER=111111111111111111
    在Trial Version处往上找,段首下断,重载
    运行,断在段首,F8单步,走到下面代码
    4466AA      393D F0239B00 CMP     DWORD PTR [0x9B23F0], EDI
    004466B0      0F85 A8000000 JNZ     new.0044675E             //关键跳转
    004466B6      68 EC398700   PUSH    new.008739EC   
    此时EDI为0,常量9B23F0的值是关键
    于是,查找所有常量,寻找给它赋值的地方,共有5个mov,都下断
    0063A840   Presenta   始终                         mov dword ptr ds:[9B23F0],esi
    0063A8E5   Presenta   始终                         mov dword ptr ds:[9B23F0],esi
    0063B491   Presenta   始终                         mov dword ptr ds:[9B23F0],eax
    0063B4AA   Presenta   始终                         mov dword ptr ds:[9B23F0],ecx
    0063BC38   Presenta   始终                         mov dword ptr ds:[9B23F0],0
    重新加载,断在0063B491
    63B491    A3 F0239B00     mov dword ptr ds:[9B23F0],eax        //第一次给常量赋值,为0,不管这里赋值为多少,下面ecx清零后还是会将常量置零
    0063B496    33C9            xor ecx,ecx                                //ecx清零
    0063B498    3BC1            cmp eax,ecx
    0063B49A    75 06           jnz short Presenta.0063B4A2
    0063B49C    890D 04249B00   mov dword ptr ds:[9B2404],ecx
    0063B4A2    390D 18249B00   cmp dword ptr ds:[9B2418],ecx
    0063B4A8    75 69           jnz short Presenta.0063B513
    0063B4AA    890D F0239B00   mov dword ptr ds:[9B23F0],ecx        //再次赋值0
    ecx赋值给常量的地方无法修改,所以从
    0063B491    A3 F0239B00     mov dword ptr ds:[9B23F0],eax        //eax改为1,其余字节用nop填充
    0063B496    33C9            xor ecx,ecx
    0063B498    3BC1            cmp eax,ecx
    0063B49A    75 06           jnz short Presenta.0063B4A2
    保存为可执行文件,运行,显示为标准版,继续,改为旗舰版
    还是字符串那边,在trial下面有 ultimate,professional,standard字样,段首下断
    往下单步
    这里是显示注册版本类型的地方,在00446506处,将esp+44的值传递给了eax,然后与7比较,等于就不跳。

    004464FC  |.  8D4424 30     LEA     EAX, DWORD PTR [ESP+0x30]
    00446500  |.  64:A3 0000000>MOV     DWORD PTR FS:[0], EAX
    00446506  |.  8B4424 44     MOV     EAX, DWORD PTR [ESP+0x44]
    0044650A  |.  33DB          XOR     EBX, EBX
    0044650C  |.  83F8 07       CMP     EAX, 0x7
    0044650F  |.  895C24 10     MOV     DWORD PTR [ESP+0x10], EBX
    00446513  |.  75 5D         JNZ     SHORT Presenta.00446572
    00446515  |.  68 98398700   PUSH    Presenta.00873998                ;  Ultimate
    0044651A  |.  8D4424 18     LEA     EAX, DWORD PTR [ESP+0x18]
    0044651E  |.  68 90398700   PUSH    Presenta.00873990                ;  180
    往下翻,可以发现各个版本的代码,6是专业版
    00446572  |> \83F8 06       CMP     EAX, 0x6
    00446575      75 56         JNZ     SHORT Presenta.004465CD
    00446577  |.  68 74398700   PUSH    Presenta.00873974                ;  Professional
    0044657C  |.  8D5424 18     LEA     EDX, DWORD PTR [ESP+0x18]
    00446580  |.  68 6C398700   PUSH    Presenta.0087396C                ;  179
    如果eax不等于6,就跳到这里,变成标准版
    004465CD  |> \68 58398700   PUSH    Presenta.00873958                ;  Standard
    004465D2  |.  8D4C24 18     LEA     ECX, DWORD PTR [ESP+0x18]
    004465D6  |.  68 50398700   PUSH    Presenta.00873950                ;  178
    图省事呢,就nop第一个跳转,个人倾向于修改赋值比较妥当,程序不容易出错
    00446506  |.  8B4424 44     MOV     EAX, DWORD PTR [ESP+0x44]
    这句直接给eax赋7不行,字节数不够,于是在尾部找了块地方patch
    0086B100      B8 07000000   MOV     EAX, 0x7
    0086B105      33DB          XOR     EBX, EBX
    0086B107    ^ E9 FAB3BDFF   JMP     new2.0044650C
    00446506改为 jmp 0086B100,多余字节nop填充
    再保存,运行一下,OK!

    ------------------------------------------------------------------------
    【破解总结】想学老大优雅,但是做不到哇~~~~~~
    有大大路过,指导指导如何优雅~~~~~~~
    ------------------------------------------------------------------------
    【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
    游客,如果您要查看本帖隐藏内容请回复



    评分

    参与人数 3威望 +4 飘云币 +24 收起 理由
    MOV + 4 + 4 很给力!
    cjteam + 8 很给力!
    GGLHY + 12 赞一个!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2014-5-5 07:52:00 | 显示全部楼层
    学习了!希望LZ有时间多发发这种深入浅出的破文给我们新手学习。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 21:21
  • 签到天数: 1983 天

    [LV.Master]伴坛终老

    发表于 2014-5-5 07:56:54 | 显示全部楼层
    很精彩的分析
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2021-7-17 13:00
  • 签到天数: 975 天

    [LV.10]以坛为家III

    发表于 2014-5-5 12:08:37 | 显示全部楼层
    学习一下 ,感谢分享了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 07:09
  • 签到天数: 1405 天

    [LV.10]以坛为家III

    发表于 2014-5-5 13:52:23 | 显示全部楼层
    支持楼主的破文,顺便再发一个原创补丁就是两个主题。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2024-4-16 17:05
  • 签到天数: 149 天

    [LV.7]常住居民III

     楼主| 发表于 2014-5-5 15:14:32 | 显示全部楼层
    感谢楼上各位的支持~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-2-3 08:41
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2014-5-5 15:44:41 | 显示全部楼层
    学习一下破文,谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-10 00:28
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2014-5-5 21:09:52 | 显示全部楼层
    支持楼主的破文
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2014-5-6 12:29:21 | 显示全部楼层
    来看看大牛是怎么学习的
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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