首页
社区
课程
招聘
[原创]PowerCHM v5.0 之暴破
发表于: 2005-8-26 10:39 4590

[原创]PowerCHM v5.0 之暴破

2005-8-26 10:39
4590
【破文标题】:PowerCHM v5.0 之暴破

【破文作者】:Steven

【作者邮箱】:lugb2003@sina.com

【软件名称】:PowerCHM v5.0

【软件大小】:3.0MB

【软件语言】:英文

【下载地址】:http://www.dawningsoft.com/products/powerchm.htm

【软件简介】:PowerCHM 软件可以转换 .html(.htm)、.doc、.txt 格式的文件为 .CHM 格式的文件,它还能反编译 .CHM文件。

【保护方式】:注册码 + 30天试用期限制 + 功能限制

【目标程序】:PowerCHM.exe

【编译语言】:VC++ 6.0

【调试环境】:WinXP、Ollydbg、W32Dasm、Hiew

【破解日期】:2005-08-25

【破解目的】:推广使用Ollydbg动态分析,和W32Dasm静态分析相结合

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

=============================================================================

【破解过程】:

1. 首先要明确爆破的思路是改变程序的流程,使得程序按照我们所期望的流程运行!

2. 由于我现在还是个菜鸟,跟踪注册码算法时,跟着跟着就晕了,只好暴破了,有哪位大侠感兴趣研究一下算法;请赐教!

3. 现在来看一下程序的注册流程,运行程序,随意输入注册码注册,弹出窗口提示"PowerCHM must be restarted to validate the code."(必须重启软件才能验证注册码的有效性);注意观察一下,软件安装目录中多了一个reg.ini文件;根据这两个线索进行分析;

  (1).先用W32Dasm工具反编译,查找字符串"PowerCHM must be restarted to validate the code."
经过分析,注册码的关键比较部分不在这里,一般情况下这个线索不必分析;
  (2).查找字符串"reg.ini";发现有三个地方,分别为0043766E、00437721、00439060,用OD动态分析;
  (3).用OD载入程序,在0043766E、00437721、00439060这三处下断,F9运行

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
0043766E   |.  68 BCAA5200         push PowerCHM.0052AABC                   ;  ASCII "reg.ini"
★停在这里★
00437673   |.  8D4C24 38           lea ecx,dword ptr ss:[esp+38]
00437677   |.  50                  push eax
00437678   |.  51                  push ecx
00437679   |.  C68424 50060000 01  mov byte ptr ss:[esp+650],1
00437681   |.  E8 DD080A00         call PowerCHM.004D7F63
00437686   |.  8B00                mov eax,dword ptr ds:[eax]
00437688   |.  50                  push eax                                 ; /Path
00437689   |.  FF15 8C345000       call dword ptr ds:<&SHLWAPI.PathFileExi> ; \PathFileExistsA
★判断reg.ini文件是否存在★
0043768F   |.  85C0                test eax,eax
00437691   |.  8D4C24 34           lea ecx,dword ptr ss:[esp+34]
00437695   |.  0F94C3              sete bl
00437698   |.  E8 31060A00         call PowerCHM.004D7CCE
0043769D   |.  84DB                test bl,bl
0043769F   |.  74 21               je short PowerCHM.004376C2★如果reg.ini文件存在,跳走,否则会弹出注册窗口★
004376A1   |.  8D4C24 14           lea ecx,dword ptr ss:[esp+14]
004376A5   |.  C68424 44060000 00  mov byte ptr ss:[esp+644],0
004376AD   |.  E8 1C060A00         call PowerCHM.004D7CCE
004376B2   |.  C78424 44060000 FFF>mov dword ptr ss:[esp+644],-1
004376BD   |.  E9 E1060000         jmp PowerCHM.00437DA3

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
单步执行到这里
00437721   |.  68 BCAA5200         push PowerCHM.0052AABC                   ;  ASCII "reg.ini"
00437726   |.  8D5424 38           lea edx,dword ptr ss:[esp+38]
0043772A   |.  51                  push ecx
0043772B   |.  52                  push edx
0043772C   |.  C68424 50060000 06  mov byte ptr ss:[esp+650],6
00437734   |.  E8 2A080A00         call PowerCHM.004D7F63
00437739   |.  8B00                mov eax,dword ptr ds:[eax]
0043773B   |.  8D4C24 40           lea ecx,dword ptr ss:[esp+40]
0043773F   |.  51                  push ecx                                 ; /Arg3
00437740   |.  56                  push esi                                 ; |Arg2
00437741   |.  50                  push eax                                 ; |Arg1
00437742   |.  8D4C24 60           lea ecx,dword ptr ss:[esp+60]            ; |
00437746   |.  C68424 50060000 07  mov byte ptr ss:[esp+650],7              ; |
0043774E   |.  E8 14630A00         call PowerCHM.004DDA67                   ; \PowerCHM.004DDA67
00437753   |.  8D4C24 34           lea ecx,dword ptr ss:[esp+34]
00437757   |.  C68424 44060000 06  mov byte ptr ss:[esp+644],6
0043775F   |.  E8 6A050A00         call PowerCHM.004D7CCE
00437764   |.  8D5424 10           lea edx,dword ptr ss:[esp+10]
00437768   |.  8D4C24 54           lea ecx,dword ptr ss:[esp+54]
0043776C   |.  52                  push edx
0043776D   |.  E8 D8640A00         call PowerCHM.004DDC4A
00437772   |.  8D4C24 54           lea ecx,dword ptr ss:[esp+54]
00437776   |.  E8 1C660A00         call PowerCHM.004DDD97
0043777B   |.  8D4C24 10           lea ecx,dword ptr ss:[esp+10]
0043777F   |.  E8 BCCD0900         call PowerCHM.004D4540
00437784   |.  8D4C24 10           lea ecx,dword ptr ss:[esp+10]
00437788   |.  E8 67CD0900         call PowerCHM.004D44F4
0043778D   |.  8B4424 10           mov eax,dword ptr ss:[esp+10]
00437791   |.  8B40 F8             mov eax,dword ptr ds:[eax-8] ★注册码长度★
00437794   |.  83F8 00             cmp eax,078 ★注册码长度与120比较,修改为0★
00437797   |.  0F8C B7050000       jl PowerCHM.00437D54 ★小于120跳走,会弹出注册窗口★
0043779D   |.  3D A5000000         cmp eax,082 ★注册码长度与130比较,修改为000000A5★
004377A2   |.  0F8F AC050000       jg PowerCHM.00437D54 ★大于130跳走,会弹出注册窗口★

