您的位置:首页精文荟萃破解文章 → Windows 软体注册法

Windows 软体注册法

时间:2004/10/15 1:02:00来源:本站整理作者:蓝点我要评论(1)

 

型态一 -- 可注册  windows  软体 .

特征是当未注册时 ,  一进去会有延迟画面 ,  可能有时效限制 (30 天後不能用之类 ), 在某个地方有个注册功能 ,  打开之後是个对话框 ,  要求输入密码 ,  有时还有姓名和公司 名称 .


程式如何判断注册与否 ?


通常两种方式 :


1.  在程式码的某一处 ,  藏有  " 注册印记 ".  如 00 表未注册 , 01 为已注册 .  当然也有 很奇怪的数字 ,  如  f8 03  表已注册 .

2. install  时程式开  *.ini,  或写入  win.ini,  把资料存在ê里 . 程式如何保护 : 最通常是用你的 name 当作 key,  经过复杂演算法 ,  算出密码 .


程式流程 :


get register data /*  可能从 *.ini  念出 ,  或从程式某一段读出某一 byte */


if registered /* registered  判断可能是一行指令 ,  也可以是副程式  */


main_program;


else


if date_expired


end_program;


else


show_unregistered_screen;


main_program;


.


.


main_program()


.


注册处理 :


1.  当输入 name, company, password  後 ,  立即比对 ,  正确的话立即做注册处理 ,  以後 再也不判断 ,  不正确要求再输入 .  不输入  name  的话 ,  保持  shareware  版 .

2.  同 1,  但以後一执行程式还是会判断 .


3.  输入时不比对 ,  只写入资料於  *.ini,  程式执行时再比对 .



如何判断追踪时我们身在何处 :



在 dos 程式 ,  进入 debuger  後 ,  只要我们不进入  int  一定留在程式里 .


  在  windows call back  方式下 , cpu  在程式和系统里跑来跑去 ,  关於这点我曾 post  过 ,  或请参阅 相关书籍 . 

我们如何知道现在在系统还是程式中呢 ? winice  在下面 3/4 处有一条横线 , 中间有  ***.1, ***.10  之类的东西 ,  以程式为  abc.exe  为例 ,  如果是  abc.5,  表示在 abc.exe  里的第 5 个模组 ( 或副程式中 ),  系统主要有三个模组  user, kernel, gdi,  所以 看到  user.119  这是在系统中 ,  别被  user  这个字骗了 .  如果你不能肯定 ,  可用  bc4 所附  tdump.exe  来看  ( 这是 dos 程式 ), export  的就是非系统模组 .



如何破解 :


在  dos 版输入字串时 ,  程式可能呼叫  int 21, int 16, int 9.  通常我们拦  int 16. 但如果程式呼叫  int 21,  我们拦  int 16  会不会不妥当呢 ?  不会 !  我们多  P  几次 ,  直 到  iret  就从系统回到程式了 .  记得这一点 ,  多 P  几次到  iret  就从系统回来了 .

在讲破解捷径前 ,  我们先作个小实验 .  请先进任一程式 ( 这里以 abc.exe 为例 ) 的注册 画面 ,  输入密码为  121345, ^D  叫出  winice,  看看我们在ê里 ,  如是  user, kernel, gdi 则按  ^D  回来 ,  再按一次  ^D,  直到模组为  vmm  为止 .  好现在我们打入  winice  指令 : s ds:0000 l ffffff '121345' /* 6  个  f  比较稳  */

通常会在  30:?????  找到 ,  我们当作是  30:7777  好了 .


打入 ,


bpm 30:7777 rw

按  ^d  回来 ,  再按下注册画面的  . winice  会因这个中断点的设置而停住一个 mov 指令 ,  看一下 ,  你会发现在  user.???  中 .  我们多  P 几次 ,  经过几个 retf  会回到 abc.???  中 .  再以  dos  程式为例 , vmm  犹如  int 16, user  是  int 21,  经过几个  retf 回到  abc.exe  即为经过  iret  回到 dos 程式 .  在 dos  里回来之後上一行一定是  int 21,

