|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
众所周知,IC616在更新ISR9以后,采用原来的补丁会导致程序启动时出现崩溃。最近我花了点时间看了下,大概明白了是怎么回事。
原因是C家现在采用了Vilabs的软件保护系统Code Armor Intelligence(http://www.vilabs.com/product/co ... ware-usage-tracking)。这套系统在原有的flexlm基础上又加了许多许可证检查,主程序完整性,使用情况监控等等功能。而且还有打小报告的功能,如果它觉得你的使用有问题会偷偷通过网络将你的信息报给C家,如果你是个公司的话,很快c家就可以凭这些证据法务部来函让你交钱了。。
但程序崩溃并不是这个系统预先设计的事。直接原因是和谐版使用的许可证不是真正的许可证,缺了好几项东西(SIGN2之类)。Vilabs启动时某处有个strcpy,要拷贝这些信息,但是因为许可证信息残缺,strcpy的source是个空指针,导致程序segfault。
该系统有个特点就是如果检测出程序受跟踪,比如你用gdb或者strace运行virtuoso,他就会停止运行来隐藏自己。目前我的解决办法就是再patch一下,让CAI以为正在受跟踪,从而跳过它那段有问题的检测程序。如果你用的是ISR12 64bit,可以在用hex编辑器打开virtuoso,在offset 0xb1b56f8处开始的五个字节都改成90 90 90 90 90。在我的机器上这样就不会有启动崩溃的问题。希望大家实验一下。 |
|