大约一年半载以前,我写了篇《MFC之暴力破解》博文,当时主要的目的是纯技术上的兴趣,刚好拿了一个叫SIMCAP的软件来练手,在接下来的时间里,没想到有很多人问我有没有破解最新的版本,主要是没有时间弄这个哦。
上个周,“等待花开MM”也来询问这件事,哎,看来对这个软件的免费版本需求还是有的,木有办法,就牺牲一个国庆节咯,把SIMCA-13.0 Demo版本给破解了。(感谢“等待花开MM”提供该软件的原始样本。)
=====================================================================
废话不多说,下面正式进入主题:
这个软件的13.0版本和上次11.5版本需要破解的地方仍然没有变,如下:
1. 免费试用时间只有1个月
2. 右键菜单“Save Plot As ...”被禁用
3. 右键菜单“Save List As ...”或者 “Copy Ctrl+C” 被禁用
4. 背景图片中含有”Demo”字样水印版权信息
===========1.安装=================
安装的时候按下面选项安装:
===========2.运行=================
=============3.爆破=================================
这个版本功能虽然和上次一是样的,但是界面是有很大改进的,采用了和office2007一样的Ribbon界面布局,很显然图片菜单的视觉效果远比下拉文字菜单更受欢迎。
另外就是它的软件注册认证方式已经完全不一样了,各种形式的注册号检查,这几天被折腾的满满的都是泪啊,检查了win7检查XP,检查了XP检查虚拟机,完了还要检查网络是否畅通,以便发email注册,注册号的类型还不能错乱,看看吧:
".$MODDE",".$SIMCAP+",".$SQM+",".$SQM",".$SQP+",".$SQP",
".$EZinfo",".$FS",".$MLINK",".$SIMCA",...
这么多的产品类型,数都数不过来,一开始在win7下连Demo版都运行不了,后来才发现这个版本不认识中文路径的文件,保存一次崩溃一次,打开一次崩溃一次,我都快崩溃了,木有办法,又折腾了一天,在win7上装了个WinXP的虚拟机,安装后直接弹出对话框:
哎,当时那个心情啊,拔凉拔凉的,连虚拟机它都能检测出来,尼玛是安了心的不让哥逆向工程了,好吧,就只能从这个地方入手了,先不要关闭这个对话框,在虚拟机上打开ollydbg,然后附加这个进程,然后就是逐个语句的运行和下断点,具体的无聊过程就不说了,首先要找到检查日期的对话框代码,截图如下:
关于软件的注册时间和demo水印背景图片存放的文件路径为:
Win7: C:\Users\All Users\Umetrics\SIMCA\13.0\TimeKey.txt
C:\Users\user\AppData\Roaming\Umetrics\SIMCA\13.0\dd.dll
WinXP: C:\Documents and Settings\All Users\Application Data\Umetrics\SIMCA\13.0\TimeKey.txt
C:\Documents and Settings\user\Application Data\Umetrics\SIMCA\13.0\dd.dll
有兴趣的话可以去研究研究,下面是时间转换的代码:
// // test.cpp // #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> int main( void ) { struct tm newtime; __time64_t long_time; errno_t err; long_time = 0x56343BC6; //2015-10-31 11:55:50 AM // char time_encode[] = ",.%*%(.$*$"; //"1387853979" = 0x52B8F89B = 2013-12-24 10:59:39 AM char time_encode[] = ",))),/%,*,"; //"1444128171" = 0x5613A5AB = 2015-10-06 06:42:51 PM char time_decode[11] = {0}; int len = sizeof(time_encode) / sizeof(char); for(int i = 0; i < len - 1; i++) { time_decode[i] = time_encode[i] ^ 0x1D; //秘钥0x1D ??? } int num = ::atoi(time_decode); printf("time_decode = %s;\nnum = 0x%X\n", time_decode, num); long_time = num; err = _localtime64_s( &newtime, &long_time ); if(err){printf("Invalid argument to _localtime64_s.");return 0;} strftime(str_time,80,"%A, %B %d, %Y\n%Y-%m-%d %I:%M:%S\n",&newtime); printf("%s\n",str_time); return 1; }
不要问我怎么找着那些地方的,也不要问我为什么要改成这样,那些回忆都是满满的负能量。
=========4. 重新运行====================
照着上面的4幅图片修改4个对应的地方,千万要注意这4个地方是在哪个模块的领空,然后利用ollydbg的右键菜单,将修改后的文件保存好,再次提醒,保存完了后,再重新用ollydbg或Ultraedit打开检查一下,确保改正确了没有。有的童鞋做完题就交卷,从不带检查的。
到此处为止,就算是爆破完毕了,把刚才保存的"simca.exe"和"SIMCAutlwin.dll"这两个文件,覆盖到你的安装目录下面,我的安装目录是C:\Program Files (x86)\Umetrics\SIMCA 13.0\Program,然后双击"simca.exe"运行,如果一切顺利的话,你讲会看到下面爽心悦目的画面:
========5.结束语=================
1. 网盘路径:http://pan.baidu.com/s/1E2IFs
2. 该美美的睡上一觉了
------------过客
------------2015.10.07凌晨3点于深圳福田