take command ,软件就不介绍了,简单说就是一个gui的命令行增强,前身是4DOS。
用了好多GUI命令行增强工具,发现用一些命令比如debug命令的时候,不能在gui内部显示,而tc可以完美支持。。。
好用的软件,可惜只有30天试用版,v8以后的版本也找不到破解或者注册的,于是想到了自己破解。。。
唉,我的第一个破解啊,就碰到了这么个东东\。。。
1。按照教程一步一步来,查壳,发现好像没加壳,或者是伪装壳??,先用OD载入试试,可以载入调试,先基本确定无壳。
2。搜索字符串。。。。头大了,什么serious,username。。。。。一个都没有。。。
3。查看名称,晕了,出了一些系统函数之类的,其他都是形如以下:
0040B168 .rdata 输入 TakeCmd.?aGlobals@@3UGLOBAL_VARIABLES@@A
0040B190 .rdata 输入 TakeCmd.?aIniFile@@3UINIFILE@@A
0040B1A0 .rdata 输入 TakeCmd.?AllocDup@@YGPA_WPA_W@Z
0040B1E0 .rdata 输入 TakeCmd.?ConsoleBreakHandler@@YGHK@Z
0040B1DC .rdata 输入 TakeCmd.?_ctoupper@@YAHH@Z
0040B1D0 .rdata 输入 TakeCmd.?DefaultINI@@YAXPA_W@Z
0040B22C .rdata 输入 TakeCmd.?DefineStrings@@YGXXZ
完全看不出来什么东东。。。
4。想到用消息窗口下断...。W开窗口,发现到注册输入序列号时候,窗口都是子进程,不让下断。。用系统TranslateMessage呢,到系统内去了,转的头晕看不懂。。。
5。折腾半天了,看到里面有几个reg之类的,想想用RegSnap。。。。找了一台新机器,快照,比较。。。。新增了160多条记录,运行几次之后再比较。。。发现有几个键值会一直变,但是看不出什么规律,我只能用很笨的方法去一个个修改尝试。。。
6。继续折腾了好久,终于发现在注册表中有一项:
[HKEY_CURRENT_USER\Software\Classes\CLSID\{5147ABAF-AAF1-42D8-8393-67FA1CFEBFF0}]
下面有3个键值:
Control="1858<5:898"
InProcServer32="C:\\WINDOWS\\system32\\kernel32.dll"
Insertable="1858<5:898"
中间一个就不管了,两边的会根据运行的tcc。exe或者tcmd。exe而变化,变化没有什么规律,在试用阶段的1858<5:898,过期之后 1858<5:898 中间的 < 有时候会变成>或者;或者=;
而且如果更改系统时间只要过期一次,就算再改回来也没用;
1858和5:898估计和安装时间或者机器有关,
在试用阶段,1858和5:898两个数会根据试用天数的变化而变化;过期
之后在同一台机器上不会变(不太确定,我试了两台都这样)
7。最后的解决方式:如果过期了,直接删除[HKEY_CURRENT_USER\Software\Classes\CLSID\{5147ABAF-AAF1-42D8-8393-67FA1CFEBFF0}]
连同下面的项目,删除目录中的*。reg文件。tc会重新生成这项,然后又可以用30天了。。。。。
8。后续分析:后来经过查看资源,发现注册的字符串都是封装在IsLicense40.dll这个文件中。
结合反汇编,对注册判断流程的猜想:注册程序和序列号判断程序都封装在IsLicense40.dll中,TC在启动的时候调用IsLicense40.dll来初始化,先检测是否有序列号,有的话转到序列号验证流程,没有则进入日期判断流程,日期符合则跳出提示对话框,点继续试用进行程序,日期不符合则弹出过期提示,退出。。。。
对比免费版的tccle,文件夹里面没有IsLicense40.dll这个文件,基本可以确定这个是注册程序的主要文件,可是后来发现将IsLicense40.dll删除程序还是会正常运行,同样弹出试用或过期提示框。。。搞不懂了。。。
唉,弄了好几天我的第一次破解就这样失败了。。。。
希望论坛上的大牛们能看看这个IsLicense40.dll到底是什么样的。。。。
最后,感谢看雪,一直在这里学东西,没发过帖子,而且新手破解,肯定是漏洞百出,请大家多多指教~~
TC版本:v11,网站:http://jpsoft.com
PS,如果软件什么的涉及版权或者论坛规定之类的请各位提醒~~
[注意]APP应用上架合规检测服务,协助应用顺利上架!