最近网上关于ULINK2破解炒得很热,其实一直也想研究一下到底是个什么情况'发表点看法。
研究了一下ULINK2,发现固件是由ULINK LOADER和ULINK FIRMWARE组成,这里先将ULINK FIRMWARE成为升级固件吧,其实升级固件是嵌在DLL文件里的,这也是一般的固件自动升级的做法。经过反汇编DLL,很快可以跟到升级固件处,还有升级固件中的升级标志,这里称之为固件版本号吧,还有固件长度,以及固件的校验(放在固件最后的四字节处)。再将升级部分固件从DLL中提取出来后反汇编可以发现,固件的起始偏移地址(实际上是固件在FLASH中的绝对地址)为0x8000,还有一些跳转地址和真正的复位地址信息,没有深入研究。因为对于破解,以上基本上找出了应该知道的信息:固件其始地址,固件长度,固件的版本号,固件的校验,还有部分参考信息(不是必要,但是可以更安全些),其中前三项已经确认,现在的问题就是校验的方式,从DLL中没有找到相应的固件校验信息,可以猜想可能是在ULINK LOADER中进行,这样难度就偏大了些,不过根据DLL中的STRING信息,可以知道ULINK LOADER是很健壮的,有很强的免疫性,所以,即使使用了不合法的“伪固件”,也不会损坏ULINK LOADER,它会直接拒绝,并且会提示固件升级失败信息。
回到前面,我们找出了供破解的大部分重要信息,现在的问题就是找出固件校验的具体算法,根据固件最后的四个字节的,个人猜想很有可能是CRC32,但是不是一般的CRC32算法,为了更具有迷惑性,可能会是使用了初值或者经过其他运算(固定方法)的CRC32。所以,只要能尝试出这个固件校验方法,ULINK2就算是“显出原形”了。
为了避免误导和损害您的利益,最后提示一下,要破解ULINK2,需要有一只功能正常的ULINK2,也希望有兴趣的朋友在进行此项实验时慎重。进一步研究中。。。
用户56297 2008-4-3 16:12