http://blog.csdn.net/tpu/article/details/6028753
近日由于我的古老的XP系统越来越慢,所以就安装了一个全新的windows7系统。不能老在XP上吊死吧。
系统装好后,照例是一大堆软件的重装,好麻烦。Tornado是必装的软件。我的系统上有PowerPC和ARM两个版本。首先把PPC版本的直接复制到Win7环境下,恢复注册表等东西,然后运行,居然通过了。于是我想,ARM版本应该也一样吧。继续复制,运行,挂掉了:(
那就折腾吧。找了各种license,设置不同的环境变量。但都不管用,启动依然显示"license failed"。没办法了,把tornado.exe拖进IDA分析吧。在字符串窗口找到"Licensing Failed",再跳转到反汇编窗口,很容易就发现这些指令:
.text:00438333 push 1
.text:00438335 push offset a2_2 ; "2.2"
.text:0043833A push offset aTornado2 ; "tornado2"
.text:0043833F call _flexlmAuthorize
.text:00438344 add esp, 0Ch
.text:00438347 test eax, eax
.text:00438349 jnz loc_438615
......
......
.text:00438615 loc_438615:
.text:00438615 mov eax, dword_4B11C8
.text:0043861A push offset aLicensingFaile ; "Licensing Failed"
.text:0043861F push eax ; struct Tcl_Interp *
.text:00438620 call CSplashWnd__ModelessStatusWindowTextUpdate
.text:00438625 add esp, 8
很明显,tornado.exe先调用_flexlmAuthorize,然后判断返回值。非0就是失败,显示"Licensing Failed"。于是把test eax eax改为xor eax eax,再运行,顺利进入主界面了。
具体的修改:用16进制编辑器,查找"85 c0 0f 85 c6 02 00 00",把第一个85改为33。
由此可见,破解软件的license限制还是挺容易的,大家再遇到这类问题可以亲自试一下。