[讨论]ULINK2的固件破解技术讨论帖

起个头,不知道成不成,以及其它相关问题,所以这里只限技术讨论。

转帖---------------

最近网上关于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,也希望有兴趣的朋友在进行此项实验时慎重。进一步研究中。。。

TOP

顶,要做这项工作,估计参与者需要懂一定的上位机编译知识,和下位机的一些汇编代码知识才行。大家加油!

TOP

没有用过ULINK,但还是支持一下

TOP

弱弱的问一句:不是有便宜的J-LINK吗?
还是纯娱乐?
砖家级的水准……

TOP

呵呵,纯技术性的娱乐,呵呵。

支持龙兄弟的ULINK2 DIY活动。

TOP

要是做的话算我一个,虽然我是菜鸟,但是我想学习

TOP

固件代码已经找到了,固件代码的执行地址也知道了。
明天可以测试一下让他直接运行,如果可以的话,再看看他是怎么进行升级的。
只要他能运行,其它的都不成问题了,本人做LPC的芯片还是比较熟悉的,
不会像当初AT的芯片那种郁闷。

TOP

我可以写一段代码,让加JTAG的加密位失效。
这样就可以读出里边的程序了。。。所谓升级也就可以了吧。

TOP

唉、楼主真高人也,像我要什么时候才能有楼主1成功力啊,打击。
砖家级的水准……

TOP

顶楼主

TOP

顶,加油。

TOP

让我们DIY属于自己的OUR-LINK

具体信息请用google搜索

TOP

wenunit: 成功没有?

TOP

原帖由 wenunit 于 2009-1-9 21:39 发表
我可以写一段代码,让加JTAG的加密位失效。
这样就可以读出里边的程序了。。。所谓升级也就可以了吧。

意思是lpc的arm7程序是不安全的?可以读出来?不会吧
PCB --> MCU --> FPGA
MSP430 --> LPC ARM7 --> STM Cortex-M3

TOP

过几天放假了搞吧,现在还没空。。




这个方法在不是用自己的BOOT程序的情况下是无效的,所以ARM7的程序还是安全的。

TOP

搞定了不可升级的版本!

现在是直接在LPC2148的最小系统板上引出JTAG,来测试。

没有使用电平转换等芯片,结果有些不稳定,出现下载和仿真有时会出错。

不过仿真和下载都测试通过了。

可升级版本有难度,不过如果肯下点本,用钓鱼方式读出现成的,倒是有可能。

但不保证,不然我就拿自己的ULINK2开刀了。

[ 本帖最后由 wenunit 于 2009-2-10 22:33 编辑 ]

TOP

如果这个程序经测试没问题的话,

可以DIY做一个山寨版的ULINK2。。。

我可以自己写一个BOOT升级程序来搞定升级。。。

而不使用官方的升级程序。

TOP

不过这样要写一个上位机程序用来支持这个,官方的KEIL肯定是不行的。

接口吗,USB不熟悉,串口倒是可以。


嗨,太土了。

TOP

支持!!!!!!!

TOP

不兼容原版的升级BOOT,好像没有意义.

兼容原版的BOOT,自己来写,几乎不可能,

写个钓鱼程序,看能不能读出原版的BOOT,

有点风险,冲动的时候再试.

TOP

都不知道该说什么好了,强悍!佩服!

我要向你学习!

成为牛人!

TOP

顶,期待成功。

TOP

呵呵

有么新的进展吗?
就此打住吗?

TOP

人生大事,在医院呆了快一星期了。

TOP

喜得贵子?恭喜呀!

TOP

关注!又一个强人

TOP

上两张图,

可能是板不标准,接上 USB-CONNECT 脚后,会不稳定,

这个接直接接地了,就可以正常下载仿真了,

SWD下效果比JTAG模式好,应该是我JTAG没有外接电平转换芯片引起的(只有芯片的最小系统板引脚拉出),
未命名.jpg
未命名1.jpg

TOP

我想,如果不要自动升级功能的话, 这个应该可以了,

自动升级程序如果自己写,可能性很小,

不单单是CRC问题,ULINK2的BOOT是独立的一个程序,

包含了USB接口程序,固件CRC校验,IAP程序烧写,升级标志判断,

以及一些文本数据(版本号等信息),

从上一帖的图可以看到,我这个程序里没有显示BOOT的版本号等信息的。

因为没有真正的BOOT。

ULINK2的这一点和JLINK V8的BOOT程序有点相似。

TOP

找到修改序列号的地方:
未命名.jpg

TOP

Review opelc.org on alexa.com