新手破解加密狗保护软件经历

一周前,朋友给我一个软件,说是加密狗丢了,软件使用不了。听到说加密狗,我顿时很有兴趣,加密狗保护的软件,咱还没见过呢,与是欣然答应,谁知道换来的是这一周很多很多的娱乐时间都没了,还好最终完美解决,过程如下。
软件安装后,运行程序直接提示没有找到加密狗,好吧先上看雪下载OD,载入查找字符串,成功找到,follow,来到这里。
00000000 |.   je       short   00000000
00000000 |.   mov     ecx,   000000D0  ;  提示
00000000 |.   mov     edx,   000000E0  ;  没有检测到加密狗!
哈哈,我就会JMP大法,虽然JMP的具体含义我也讲不出来,改JE为JMP,保存,运行程序,成功显示程序界面。我当时就乐了,想我一小菜也有今天,谁知噩梦刚刚开始。
程序分为6个模块,当我进入程序运行第一个模块时,那个提示框有出来了,难道刚才没有找完?于是重新刚才的步骤,确实就刚才那一处,不死心打开程序安装目录,发现目录里面还有4个EXE文件,运行其中一个,弹出提示框,就是它了。然后,OD载入,查找字符串,JMP大法,保存运行,OK!在主程序里执行这一模块,直接进入。按此方法修改剩余的3个EXE一并解决了。至此,6模块已解决4个。这也太简单了,休息一下。

在程序其他目录找到剩余的一个EXE,OD载入,查找字符串,竟然只找到一些无关紧要的东西,提示框内容在那,不管了,抓住老鼠就是好猫,用JMP大法一顿乱改(不下30次),始终不行,改着改着都到系统领域了,这是什么程序呀?看雪一阵猛搜,晕竟是传说中的PB程序,好吧PBKILL打开所有PDB,逐个查看,终于在一个文件里面找到if ssnum = "a4r43gtygdg" then
else
  destroy(main_util)
  messagebox("操作提示","注册失败")
  halt close
  return
end if
PBKILL真强大,都见到源码了,那把=变成<>不就可以了,可用winhex修改半天还是不行,于是有了这次提问http://bbs.pediy.com/showthread.php?t=143877,在此期间实验N次(N<=200),见不到有人回复,找不到答案,灰心丧气中下载PB,导入*.SR,错误接踵而来,下载PB操作基础,大致翻一遍也没解决,好吧在回到winhex继续忙无目的测试,突然灵光一现,把a4r43gtygdg的十六进制清零试试。结果大家都知道了,成功了,真的成功了,这一个模块比前几个加起来还高兴!
最后一个模块是一个网页程序,一点击网页链接都能见到,JSP的。没写过JSP,见过ASP,PHP,想着这不简单直接修改源文件不就行了,于是修改之运行,报错!于是又是BAIDU、GOOGLE一番,原来JSP还有CLASS文件,至于为神马有,没搞懂。好的,目标明确下载java decompiler,找到我那可爱的源码,修改之。然后我们要把它编译回去,于是下载JDK1.5,编译50次左右始终错误(神马找不到包了、字符串错误了、神马编码错误了等等等等。。。。。。。。。。。。。),于是我就见一个错误BAIDU一下,经几天的努力,终于编译成功(JAVA真坑人呀)!
至此,软件已经不需要加密狗了!想把修改后的文件打包后给朋友,感觉不是很完美,与是又在KSSD上研究一番,找到CodeFusion制作文件补丁,但还是感觉不好,如不能判断程序安装路径,与是用DELPHI按一下格式逐个修改
var
f:file;
 n:byte;
begin
n:=$51;
if FileExists(' C:\Program Files\zoectusic\main.exe’) then
begin
AssignFile(f, C:\Program Files\zoectusic\main.exe);
     Reset(f,1);
     Seek(f,$00000000);
 BlockWrite(f,n,1);
 closefile(f);
 END;
最终,经一周的艰辛摸索,我这个新手终于搞定了这个加密狗保护软件,回头想想,自己都感觉不容易。谢谢看雪,是你让我成长!
2011.12.9