再谈AMESim V7.0a 的破解(含Simulink、Adams等所有接口、联合仿真的破解) 1、license 校验的进一步破解 通过前文的破解,AMESim 可以正常运行,在加载PlanarMechanical 目录下的Demo 时也不会报license 错误(Shooters提供的license 缺少planar_mechanical_assistant模块)。但如文章最后所述,这种破解的方法有一定的不稳定因素,比如此时将 license 文件删除或改名,则 AMESim 启动时会有一空白警告跳出来。经过近几天的摸索,目前已找到一种比前面的方法要完善的破解方法。 通过分析,可以发现AMESim 主程序模块许可的校验关键处在734FA0处(OD 中下ReadFile 断点,断下后Alt+F9 返回主程序领空,不停按Ctrl+F9,并在返回处下断寻找各个模块许可校验时共同调用的函数,经过数次后可发现该处),因此,可通过修改正确模块的license 为错误,查看返回值的不同来确定关键跳转处,经过层层深入的排查方式,最终找到了关键处: 007359E8:test eax,eax 007359EA:jnz short 007359F1 发现将007359EA 处改为jmp short 007359F1后,即使license 文件中的模块密码不正确程序仍然认为其为正确。因此用Ultra Edit 打开AMESim.exe,按Ctrl+G组合键,输入地址0x3359EA,将从3359EA 开始的75 改EB即破解完毕。之后打开license.dat 文件,任意复制其中的一个模块license,粘贴后将模块名改为planar_mechanical_assistant,再启动加载PlanarMechanical 目录下的Demo,就不会报错了。 2、接口 license 的破解 有了上面的破解,理论上只要知道接口的Feature 名称,然后填入到license 文件中就能实现接口的可见,但Feature 名称(即类似于上面提到的planar_mechanical_assistant 这个字符串)不易获得,我试了下直接Simulink 和Adams 是可以的,但填入SimuCosim后,该接口仍然不可见。因此还是需要进一步破解。方法仍然类似,有了前面的734FA0 断点,通过比较正确与错误 license 的返回值及后面的跳转来寻找爆破点。由于Shooters提供的license 文件中discrete 接口可用,这为快速找到关键点节省了很多时间(需注意的是包含库的Feature 和单独接口的Feature 校验方法并不同,本文略过)。最终找到如下处: 0048DA40:cmp dword ptr [ebp-C],0 0048DA44:je short 0048DA78 将 0048DA44 处改为nop,即可实现加载所有接口。因此用 Ultra Edit 打开 AMESim.exe,按Ctrl+G 组合键,输入地址0x8DA44,将...