首页
社区
课程
招聘
[旧帖] [原创]cracker的成长记照片桌面的破解 0.00雪花
发表于: 2007-2-11 15:14 3621

[旧帖] [原创]cracker的成长记照片桌面的破解 0.00雪花

2007-2-11 15:14
3621
一些定式,打开照片桌面2.0四处看看。
一个爆破者应该了解的东西1:有什么限制(最重要)。2:什么保护方式。打开它的时候,它已经一一向我们说明了。限制,十天试用期。点注册后看到出来一个框只有序列号。
当然,现在PEID查壳,一个C++编的东西。没有加壳,太好了,笑^_^
毫不犹豫OD载入。
点注册,输入注册码,我喜欢用123789。别忙着点确定,先回到OD下断,发现是一个MFC编的程序。糟糕,为何?因为它常常没有我们熟悉的函数,果然,找不到GetDlgItemTextA,也没有GetWindowTextA。现在有两种方法,共我们选择,1:用kerberos等软件监视,看它在注册时调用了哪个Api,由于mfc函数比较人性化,一看名字就知道它在干什么。2:先点确定,看它怎么样。它说:“无效的注册码!”你已经知道了我要干些什么吗?对,就是字符串查找。因为第二种方法比较简单,且不用其他工具,所以我选择了第二种。果然一查变到了关键的call处。


图一

看了这个图一有何感想,太经典的注册了。第一个call核心call,jnz就是关键跳转,一定要跳。Push没有关系,那些都是往栈里压入参数。第二个call是提示错误的。是不是有一种冲动,想把jnz改成jmp。
当然试试也是好的。改过之后,才知道启动的时候依旧有那个nag窗口。虽说你每一次输入序列号都对你说谢谢,可谢谢何时是个头啊,每次打开都输一次岂不很郁闷!遇到这种情况怎么办这正是现在我们要探讨的问题。

我们不妨看看,注册成功之后,它在干什么。注意,在调试的时候尽量改标志寄存器,如图二。


图二

我们只要在z后的1上双击,本来jnz不跳的,现在1变成0后就可以跳了,比jnz改成jz快吧。现在我们已经知道了它在后面干什么,看看OD给我们的注释,重要的几条如下GetWindowsDirectoryA,\pdtdtlmt_32.dll,fopen,fwrite。作何解释呢?首先调用GetWidowsDirectoryA,取得路径。再加上\pdtdtlmt_32.dll,即c:\\windows\pdtdtlmt_32.dll,然后再往它里面添东西,它启动时调用这个文件里面的东西再来一次来判断是否注册。明白了吗?我们去验证我们的猜想。C:\\windows下果然有这个文件。现在请不要忘记GetWindowsDirectortA,现在就让我们依靠它来帮助我们。因为软件在打开,pdtdtlmt_32.dll它之前肯定也会先用这个函数获得系统目录所在。开始吧。

OD载入,Ctrl+N(当前模块中的名称(标签),我建议广大cracker记一些快捷键,这样速度快些),找到GetWindowsDirectortA,点enter(查找导入表参考),全部下断。成功的第一步我们已经迈出。

F9(运行),第二次F9就出现了讨厌的nag,重新来过。Ctrl+F2(重新开始)。一下F9,下面最艰苦的F8+F7之旅就开始了。先是随便F8,走到

/*412699*/  CALL JMP.&MFC71.#2020_?DoModal@CDialog@@UAEHXZ

讨厌的nag窗口又出现了。下面给大家展示一下稍稍有点变态的做法,删掉pdtdtlmt_32.dll,为何呢?让我们进一步分析各个call的职能。我把它移到了d:盘,为了以防万一。咱们再来Ctrl+F2。现在明白走过

/*41245F*/  JNZ 照片桌面.0041257E

时候发现与刚才不一样了,得出一个结论,c:\windows下面pdtdtlmt_32.dll就跳,不跳就是没有这个文件,自动建一个。现在我们不用去管这个跳转之间的代码了。下面,目标锁定

/*4125F1*/  JE 照片桌面.004126E0,

因为方圆千里之内,没有一个跳可以越过/*412699*/(什么,你忘了它是干什么的,向上瞅瞅,就是出现nag窗口的地址)。那么我们试试看吧!其实OD本身就是一个很好的汇编代码修改器,选定/*4125F1*/这一行,直接在代码行上双击,或者右键单击,选择汇编(快捷键Space)把je改成jmp或jnz,再右键->复制到可执行文件->选择部分(注意选择住要修改的部分,因为我们只修改了一处,所以用选择部分,如果修改了多个地方,那么就要选择所有改动了)->保存文件即可。启动,哈哈^_^没有nag窗口了。下面再来看看,为何它可以,上面那个理由太牵强了。打开pdtdtlmt_32.dll看看,尽是一些1234567890之类的吓人一跳。知道它有些什么就够了。如图三时eax中出现了pdtdtlmt_32.dll的一模一样的数。说明现在我们必须注意了。



图三

发现它在如图四中的call内,大发淫威。跟注册过程很像。具体的我也不介绍了,否则,咱们就是分析算法,找序列号了。这么一来又有多少兴致勃勃的初来乍到的Cracker伤心绝望。


图四

最后测试,这是爆破工作者都该做的,只有经过测试才可以知道软件是否被破解完成了。把日期向后调一个月,出现了两种不同的情况,破解版本是成功打开,原版是提示注册。到此,破解工作完成。
总结一下,这次,我们用的是爆破,作为爆破和分析算法找出它的序列号的最大区别是方法不同,假如是分析算法那么,我们应该死嗑关键call/*00403E88*/,然后分析每一步都在干什么。但爆破就不同,爆破不用太懂汇编,但是你必须了解一些重要call的作用,换句话说就是爆破要观其大!分析算法要锱铢必较。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
呵呵,顶一下,感觉楼主好喜欢写文章,打字一定很快了,佩服
还有看过你的介绍,我想这里大多数人都是自学的,没什么奇怪
我就是自己乱来的学着,到现在还是菜鸟,但是我会努力的,你
也一样吧,其实学破解真的没什么用途,除非好像版主一样做病毒
的分析等才有用,但是学它的原因我想好多人应该好像我一样都是
开始感觉很好奇,就学习来了
2007-2-11 20:28
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
把破解理解成一种思维,或者品质.
那样,或许对我们一生都很有帮助
2007-2-11 20:55
0
雪    币: 226
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
写的不错,顶一下,适合我这样的爆破手.
2007-2-11 21:31
0
游客
登录 | 注册 方可回帖
返回
//