搜索
bottom↓
回复: 245

JLink V9 XX功亏一篑(望抛砖引玉)

  [复制链接]

出0入0汤圆

发表于 2014-10-30 06:06:08 | 显示全部楼层 |阅读模式
本帖最后由 MasterPhi 于 2014-10-30 06:03 编辑

今天D版的JLink V9终于到了,本人在国外,不过UPS还行,不到一星期就到了。

通电试了一下,发现坑得很,不知道是卖家的克隆技术不过关还是segger的保护比较狠,使用JLink Commander 经常出现 Error: Communication timed out: Requested 4 bytes, received 0 bytes,根本不能正常使用。
然后我把板子拆出来把所有焊盘加焊了一遍,还是没有解决。

于是我就想到是不是软件方面的问题,而且网上一搜之前v8也有相似的症状。干脆一不做二不休,看看能不能把flash里面的东西都搞出来。这些D版卖家也不厚道,把程序发出来就没那么多事了。

之前taoist放出了从JlinkARM.dll里面提取固件的工具http://www.amobbs.com/thread-5584993-2-1.html
我就准备以这里为突破点,看一下能不能下载个小木马到固件部分,然后通过它把整个Flash读出来。

首先要确定的是能不能顺利把JlinkARM.dll里面的固件替换成我的程序,如果固件是加密存储的就比较麻烦了。于是我打开了JlinkARM.dll 我了个去。。。程序竟然是明文存储的!!!这样就好办了,直接替换就行。
对应程序起始地址为0x004525d0

于是我就写了个用uart把flash读出来的小程序,正好usart3的tx也就是pb10接着led,直观又不会和其他东西冲突。搞好后给我f407的板子编译了下,工作正常。


至于偏移地址, 我看中断向量表前两行都是0x0802开头的,那应该就是0x08020000了,看起来也正常,从128k处开始程序(悔啊。。。就是这里不小心。。也没多想干嘛一个bootloader要留128k


编译好了,将程序替换到JlinkARM.dll,沉住气,开刷,结果提示错误,大体意思是没有找到日期字符串。
对比原程序后,感觉应该少的是这一块,便调整了linker,把这一区块手动加到了程序里。

再一次更新固件,这一次没有出错,成功刷入了!
但是led没有闪烁,就是说usart3没有数据出来。。。 接usb当然是不会有反应了。。。
难道说我的jlink就这么挂了? 不甘心,我便检查了每个步骤,这时发现怎么原程序里面有几个中断向量是0x0801开头的! 难道偏移是0x08010000?

死马当活马医,用stlink把芯片擦了,然后把源程序下载到0x08010000,然后在0x08000000处理一下让程序一运行就跳到0x08010000


上电,jlink竟然重新识别出来了! 这样就验证了偏移的确是0x08010000。
可是因为擦了flash,什么gdb,jflash等的license都没了。。。成了纯裸机。。。


奇怪的是运行gdb,jflash竟然没问我的license。。。。。

悔啊。。。就一步不小心。。。否则就能造福大家了

一起上传读flash的小程序,给不怕死的坛友

  1. /* Includes ------------------------------------------------------------------*/
  2. #include "stm32f2xx.h"

  3. /** @addtogroup Template_Project
  4. * @{
  5. */
  6. USART_InitTypeDef USART_InitStructure;
  7. GPIO_InitTypeDef GPIO_InitStructure;
  8. /* Private typedef -----------------------------------------------------------*/
  9. /* Private define ------------------------------------------------------------*/
  10. /* Private macro -------------------------------------------------------------*/
  11. /* Private variables ---------------------------------------------------------*/
  12. /* Private function prototypes -----------------------------------------------*/
  13. /* Private functions ---------------------------------------------------------*/
  14. void Send(u8 data);
  15. /**
  16. * @brief  Main program.
  17. * @param  None
  18. * @retval None
  19. */
  20. int main(void)
  21. {
  22.     u8* i;
  23.     /*!< At this stage the microcontroller clock setting is already configured,
  24.     this is done through SystemInit() function which is called from startup
  25.     file (startup_stm32f2xx.s) before to branch to application main.
  26.     To reconfigure the default setting of SystemInit() function, refer to
  27.     system_stm32f2xx.c file
  28.     */  
  29.     /* Enable GPIO clock */
  30.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
  31.     /* Enable UART clock */
  32.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
  33.    
  34.     /* Connect PXx to USARTx_Tx*/
  35.     GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3);
  36.    
  37.     /* Configure USART Tx as alternate function  */
  38.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  39.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  40.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  41.    
  42.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  43.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  44.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  45.    
  46.    
  47.     USART_InitStructure.USART_BaudRate = 19200;
  48.     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  49.     USART_InitStructure.USART_StopBits = USART_StopBits_1;
  50.     USART_InitStructure.USART_Parity = USART_Parity_No;
  51.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  52.     USART_InitStructure.USART_Mode = USART_Mode_Tx;
  53.    
  54.     /* USART configuration */
  55.     USART_Init(USART3, &USART_InitStructure);
  56.    
  57.     /* Enable USART */
  58.     USART_Cmd(USART3, ENABLE);
  59.     /* Add your application code here
  60.     */
  61.    
  62.     /* Infinite loop */
  63.     while (1)
  64.     {
  65.         Send(88u);
  66.         Send(88u);
  67.         Send(88u);
  68.         Send(88u);
  69.         for(i=(u8*)0x08000000;i<(u8*)0x08040000;i++)
  70.         {
  71.             Send(*i);
  72.         }
  73.     }
  74. }

  75. void Send(u8 data)
  76. {
  77.     USART_SendData(USART3, (uint8_t) data);

  78.   /* Loop until the end of transmission */
  79.   while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
  80.   {}
  81. }

  82. #ifdef  USE_FULL_ASSERT

  83. /**
  84. * @brief  Reports the name of the source file and the source line number
  85. *   where the assert_param error has occurred.
  86. * @param  file: pointer to the source file name
  87. * @param  line: assert_param error line source number
  88. * @retval None
  89. */
  90. void assert_failed(uint8_t* file, uint32_t line)
  91. {
  92.     /* User can add his own implementation to report the file name and line number,
  93.     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  94.    
  95.     /* Infinite loop */
  96.     while (1)
  97.     {
  98.     }
  99. }
  100. #endif

  101. /**
  102. * @}
  103. */


  104. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-10-30 06:27:34 | 显示全部楼层