在  windows  下是什 呢 ?  我履试不爽 -------GetDlgItemText.


~~~~~~~~~~~~~~

GetDlgItemText  的用法请用  bc4  的  API help  查询 .  前面几个  push  就是参数位址 , 取回来的就是我们输入的  '121345'.

通常程式写法如下 :


.


push ****


GetDlgItemText /*  取回密码  */


.


push


GetDlgItemText /*  取回名字  */


.


push


GetDlgItemText /*  取回公司  */


call **** /*  绝大部份是短程呼叫  */


cmp ax,00


jnz ****


.


.

眼尖的人一定看懂了 , call ****  就是比对程式 ,  只要把  jnz  改掉就  OK.  当然也会有变 型 , call ****  只是看看 name, company  是不是空白 ,  空白的话保持  shareware,  非空白 才跑去比对 ,  所以後面还会有另一个

call ****


cmp ax,00


jnz ****


如果你能解  dos  程式 ,  这些都难不倒才对 .


所以捷径如下 :


1. 打开注册画面 .


2.^D  到  winice,  打上  bpx getdlgitemtext


3. ^d  回来 ,  输入每一栏  name , company, password,  按 .


4.winice  会停在  getdlgitem  的第一行 ,  多  p  几次 ,  经过  retf  回到程式 .


5. 把 jnz  改掉 .


上面方法适合注册程序 1. 的情形 .  至於 2,  在运气好一点 ,  你可追进  call ****  中 ,  把 最後 ax  值改掉 ,  因为一进程式的比对可能也是叫这里 .  运气不好或是 3 的情形 ,  则再看 一次程式流程


get register data


if registered


.


.

get register data  通常从  *.ini  念入 ,  如是写上注册印记的 ,  在上面注册画面後 , 我们就已经破掉 . ini  是从ê个指令读入呢 ?  试试看

bpx getprivateprofileint  和  /*  用 bc4 API reference  看一下用法  */


bpx getprivateprofilestring


程式通常如下 :



push


getprivateprofileint /*  取得  *.ini number=  这一栏  */


.


.


push


getprivateprofilestring /*  取得  *.ini name=  这一栏  */


.


.


push


getprivateprofilestring /*  取得  *.ini company -  这一栏  */


call ****


cmp ax, 00


jnz


还有一个更稳的方法 ,  因为未注册一定有干扰画面 ,  所谓干扰画面其实是一个对话框 , windows  开对话框的方法有 7,8 种 ,  请把  bc4 api reference dialog boxes  打开来看 有  dialogbox, createdialogbox, createdialogindirect......

bpx dialogbox  不行 ,  再


pbx createdialogbox  不行 ,  再


.


.

一路卯下 ,  总会命中 .  然後一路  p  下来 ,  经过 retf  回到程式 ,  比较一下前後  cmp  指令 ,  两三下就解掉 .


效果 :


破解後任何人都可输入自己名字再随便输个密码成为注册版 .  坏处是检查点多几来 经常有小问题 .


型态二 -- 不能注册  windows  软体 .

我们能做的只是跳过干扰画面和日期比对 ,  用上述  bpx dialogbox  方式 ,  可以解掉 . 基本上 ,  这些都是原则 ,  程式设计师经常弄些小陷阱 ,  不过无伤大碍 ,  当别人告诉你这破 解法这个不能用 ,  ê个不能用时 ,  再看一次 ,  多改几码 ,  照样解掉 .


如果ê位大哥想和我讨论这个破解法 ,  是不是能请你动手试之後 ,  拿特定程式来讨论比 较好 .  另外 ,  敝人想趁  win95  流行前 ,  弄些  os2  破解 ,  不知有没有人能教我 :


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程