- UID
- 49047
注册时间2008-5-1
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 奋斗 2025-1-6 18:17 |
---|
签到天数: 153 天 [LV.7]常住居民III
|
【破文标题】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!
------------------------------------------------------------------------
【破解总结】想学老大优雅,但是做不到哇~~~~~~
有大大路过,指导指导如何优雅~~~~~~~
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
|
评分
-
查看全部评分
|