高手呀,佩服。

出0入0汤圆

发表于 2014-10-30 06:45:09 | 显示全部楼层
高手呀,佩服。

出0入0汤圆

发表于 2014-10-30 07:03:07 | 显示全部楼层
不错 不错收藏

出0入0汤圆

发表于 2014-10-30 07:03:43 | 显示全部楼层
让国内的兄弟给你重新传一个,应该不难吧

出0入0汤圆

发表于 2014-10-30 07:04:48 来自手机 | 显示全部楼层
不明觉丽,膜拜,

出0入0汤圆

 楼主| 发表于 2014-10-30 07:21:21 | 显示全部楼层
我离高手还远呢。。。还在上学(相当于国内研究生)

出0入0汤圆

发表于 2014-10-30 07:23:25 | 显示全部楼层
V9难道很快就可以服务大众了?

出0入0汤圆

发表于 2014-10-30 07:25:44 | 显示全部楼层
真是不明觉厉,支持楼主。

出0入12汤圆

发表于 2014-10-30 07:30:24 | 显示全部楼层
折成美元是小钱。

出0入0汤圆

发表于 2014-10-30 07:32:19 | 显示全部楼层
高手呀,佩服

出0入0汤圆

发表于 2014-10-30 07:36:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-30 07:41:24 来自手机 | 显示全部楼层
jlink没锁调试口啊

出0入0汤圆

发表于 2014-10-30 07:44:29 | 显示全部楼层
厉害呀,佩服。

出0入0汤圆

发表于 2014-10-30 07:52:55 | 显示全部楼层
果然不错,坐等d版普及。

出0入0汤圆

 楼主| 发表于 2014-10-30 07:53:09 | 显示全部楼层
myxiaonia 发表于 2014-10-30 07:41
jlink没锁调试口啊

你手上的没锁?那分享一下吧
我这个要是没锁就不用折腾了。。。。。

出0入0汤圆

发表于 2014-10-30 07:53:52 | 显示全部楼层
jlink v8 掉FW让人头痛。。。想想大家不用升级方式,直接提取代码烧到FLASH里好了。。。反正也不频繁去升FW...   这样的V9应该也有人要,不一定非要在线UPDATE啊

出0入0汤圆

发表于 2014-10-30 07:55:05 来自手机 | 显示全部楼层
向楼主学学习

出0入0汤圆

发表于 2014-10-30 07:58:53 | 显示全部楼层
佩服高手呀

出0入0汤圆

发表于 2014-10-30 08:04:09 | 显示全部楼层
这个太高端了!

出0入0汤圆

发表于 2014-10-30 08:08:04 | 显示全部楼层
mark之                        

出0入0汤圆

发表于 2014-10-30 08:08:54 | 显示全部楼层
只支持楼主                        

出0入0汤圆

发表于 2014-10-30 08:09:55 | 显示全部楼层
不错,关注中

出0入0汤圆

发表于 2014-10-30 08:15:02 | 显示全部楼层
楼主差点就把boot搞出来了

出10入95汤圆

发表于 2014-10-30 08:21:34 | 显示全部楼层

出0入0汤圆

发表于 2014-10-30 08:23:09 | 显示全部楼层
MasterPhi 发表于 2014-10-30 07:53
你手上的没锁?那分享一下吧
我这个要是没锁就不用折腾了。。。。。 ...

其实开放调试口也没用,既不能读也不能写

你下载程序是用固件自带升级功能写入的哦,其实你可以利用cm系列一开始的复位中断中插入一段木马代码,读出整个flash。。。

不要完整的一个工程替换

出0入0汤圆

发表于 2014-10-30 08:34:05 | 显示全部楼层
牛人一个啊。

出0入0汤圆

发表于 2014-10-30 08:50:28 | 显示全部楼层
屌炸天,,,看看楼主进一步怎么弄

出0入0汤圆

发表于 2014-10-30 08:51:33 | 显示全部楼层
看了V9破解指日可待啊,支持一下

出0入22汤圆

发表于 2014-10-30 09:05:18 | 显示全部楼层
没看明白,LZ已经从dll里面拿到V9的bin了后面自己用stlink也写进去正常识别的,莫非LZ想要的是V9的bootloader?
自己用stlink写进去那个既然能运行那不就ok了吗,v8可以改任意SN,v9不行?

出0入0汤圆

发表于 2014-10-30 09:15:32 | 显示全部楼层
命令行方式可以输入 license 查看一下v8的 试试行不行

出0入8汤圆

发表于 2014-10-30 09:19:57 | 显示全部楼层
这个得慢慢来~先观望

出0入0汤圆

发表于 2014-10-30 09:28:24 | 显示全部楼层
牛人一个

出0入0汤圆

发表于 2014-10-30 09:37:16 | 显示全部楼层
牛人一个

出0入0汤圆

发表于 2014-10-30 09:44:52 | 显示全部楼层
牛,我等也只能坐得成品

出0入0汤圆

发表于 2014-10-30 10:12:48 | 显示全部楼层
膜拜 学习

出0入0汤圆

发表于 2014-10-30 10:17:31 | 显示全部楼层
指日可待了

出0入0汤圆

发表于 2014-10-30 10:59:57 | 显示全部楼层
等造福人类的下载器出现。

出0入0汤圆

发表于 2014-10-30 11:09:21 | 显示全部楼层
期待成品

出0入8汤圆

发表于 2014-10-30 11:16:24 | 显示全部楼层
厉害!~~~~  

出0入0汤圆

发表于 2014-10-30 11:18:13 | 显示全部楼层
想法不错,让JLINK导入自己的程序,把原版Bootload程序吐出来!
不知道可行么?

出0入0汤圆

发表于 2014-10-30 11:23:01 | 显示全部楼层
开始有苗头了,楼主加油啊,呵呵

出0入0汤圆

发表于 2014-10-30 11:28:45 | 显示全部楼层
期待啊!
楼主的Jlink可以通过命令行输入一个SN号,继续使用的,没有成砖。

出0入0汤圆

发表于 2014-10-30 13:23:40 | 显示全部楼层
顶顶..............支持

出0入0汤圆

发表于 2014-10-30 13:46:33 | 显示全部楼层
不知道楼主在国外是干啥的?呵呵

出0入0汤圆

发表于 2014-10-30 13:52:55 | 显示全部楼层
Jlink还是值得研究的。

出0入0汤圆

发表于 2014-10-30 14:07:21 | 显示全部楼层
高手贴顶一下,这种解读固件的牛人一直很佩服。

出0入0汤圆

发表于 2014-10-30 15:10:34 | 显示全部楼层
你的jlink现在没有license,照样运用自如吗?这样的话不是很爽啊哈哈哈

出0入0汤圆

发表于 2014-10-30 15:11:13 | 显示全部楼层
你的jlink现在没有license照样能下载程序吗,如果这样不是更爽啊哈哈哈

出0入0汤圆

发表于 2014-10-30 15:17:52 | 显示全部楼层
期待稳定版,

出0入0汤圆

发表于 2014-10-30 15:20:48 | 显示全部楼层
不错,后面应该会有稳定的

出0入0汤圆

发表于 2014-10-30 15:31:19 | 显示全部楼层
我只是来看看的!

出0入0汤圆

发表于 2014-10-30 15:37:36 | 显示全部楼层
yondyanyu 发表于 2014-10-30 11:18
想法不错,让JLINK导入自己的程序,把原版Bootload程序吐出来!
不知道可行么? ...

里边肯定有保护机制吧,,,不然早有人这么干了

出5入8汤圆

发表于 2014-10-30 15:46:54 | 显示全部楼层
高手  分析透彻

出0入0汤圆

发表于 2014-10-30 16:23:52 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-10-30 16:59:27 | 显示全部楼层
不明觉厉!支持lz

出0入0汤圆

发表于 2014-10-30 17:05:35 | 显示全部楼层
厉害 我等只会等大神

出0入0汤圆

 楼主| 发表于 2014-10-30 17:19:00 | 显示全部楼层
myxiaonia 发表于 2014-10-30 08:23
其实开放调试口也没用,既不能读也不能写

你下载程序是用固件自带升级功能写入的哦,其实你可以利用cm系 ...

这个想法好。。。然后用keil编译成position independent code,这样就不用关心写到哪里了

出0入0汤圆

 楼主| 发表于 2014-10-30 17:20:04 | 显示全部楼层
jiaowoxiaolu 发表于 2014-10-30 09:05
没看明白,LZ已经从dll里面拿到V9的bin了后面自己用stlink也写进去正常识别的,莫非LZ想要的是V9的bootload ...

要的就是bootloader还有存放license的区段,程序都有了

出0入0汤圆

 楼主| 发表于 2014-10-30 17:38:50 | 显示全部楼层
myxiaonia 发表于 2014-10-30 15:11
你的jlink现在没有license照样能下载程序吗,如果这样不是更爽啊哈哈哈

还真能。。。一点不影响。。。。而且没有license一样用。。。

出0入0汤圆

发表于 2014-10-30 18:35:16 | 显示全部楼层

出0入0汤圆

发表于 2014-10-30 18:35:34 | 显示全部楼层
我了个去,大神。。。。

出0入0汤圆

发表于 2014-10-30 18:39:13 | 显示全部楼层

厉害,难道flash的程序没有校验

出0入0汤圆

发表于 2014-10-30 20:59:15 | 显示全部楼层
赞赞赞,厉害

出20入118汤圆

发表于 2014-10-30 22:24:10 | 显示全部楼层
目测 9 快要攻破了

出0入0汤圆

发表于 2014-10-30 22:37:17 | 显示全部楼层
高手在民间啊

出0入0汤圆

发表于 2014-10-30 22:42:20 | 显示全部楼层
本帖最后由 shangdawei 于 2014-10-30 22:56 编辑



个人愚见,你的代码未必就下载到MCU了
DLL的固件用CRC32校验的, 需要分析 DLL 找到算法, 才能把木马下进去, 不知道是否是这样 ?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-30 22:53:30 | 显示全部楼层
LZ很厉害!!

出0入0汤圆

发表于 2014-10-31 00:12:25 来自手机 | 显示全部楼层
shangdawei 发表于 2014-10-30 22:42
个人愚见,你的代码未必就下载到MCU了
DLL的固件用CRC32校验的, 需要分析 DLL 找到算法, 才能把木马下进去 ...

虽然没加密,但是有校验是这样吗,那确定?

出0入0汤圆

发表于 2014-10-31 00:23:43 | 显示全部楼层
myxiaonia 发表于 2014-10-31 00:12
虽然没加密,但是有校验是这样吗,那确定?

分析 DLL 文件, 可能会有一下问题导致无法升级

EMU_GetFirmwareString: Insufficient data read.
EMU_GetFirmwareString: J-Link reports unsupported firmware string size of %d (expected %d)
EMU_GetFirmwareString: Insufficient data read when trying to read the string length.
Could not identify firmware (Read failure)
Could not identify firmware (Identification string has length of 0)
Could not identify firmware (Identification string exceeds maximum length)
Unknown firmware string: %s
Firmware size in DLL exceeds maximum firmware size allowed for the connected debug probe.
Crc is 0. This value is not permitted.

出0入0汤圆

 楼主| 发表于 2014-10-31 06:16:53 | 显示全部楼层
shangdawei 发表于 2014-10-30 22:42
个人愚见,你的代码未必就下载到MCU了
DLL的固件用CRC32校验的, 需要分析 DLL 找到算法, 才能把木马下进去 ...

我认为应该是下进去了,否则应该会提示出错,而且下载之后jlink也确实不能用了

出0入0汤圆

发表于 2014-10-31 07:43:26 | 显示全部楼层
MasterPhi 发表于 2014-10-31 06:16
我认为应该是下进去了,否则应该会提示出错,而且下载之后jlink也确实不能用了 ...

能否共享一下修改了复位跳转地址的固件?谢谢。

出0入0汤圆

发表于 2014-10-31 08:09:30 | 显示全部楼层
我觉得可以先用v8试试这种修改的固件能不能下载。固件的校验方法应该和v9一样。

出0入0汤圆

发表于 2014-10-31 08:15:45 | 显示全部楼层
高手         

出0入0汤圆

发表于 2014-10-31 09:38:20 | 显示全部楼层
niubi

出0入0汤圆

发表于 2014-10-31 09:46:49 | 显示全部楼层
值得学习!!!

出0入0汤圆

发表于 2014-10-31 10:04:06 | 显示全部楼层
V9要造福国内了吗? 哈哈

出0入0汤圆

发表于 2014-10-31 13:31:58 | 显示全部楼层
好方法。。。可惜没法试

出0入0汤圆

发表于 2014-10-31 13:51:09 | 显示全部楼层
膜拜高手

出0入0汤圆

发表于 2014-10-31 14:18:59 | 显示全部楼层
高人啊,不过D版的V9 也不便宜吧

出0入0汤圆

发表于 2014-10-31 21:34:28 | 显示全部楼层
感觉好牛逼的样子

出0入0汤圆

发表于 2014-11-1 22:16:54 | 显示全部楼层
不错 不错收藏

出0入0汤圆

发表于 2014-11-2 16:12:53 | 显示全部楼层
感谢,就是需要楼主这种"不怕死"的精神才能造福大伙啊:-)

出0入0汤圆

发表于 2014-11-2 16:31:17 | 显示全部楼层
高手呀,佩服。

出0入0汤圆

发表于 2014-11-2 16:41:43 | 显示全部楼层
期待早点造福大家

出0入0汤圆

发表于 2014-11-2 18:09:40 | 显示全部楼层
牛人一个

出0入0汤圆

发表于 2014-11-2 18:11:34 | 显示全部楼层
高手。。

出0入0汤圆

发表于 2014-11-2 18:28:58 | 显示全部楼层
牛逼啊。。

出0入17汤圆

发表于 2014-11-2 19:01:17 | 显示全部楼层
不明觉历···!

出0入0汤圆

发表于 2014-11-2 19:05:42 | 显示全部楼层
有机会我也试试

出0入0汤圆

发表于 2014-11-2 19:18:22 | 显示全部楼层
牛人啊,为D事件作出了贡献

出0入0汤圆

 楼主| 发表于 2014-11-2 20:15:55 | 显示全部楼层
AVRTDK 发表于 2014-10-31 07:43
能否共享一下修改了复位跳转地址的固件?谢谢。

你确定要刷?我觉得还是像坛友说的拿v8试一下比较保险

出0入0汤圆

发表于 2014-11-2 21:40:22 | 显示全部楼层
关注,手上有v8

出0入0汤圆

发表于 2014-11-2 21:54:32 | 显示全部楼层
呵呵,不要太小看Se99er哦。。。

出0入0汤圆

发表于 2014-11-3 07:56:36 | 显示全部楼层
JLINK V9现在还是略贵,不知道相对于V8有什么特别大的改进

出0入0汤圆

发表于 2014-11-3 08:36:30 | 显示全部楼层
taoist 发表于 2014-11-2 21:54
呵呵,不要太小看Se99er哦。。。

是不是有很多隐秘的防破解思路在里面哦

出0入0汤圆

发表于 2014-11-3 08:47:54 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2014-11-3 10:48:32 | 显示全部楼层
高端高端

出0入0汤圆

发表于 2014-11-3 11:01:17 | 显示全部楼层
厉害                                    

出0入0汤圆

发表于 2014-11-3 16:50:11 | 显示全部楼层
楼主真牛,虽然没成功
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 11:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表