lknight 发表于 2013-3-14 21:24

新手破解chmeditor v1.4(献给新手)

本帖最后由 lknight 于 2013-3-14 21:28 编辑

    CHM Editor v1.4是个小巧的chm文本编辑器,用Universal Extractor解包后可以作为绿色软件使用的,下面就开始正题了,呵呵
    平台:win8
    使用工具:PEiD 0.95   ollydbg
    软件语言:delphi
   软件官网:http://www.chmeditor.com
   软件下载链接:http://d8deb18412b77744f17a-ca18ef5eced22e7239f9e6be5a780aef.r75.cf2.rackcdn.com/chmeditor1404demo-setup.exe
   
    首先,运行软件,软件有15天试用时间,关闭软件,调整系统时间15天后,在运行软件,出现下面的提示框
   
    看到上图没有注册按钮,点击No,thanks后软件就退出(在软件过期前试用同样没有输入注册信息的地方,只能爆破了。。。)。

   破解最终效果:
      

    OD载入程序后,bp GetLocalTime下断,然后F9运行,OD停在在下图的位置,
   
    然后Ctrl+F9返回,一直返回到软件代码区域,如下图
   
   在上图中我们网上看,从这段代码的起始位置到调用系统函数没有跳转可以跳过获取时间的跳转,所以我们继续Ctrl+F9返回,如下图
   
   在这段代码中找能够跳过时间调用call的跳转,然后再上面的代码中我们找到了这个跳转,如下图
   
    在上图的跳转je位置下F2断点,重新载入程序,F9运行,程序被断下来了,如下图
   
    修改je标志为Z为1,让跳转实现,F9运行,程序再次断下来了,如下图
   
    可以看出上图是再次被断在了GetLocalTime这个系统函数中,所以继续Ctrl+F9返回
   
    上图中这个位置和第一次时间断点断下后返回的位置是一样的,所以呢,继续Ctrl+F9返回
   
    上图中返回位置的上面第二行就有个Je跳转,正好可以跳过获取时间的call,那么,在je上下F2断点,从新来过,F9运行,程序断在了我们前一次下断的je上,
修改标志位Z为1,让跳转实现,然后F9运行,程序停在了我们这次下断的je上,下图
   
    然后相同的做法,修改标志位Z为1,让跳转实现,F9运行,这时候程序完全跑起来了,下图
   
    到这里,其实,我们已经完全取消了时间限制,将上面我们修改标志的那两个位置的je修改为jmp即可,这样就是一个无限期试用的版本了,不过呢,
那个启动提示时间剩余15天和那个未注册的字符看着那么扎眼,我们把它也干掉吧,我们先修改上面的两个je为jmp后保存和执行文件,然后从新载入
新修改的可执行文件,搜索一下字符串“UNREGISTERED VERSION”,如下图
   
    双击来到反汇编窗口,下图所示
   
    在上图的代码段中没有找到可以跳过的访问字符串“UNREGISTERED VERSION”的跳转,那么就在段尾下F2断点,如下图
   
    F9运行程序,程序就断在了上图的位置,然后Ctrl+F9返回,如下图
   
   上图程序返回到的位置代码区域没有可以跳转可以跳过读取字符串“UNREGISTERED VERSION”的跳转,所以,继续Ctrl+F9返回,没有返回到调用位置,继续返回Ctrl+F9,如下图
   
    上图中我们看到正好有个je可以跳过读取字符串“UNREGISTERED VERSION”的call,那么就不客气了,直接je上下F2断点,从新来过,F9运行,程序断下来了,下图
   
    我们再次修改标志位Z为1,让跳转实现,然后F9运行,程序完全跑起来了,如下图
   
    剩余天数的提示框没有出现,“UNREGISTERED VERSION”字符也没有出现在启动框中,至此我们搞定了这个程序。
   
    这个程序我们总共需要修改一下三个地方就完成了最终的破解
    009390B9      0F84 E2000000 JE CHMEdito.009391A1   //这个位置je修改为jmp

   009391BB      74 31         JE SHORT CHMEdito.009391EE//这个位置je修改为jmp

    008718CD   .74 0C         JE SHORT CHMEdito.008718DB //这个位置je修改为jmp
   
    全文完。
                                                                     2013.03.1421:17 by lknight
   