修改上面两处是为了能够输入任意长度的注册码,进行注册!最大值改为A5,是因为在输入注册码时最多只能输入这么多的字符;
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
继续单步执行到这里
00437986   |.  40                  inc eax
00437987   |>  83F8 01             cmp eax,1
0043798A   |.  0F 85B7000000       jne PowerCHM.00437A47★关键跳转一,修改为jmp(机器码为E9B8000000)修改后少了一个字节,可用90补一个字节★
00437990   |.  8D4C24 68           lea ecx,dword ptr ss:[esp+68]
00437994   |.  C68424 44060000 12  mov byte ptr ss:[esp+644],12

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
继续单步执行到这里
00437A98   |.  68 28AA5200         push PowerCHM.0052AA28                   ;  ASCII "copyno"
00437A9D   |.  8D4C24 24           lea ecx,dword ptr ss:[esp+24]
00437AA1   |.  E8 B5C60900         call PowerCHM.004D415B
00437AA6   |.  8BF0                mov esi,eax
00437AA8   |.  3BF3                cmp esi,ebx
00437AAA   |.  0F 85C8000000       jne PowerCHM.00437B78★关键跳转二,修改为jmp(机器码为E9C9000000)修改后少了一个字节,可用90补一个字节★
00437AB0   |.  8D4C24 20           lea ecx,dword ptr ss:[esp+20]
00437AB4   |.  C68424 44060000 13  mov byte ptr ss:[esp+644],13

到此就大功告成了!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
鼓励一下~~~
2005-8-26 12:48
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我喜欢暴力
2005-9-1 17:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
初学破解,问一个很菜的问题,如何修改je short PowerCHM.004376C2此类的语句?用什么软件,才能修改语句?
2005-9-2 00:06
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可以用Hiew工具修改!我经常使用这个工具!
2005-9-3 22:23
0
雪    币: 1264
活跃值: (612)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
od 就可以修改。保存可执行文件。
然后用UE HEX等等,就是改代码。
掘见。
2005-9-3 22:23
0
游客
登录 | 注册 方可回帖
返回
//