手把手教你通过反汇编破解MATLAB

Maltab 2014b 发布了,但是只有Windows的破解,木有Linux的破解版。于是,参考2014a的破解方法,我手动尝试破解2014b。
安装的过程在此略去,无非是替换几个java包绕开序列号限制。我们把重点放在安装之后的激活破解上。
第一步当然是反汇编。网上提供的2014a版本地破解文件中最重要的当然是libmwservices.so 这个文件。首先,我们必须明白,原版的libmwservices.so和破解版的到底区别在哪里。由于是Linux系统,我们使用objdump对MATLAB2014a的两个版本的文件(原版和破解版)分别进行反汇编。进行比较之后,我们发现这两个文件有两处不同。
第一处不同位于l_prikey_sign函数入口处,第一张是破解版的反汇编截图,第二张是原版的反汇编截图。
http://fmn.rrimg.com/fmn065/20141113/2005/original_nyfF_5d1800015acb125f.jpg
http://fmn.rrimg.com/fmn063/20141113/2005/original_eoZ2_1fff00002c4e125d.jpg
第二处不同位于l_pubkey_verify函数入口处,下图中第一张是破解版的反汇编截图,第二张是原版的反汇编截图。
http://fmn.rrimg.com/fmn062/20141113/2010/original_YhZn_48a900020611118c.jpg
http://fmn.rrimg.com/fmn056/20141113/2010/original_QfqZ_0d11000154f7118f.jpg
我们可以清晰地看到,破解采用了“爆破”手段,直接将函数的返回变量(保存于eax寄存器中)置0,然后直接返回。于是,我们反汇编Matlab 2014b的libmwservices.so文件,定位l_pubkey_verify和l_prikey_sign函数的地址偏移分别位于:286aa0和2de660处。值得一提的是,这里我们不能直接通过修改反汇编代码然后再次编译得到破解版文件,而是必须直接修改二进制数据。
我们通过hexedit修改相应位置处的三个bytes(下面是pubkey函数处的例子,另一个函数完全相同):
http://fmn.rrimg.com/fmn061/20141113/2015/original_VmWB_5d8d00015b89125f.jpg
将原本的41 57 49 改为31 c0 c3
这样,我们就完成了对Matlab的破解。
来源网络: 潘楚中