Presentation Assistant 2.8.0破解分析
【破文标题】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下断,看了下参数,新建了一个,内容如下
USERID=Beijingren
SERIALNUMBER=111111111111111111
在Trial Version处往上找,段首下断,重载
运行,断在段首,F8单步,走到下面代码
4466AA 393D F0239B00 CMP DWORD PTR , EDI
004466B0 0F85 A8000000 JNZ new.0044675E //关键跳转
004466B6 68 EC398700 PUSH new.008739EC
此时EDI为0,常量9B23F0的值是关键
于是,查找所有常量,寻找给它赋值的地方,共有5个mov,都下断
0063A840 Presenta 始终 mov dword ptr ds:,esi
0063A8E5 Presenta 始终 mov dword ptr ds:,esi
0063B491 Presenta 始终 mov dword ptr ds:,eax
0063B4AA Presenta 始终 mov dword ptr ds:,ecx
0063BC38 Presenta 始终 mov dword ptr ds:,0
重新加载,断在0063B491
63B491 A3 F0239B00 mov dword ptr ds:,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:,ecx
0063B4A2 390D 18249B00 cmp dword ptr ds:,ecx
0063B4A8 75 69 jnz short Presenta.0063B513
0063B4AA 890D F0239B00 mov dword ptr ds:,ecx //再次赋值0
ecx赋值给常量的地方无法修改,所以从
0063B491 A3 F0239B00 mov dword ptr ds:,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
00446500|.64:A3 0000000>MOV DWORD PTR FS:, EAX
00446506|.8B4424 44 MOV EAX, DWORD PTR
0044650A|.33DB XOR EBX, EBX
0044650C|.83F8 07 CMP EAX, 0x7
0044650F|.895C24 10 MOV DWORD PTR , EBX
00446513|.75 5D JNZ SHORT Presenta.00446572
00446515|.68 98398700 PUSH Presenta.00873998 ;Ultimate
0044651A|.8D4424 18 LEA EAX, DWORD PTR
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
00446580|.68 6C398700 PUSH Presenta.0087396C ;179
如果eax不等于6,就跳到这里,变成标准版
004465CD|> \68 58398700 PUSH Presenta.00873958 ;Standard
004465D2|.8D4C24 18 LEA ECX, DWORD PTR
004465D6|.68 50398700 PUSH Presenta.00873950 ;178
图省事呢,就nop第一个跳转,个人倾向于修改赋值比较妥当,程序不容易出错
00446506|.8B4424 44 MOV EAX, DWORD PTR
这句直接给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!
------------------------------------------------------------------------
【破解总结】想学老大优雅,但是做不到哇~~~~~~
有大大路过,指导指导如何优雅~~~~~~~
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
**** Hidden Message *****
学习了!希望LZ有时间多发发这种深入浅出的破文给我们新手学习。
很精彩的分析
学习学习。
学习一下 ,感谢分享了 支持楼主的破文,顺便再发一个原创补丁就是两个主题。 感谢楼上各位的支持~~~ 学习一下破文,谢谢
支持楼主的破文 {:sweat:}来看看大牛是怎么学习的
页:
[1]
2