冥界3大法王 发表于 2013-3-14 21:34

跟我一样,你也喜欢破时间限制那种啊。

lknight 发表于 2013-3-14 21:38

冥界3大法王 发表于 2013-3-14 21:34 static/image/common/back.gif
跟我一样,你也喜欢破时间限制那种啊。

呵呵,是啊,感觉调时间就好找关键点啊:handshake

笑容茹椛 发表于 2013-3-14 21:49

写得很详细,对新手很有帮助

king6725 发表于 2013-3-14 21:59

好厉害啊~~~~~~~~~~~~我都不知道怎么搞

小雨细无声 发表于 2013-3-14 22:03

很详细,膜拜中。

Viliam 发表于 2013-3-14 22:11

实际上是把时间标志保存在注册表的
HKEY_CLASSES_ROOT\3FFDC0AD76F42B2844EEC3AD510A57AF   原始数据(jZDja)       过期数据(jZiZZ)
HKEY_CLASSES_ROOT\4430A01FAF25EBF0B1638E488C8D4C4A   原始数据(PXLP-)      过期数据(PX-bq)    ;把这两个注册表项删除就恢复15天试用,

http://www.52pojie.cn/forum.php?mod=attachment&aid=MTY5OTI2fGEwMTk3ODA0fDEzNjMyNjkwNTB8MjM4MTcxfDE4ODEzNA%3D%3D&noupdate=yes
我的方法是直接把009390B9 je 改成Jump,把
008ECDBA|.BA 14CE8E00   mov edx,008ECE14                         ;UNREGISTERED VERSION
008ECE14的UNREGISTERED VERSION改成自己的用户名就可以了,对于启动时提示剩余15天的烦人的提示框,我是直接用PEExplore删除掉资源后保存,运行删除掉资源的文件会弹出找不到资源提示框,OD载入nop掉MessageBoxA调用就可以了。

冥界3大法王 发表于 2013-3-14 22:37

Viliam 发表于 2013-3-14 22:11 static/image/common/back.gif
实际上是把时间标志保存在注册表的
HKEY_CLASSES_ROOT\3FFDC0AD76F42B2844EEC3AD510A57AF   原始数据(j ...

看到没有?一下子目的地就暴露了,但这里有个疑问,不知是regedit的问题还是这软件的问题
不能直接跳准,而用regworkshop则没这问题。要是我的话不K时间,K注册表读取或写入时的。。。

冥界3大法王 发表于 2013-3-14 22:45

你们那OD什么版本的,我中英文2个版本,运行都异常呢。根本到不了下面的部分。

Viliam 发表于 2013-3-14 23:00

冥界3大法王 发表于 2013-3-14 22:37 static/image/common/back.gif
看到没有?一下子目的地就暴露了,但这里有个疑问,不知是regedit的问题还是这软件的问题
不能直接跳准, ...

不太明白你说的不能直接挑准是啥意思,
看我解释的对不对?,这个软件的注册表保持标记做得有点隐蔽
因为HKEY_CLASSES_ROOT\3FFDC0AD76F42B2844EEC3AD510A57AF 是没有子键的,jZDja就是默认字符串的值,而默认字符串的名称是为空的(Null),所以你下BP RegQueryValueExW时堆栈是这样子的0012FE64   0050BFAC/CALL to RegQueryValueExW from CHMEdito.0050BFA7
0012FE68   000001B6|hKey = 0x1B6
0012FE6C   0040A4B0|ValueName = ""       ;因为默认字符串的名称是Null,所以就是这样子的,这种形式不容易看出是读取了什么东东,而且3FFDC0AD76F42B2844EEC3AD510A57AF这个键值貌似是经过加密再解密后出来的,
0012FE70   00000000|Reserved = NULL
0012FE74   0012FE94|pValueType = 0012FE94
0012FE78   0131718C|Buffer = 0131718C
0012FE7C   0012FEA4\pBufSize = 0012FEA4

同样对于HKEY_CLASSES_ROOT\4430A01FAF25EBF0B1638E488C8D4C4A 也是这种形式

本来想分析算法后来想想还是算了,毕竟分析出算法也没什么用,只能爆破。
页: [1] 2 3
查看完整版本: 新手破解chmeditor v1.4(献给新手)