中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » SystemSafetyMonitor 2.x 系列破解脚本
作者:
标题: SystemSafetyMonitor 2.x 系列破解脚本 上一主题 | 下一主题
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『楼 主』:  SystemSafetyMonitor 2.x 系列破解脚本

  好久没玩长篇的BAT了,头段时间又练了一下手脚,做了个批处理版的破解脚本。其实算不上完全的原创,只不过是把别人的和自己写的拼凑在一起,做得稍微有点实用性而已。喜欢的就拿去用用吧,如果能留下点什么建议就更好了。(注:System Safety Monitor 是一款对系统进行全方位监测的系统防火墙工具,它不同于传统意义上的防火墙,它针对操作系统内部的存取管理,因此与任何网络/病毒防火墙都是不相冲突的。现在,免费版本和注册版本同时并存。更多的介绍,可以google之、百度之)

  SSM官方网站:http://www.syssafety.com
@echo off
mode con cols=75 lines=25
title System Safety Monitor 2.x 系列破解程序
setlocal enabledelayedexpansion

:: 原理:
::   SSM授权信息保存在HKLM\SOFTWARE\Classes\CLSID\下
::   这个CLSID值是随机生成的,每个机器的版本不一样。
::   这个CLSID值只有一个默认值,是DWORD类型的数据,记录安装日期和1900/01/01之间的天数差
::     (注意:1900/01/02是1900/01/01的第二天,这个天数差就是2,而不是1,可用excel来计算)
::   找到这个CLSID值以后,直接删除这个CLSID值便可(MS自带的注册表编辑器不能查找DWORD值)
::     本程序通过计算安装文件的创建日期和1900/01/01之间的天数差来寻找CLSID值
::     因此,请尽量在安装完程序之后立即运行本程序,以便生成正确的注册表文件
::     当然,只要安装文件的创建日期不被篡改,任意时候运行本程序都能正确破解
::   经验证,对2.2.604~2.4.0.618都有效
:: Code by JM 2007-7-9 其中,10进制转16进制的代码源于DOS联盟0401

rem ======== 计算程序安装日期是 1900-1-1 的第几天 ========

:: 提取程序安装日期
:: 因为主程序 SysSafe.exe 的创建日期是固定的,不能反映程序的安装日期
:: 所以,以卸载程序uninstSSM.exe的创建日期为准

if not exist uninstSSM.exe (
    mode con cols=50 lines=8
    echo.&echo.&echo         请把本程序放在SSM安装目录下运行
    echo.&echo                        按任意键退出...
    pause>nul&exit
)
find /i "SystemSafetyMonitor 2x 破解文件" 破解文件.reg>nul 2>nul&&(
    mode con cols=65 lines=8
    echo.&echo.&echo   已经在当前目录下生成了破解文件,再次生成有可能导致注册表错误
    echo.&echo                                               按任意键退出...
    pause>nul&exit
)
echo.&echo   正在生成破解文件,请稍候...
for /f "tokens=1-3 delims=- " %%i in ('dir /tc uninstSSM.exe^|findstr "\-.*:"') do (
    set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100, y=%%i
)

:: 把年份转化为天数
for /l %%i in (1901,1,%sy%) do (
    set /a leap="^!(%%i %% 4) & ^!(^!(%%i %% 100)) | ^!(%%i %% 400)"
    set /a y_days=y_days+365+leap
)

:: 把月份转换为天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
set num=0
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
    set /a num+=1
    if !num! lss %sm% set /a m_days+=%%i
)
:: 如果安装时为闰年的话,会多算1天,所以要调整
if %leap% equ 1 (
    set /a days=y_days+m_days+sd
) else set /a days=y_days+m_days+sd+1


rem ======== 把天数转化为16进制的注册表REG_DWORD值 ========

set d=0
for %%i in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do (
    set d!d!=%%i
    set/a d+=1
)
set scanf=%days%

:d2h
set/a tscanf=%scanf%"&"15
set/a scanf">>="4
set hex=!d%tscanf%!!hex!
if %scanf% neq 0 goto d2h

echo.&echo ====================================================================
echo   破解原理:
echo.&echo       删除HKLM\SOFTWARE\Classes\CLSID\下DWORD值^(16进制^)为
echo       安装日期与 1900-1-1 天数差的注册表项,
echo       每删除一次,就可以再延期30天。
echo ====================================================================
echo   经过分析,SSM安装日期为 %sy%-%sm%-%sd%
echo   是 1900-1-1 的第 %days% 天
echo   %days% 的 16 进制值为 0x%hex%

rem ======== 删除REG_DWORD值为 0x%hex% 的注册表项 ========

:: 之所以不写入临时文件夹,是为了避免在for语句中使用 usebackq 带来麻烦
reg query HKLM\SOFTWARE\Classes\CLSID /s 2>nul >c:\list.txt
for /f "delims=:" %%i in ('findstr /enirc:"REG_DW0x%hex%" c:\list.txt') do set /a line=%%i-2

:: 当用本脚本生成的reg破解SSM之后,若reg文件不慎丢失,
:: 再次生成破解文件将不能准确定位要破解的注册表项
if not defined line (
    echo.&echo    无法定位破解项,重新安装SSM后可能会得到解决
    echo    按任意键退出...
    del /q c:\list.txt
    pause>nul
    exit
)
for /f "skip=%line% delims=" %%i in (c:\list.txt) do (
    (
        echo Windows Registry Editor Version 5.00
        echo.&echo ; 本reg文件是 SystemSafetyMonitor 2x 破解文件
        echo ; 每删除以下键值一次,就可以在当前日期的基础上再延长30天使用期限
        echo ; 理论上,可以无限期延长授权期限
        echo ; 注意:此破解文件只适用于当前机器!
        echo.&echo [-%%i]
    )>破解文件.reg
    echo ====================================================================
    echo   已经在当前目录下生成:破解文件.reg
    echo   每导入一次该注册表文件即可延长30天的使用期限
    echo ====================================================================
    echo   注意:
    echo.&echo       ① 此破解文件只适用于当前机器;
    echo       ② 当用reg文件破解之后,再运行本程序生成的破解文件将会删除错误的
    echo   键值,请勿在破解之后再次生成破解文件;
    echo.&echo                                                  按任意键退出...
    del /q c:\list.txt
    pause>nul&exit
)
[ Last edited by namejm on 2007-8-3 at 10:27 PM ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-8-3 22:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 2 楼』:  

沙发。

namejm的牛X上了一个境界喽




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-8-4 11:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 3 楼』:  

支持一下!

namejm, 你似乎很久没有来了!!

2007-8-4 11:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 4 楼』:  

又见大牛!



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-8-4 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: