MOLPRO 2012 for linux x86_64的破解
来源:互联网 发布:中财网数据引擎 编辑:程序博客网 时间:2024/06/05 05:08
弄到了MOLPRO 2012的源代码,但是手头只有某个低版本MOLPRO的license。只好试试破解了。
事先已经编译好了MOLPRO 2012,系统为linux x86_64。以下是分析过程。
1. 首先,用伪造的license运行MOLPRO计算,运行脚本run.sh的内容为
#!/bin/bash
export HOME=/home/communix/Molpro2012/
export PATH=/home/communix/Molpro2012/bin:$PATH
export MOLPRO_KEY='id=abcdef,date=:2038/01/01,version=:2012,mpp=32767,modules=mpp,password=1m00d0b73be021&7BLlzSaeV5cg5mM4'
export MOLPRO_OPTIONS='-W /home/communix/wfu -d /scratch/communix/molpro/'
export OPAL_PREFIX=/usr/local/openmpi-1.4.1-GNU/
export LD_LIBRARY_PATH=/usr/local/openmpi-1.4.1-GNU/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/openmpi-1.4.1-GNU/bin/:$PATH
molpro -n 2 -s --no-xml-output 01.inp
其中,01.inp是MOLPRO输入文件,可以自己准备,越简单越好。 在MOLPRO_KEY变量中定义了许可,是根据旧版本license伪造的:
id是用户名,可以随便写;
date是有效期,作为演示这里没写的太大,否则还需要破解时间限制(其实更简单,这里不讨论);
version是主版本号,正准备用的当然是2012版;
mpp和mpp大概和并行有关,没有动;
最重要的是password,是前面这些信息加密后得到的一段字符串。因为不知道加密算法(本文也不打算做完美破解),这段密文不能随便改,否则不能翻译回去。所以仍然保留了旧版的password。
前面伪造的明文和后面的密文不匹配,所以计算是不可能进行的。一运行立刻出错了,得到错误信息:
!LICENCE! (2) Invalid password on licence token
2. 因为有源代码,所以无需分析MOLPRO可执行程序。检查license的源代码不可能提供,只有目标文件,位于src/parse/下,根据计算机系统,应当是parse-Linux-x86_64-i8.o。为了验证,用UE打开此文件,在文本模式下果然能搜到上面的出错信息,而且只有一处。
3. 用idaq64.exe打开目标文件,找到以上出错信息(极快),再往前直接就看到跳跃的入口:
jz short loc_AA7D
表示license的明文密文相符就跳跃(很可能跳到正常计算),否则进行下一步(打印出错信息)。对应的二进制码为
7433488B0573520000488B004889C248
为了便于搜索,上面还给出了后面的一些二进制码。破解方法是把单字节相等判断jz(74)改为单字节的无条件跳跃jmp(EB)。
4. 用UE打开目标文件,搜索上面的二进制码。奇怪,搜不到!通过比较IDA和UE下的二进制码,发现二进制码在7433488B05之后出现不同,可能是未分配。可以推测,这段二进制码在molpro二进制程序中也应当存在。
5. 把molpro.exe下载到windows本机,用UE打开molpro.exe,搜索7433488B05,有多处,实际上只修改前两处就可以了。把74改为EB并保存。
6. 把改过的molpro.exe上传到linux计算服务器,覆盖原文件。注意正确的权限和属性。
7. 重新运行脚本run.sh,已经能算了。
8. 一劳永逸的办法是修改src/parse/下的目标文件parse-Linux-x86_64-i8.o,改法参见上面的第5步,只有一处修改。然后重新编译molpro。
- MOLPRO 2012 for linux x86_64的破解
- TURBOMOLE 6.5 for Linux x86_64 demo版的破解
- TURBOMOLE 6.5 for Windows x86_64 demo版的破解
- Oracle11g for linux x86_64
- Molpro 2012 介绍
- TOMCAT 6.0 安装 APR for linux x86_64
- Linux System Call Table for x86_64
- UltraEdit for Linux 破解
- navicat for Linux 破解
- Linux x86_64 的TLB管理
- Linux的i386/i686/x86_64
- UltraEdit for Linux keygen/破解
- Navicat for Linux破解方式
- smartsvn 8.6.6 for linux 的安装与破解
- Wing IDE for Linux 的安装和破解
- LINUX下Navicat for MySQL的安装和破解
- Wing IDE for Linux 的安装和破解
- 如何破解mssql for linux 3.5G内存的限制
- 回调函数
- DataTables基本搭建攻略(后台分页)
- Robin广场舞案例实践分析之深入思考
- 冒泡排序
- laptop ad-hoc setup by rt-wmp
- MOLPRO 2012 for linux x86_64的破解
- 2013一些SEO经验总结
- 安卓开发21:深入理解Handler
- 随机数生成
- C#中对字符串的操作
- 网络字节序
- 日期计算第几天
- Android-onInterceptTouchEvent()和onTouchEvent()总结
- linux下的http服务器