Перейти к содержанию
    

China-Link, Вариант отладчика из Китая

8 hours ago, dec123ua said:

на habr вышел материал по смене лицензии. :dash2:

Ну вот видимо это и есть тот самый иуда, который подгадил всем владельцам клонов...

Интересно, он хотя-бы получил свои 30 сребреников?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую перезадать вопрос в теме непосредственно отладчиков.

  1. Кто-нибудь работал через Ethernet?  Как добиться одновременного соединения под разные задачи. Например одновременная отладка под дебаггером и segger RTT (передача данных)? Под USB проблем нет.
  2. Искал-искал и не преуспел. :biggrin: Проще спросить.  Каков протокол общения отладчиков JLink, ST-Link с камнями?  Имеется в виду и аппаратный, "физическое кодирование"  (USART?) и логический протокол. Где это расписано? Вопрос не праздный, требуется организовать отладочный разъем и вынос проводников суммарно будет сантиметров 30, а то и все 40. Надо понимать все грабли, что и как "аукнется".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, std said:

Каков протокол общения отладчиков JLink, ST-Link с камнями?  Имеется в виду и аппаратный, "физическое кодирование"  (USART?) и логический протокол. Где это расписано?

Да везде расписано...

Трудно загуглить JTAG и SWD?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочитав статью этого идиота с habr.com, мы попробовали это на практике.

Я взял свой клон. Kлон имеет SN, начинающийся с 26, и все лицензии активированы, а дата компиляции прошивки изменена на 2028.
и запустил его с последней версией J Link v7.62a

J Link не хочет обновлять прошивку, так как по дате считает, что на устройстве она новее, чем в .DLL. Т.е. Он не сделает клона из кирпича.

В окне предупреждение. По крайней мере, теоретически можно было бы использовать, например, IDA Pro, чтобы узнать, куда переходить в данное окно, и вычленить функцию, управляющую совмещением лицензии и серийного номера, путем изменения условий.

Пока не будут внесены существенные изменения в прошивку или Segger не введет лучшее управление типа fw в hw, так что можно будет использовать более новую версию, чем 7.56d и использовать первое время и обновления, вставленные в DLL.

Второй вариант — удалить лицензии и использовать клон как EDU, а лицензию активировать с помощью лицензионных ключей в драйверах. То есть если оригинальные кейгены еще работают

 

JlinkV10.10jpg.jpg.d88e6dadc2e922e3d1fba6ca40098edc.jpg

 

Edit:

 

В JLinkARM.dll V7.62a открывается окно функции sub_100A4640()

861233326_sub_100A4640().thumb.jpg.06b8e4fed9fe000e123d38a10516eddf.jpg

 

Изменено пользователем Berger

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он не сделает клона из кирпича.


Сделайте так ((-8Ж и несчастные обладатели кирпичей вас насмерть зацелуют (((-8Ж

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, Berger said:

Прочитав статью этого идиота с habr.com, мы попробовали это на практике.

можно было и не проверять, он там все верно описал!

Правда очень скомкано, мог бы и глубже копнуть.

Видно еще не очень опытный. Да и уязвимости называет ошибками, хотя ошибками они не являются.

Закрыть эту уязвимость вряд-ли смогут, бутлоадер ведь не обновляется.

Но под-насрать им все-же удалось.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне как владельцу клона, чем это грозит?

Клон российский, с известного многим сайта. Не с али.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, UniSoft сказал:

Правда очень скомкано, мог бы и глубже копнуть.

Видно еще не очень опытный. Да и уязвимости называет ошибками, хотя ошибками они не являются.

Закрыть эту уязвимость вряд-ли смогут, бутлоадер ведь не обновляется.

Но под-насрать им все-же удалось.

 

Подгадить им удалось, это да.

А насчет "не очень опытный" - по видеоролику видно:

1. Сначала подключается отладчик EDU версии с OEM меткой и базовым набором лицензий;

2. Запускается некий скрипт на питоне.

3. И тут-же подключается отладчик с тем-же номером, но уже без OEM метки и с полным набором лицензий.

Получается им удалось найти способ очистить XOTS и при этом не снести загрузчик и прошивку даже не вскрывая отладчика???

Или это фейк, типа сначала подключили оригинал, а потом переткнули кабель в клон (реальной железки на видео не видно)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/27/2022 at 10:11 PM, nibelung said:

3. И тут-же подключается отладчик с тем-же номером, но уже без OEM метки и с полным набором лицензий.

Получается им удалось найти способ очистить XOTS и при этом не снести загрузчик и прошивку даже не вскрывая отладчика???

Так именно это в статье и описывается...

В чем проблема переписать страницу... В общем ничего сложного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня было некоторое время, поэтому я посмотрел JLinkARM.dll V7.62a, так как в прошлый раз, когда мы знаем, окно о версии Pirt показывает функцию sub_100A4640 ().

Сама логика, по которой кусок является или не является пиратской версией, вероятно, находится в функции sub_100AC2D0().

Функции довольно сложные, но условия для сравнения лицензий GDBFull, RDDI, JFlash и RDI видны с первого взгляда, как и переход на LABEL 44 и вызов sub_100A4640, который показывает пиратскую версию.

unsigned int sub_100AC2D0()
{
  unsigned int result; // eax
  int v1; // esi
  int v2; // eax
  int v3; // edx
  int v4; // ecx
  unsigned int v5; // edi
  unsigned int v6; // edx
  unsigned int v7; // ecx
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  unsigned int v12; // esi
  bool v13; // zf
  signed int v14; // eax
  signed int v15; // esi
  char v16; // al
  void *v17; // eax
  void *v18; // eax
  char v19; // [esp+4h] [ebp-5E4h] BYREF
  char v20; // [esp+5h] [ebp-5E3h]
  char v21; // [esp+7h] [ebp-5E1h]
  char v22[4]; // [esp+8h] [ebp-5E0h] BYREF
  int v23[2]; // [esp+Ch] [ebp-5DCh] BYREF
  int v24[4]; // [esp+14h] [ebp-5D4h] BYREF
  int v25; // [esp+24h] [ebp-5C4h] BYREF
  char v26[32]; // [esp+28h] [ebp-5C0h] BYREF
  char Src[32]; // [esp+48h] [ebp-5A0h] BYREF
  char v28[256]; // [esp+68h] [ebp-580h] BYREF
  char v29[256]; // [esp+168h] [ebp-480h] BYREF
  char v30[128]; // [esp+268h] [ebp-380h] BYREF
  int v31; // [esp+2E8h] [ebp-300h] BYREF
  char v32[252]; // [esp+2ECh] [ebp-2FCh] BYREF
  char v33[256]; // [esp+3E8h] [ebp-200h] BYREF
  char v34[256]; // [esp+4E8h] [ebp-100h] BYREF

  memset(&dword_10DFD9E8, 0, 0x104u);
  sub_100A7DB0(v30, 0x80u);
  sub_100B5BB0(v30, &v19);
  if ( (unsigned __int8)sub_100AA1B0(&v31, 0, 0x200u) )
  {
    result = sub_100AA1B0(&v31, 0, 0x100u);
    if ( (_BYTE)result )
      return result;
    memset(v33, 255, sizeof(v33));
  }
  v1 = 0;
  v2 = sub_10124530(&v31);
  v3 = 0;
  v4 = 11111117;
  do
  {
    if ( v2 == v4 )
      goto LABEL_13;
    v4 = dword_1041D998[v3++];
  }
  while ( v4 );
  sub_100AAEE0(v28);
  if ( v28[0] )
  {
    while ( 1 )
    {
      sub_1003EE40();
      if ( !sub_101250C0(v29, "GDBFull", 7) )        // лицензионный тест 
        break;
      if ( !sub_101250C0(v29, "RDDI", 4) )			// лицензионный тест
        goto LABEL_13;
      if ( !v28[0] )
        goto LABEL_14;
    }
    if ( !v21 )
LABEL_13:
      v1 = 1;
  }
LABEL_14:
  v5 = sub_10124530(&v31);
  result = dword_107FFBFC / 0x2710u / 0x64;
  v6 = dword_107FFBFC / 0x2710u % 0x64;
  v7 = v5 / 0x989680;
  if ( v6 != 9 || v5 != 59100192 )
  {
    if ( !v1 )
    {
      v8 = 0;
      if ( (v7 == 26 || v7 == 5 || v7 == 82) && v6 - 9 <= 2 )
        v8 = 1;
      if ( (v7 == 80 && v6 == 1 || (v6 != 9 || v5 != 59100192) && v8) && (sub_100AAEE0(v28), v28[0]) )
      {
        while ( 1 )
        {
          sub_1003EE40();
          v9 = sub_10125170("JFlash");						
          if ( !sub_101250C0(v29, "JFlash", v9) )				// лицензионный тест
            break;
          v10 = sub_10125170("RDI");
          if ( !sub_101250C0(v29, "RDI", v10) )					// лицензионный тест
            break;
          if ( !v28[0] )
            goto LABEL_31;
        }
      }
      else
      {
LABEL_31:
        v11 = 0;
        while ( v33[v11] == -1 )
        {
          if ( ++v11 >= 256 )
          {
            if ( v20 )
              goto LABEL_44;
            goto LABEL_35;
          }
        }
        if ( !sub_100A4D90(58) && v20 )
          goto LABEL_44;
        v14 = sub_100AA270(Src, 32);
        v15 = v14;
        if ( v14 >= 0 )
        {
          v25 = v31;
          memcpy(v26, Src, v14);
          sub_10129FE0(v24);
          sub_1001E2F0();
          sub_10021180();
          if ( !sub_10021140((int)&unk_1041D93C, v22, 4u, (int)&v25, v15 + 4, (int)v33, 256, (int)v24) )
            goto LABEL_44;
        }
LABEL_35:
        result = sub_10124530(v32);
        v12 = result;
        if ( result == -1 )
        {
          v13 = v19 == 0;
        }
        else
        {
          sub_10124530(&v31);
          result = sub_100A45B0();
          v13 = v12 == result;
        }
        if ( v13 )
          return result;
      }
    }
LABEL_44:
    memset(v34, 255, sizeof(v34));
    sub_10124820(v34, 1379029554);
    v16 = sub_1012BDC0();
    sub_10124820(&v34[4], (v16 & 0x3F) + 20);
    sub_10124820(&v34[8], 200);
    sub_100AA370(v34);
    dword_10DFD9E8 = sub_10124530(&v31);
    sub_10124DE0(byte_10DFD9EC, v30, 128);
    sub_100AAEE0(v28);
    sub_10124DE0(byte_10DFDA6C, v28, 128);
    dword_10815088 = (HANDLE)sub_1012C090(0, 0);
    dword_10815090 = (HANDLE)sub_1012C090(0, 0);
    v17 = (void *)sub_1012D310(sub_100A4640, (int)v23, (char *)byte_10154D2D);		// выводит окно с информацией о пиратской версии 
    sub_1012C0E0(v17);
    v18 = (void *)sub_1012D310(sub_100A46D0, (int)v23, (char *)byte_10154D2D);
    return sub_1012C0E0(v18);
  }
  return result;
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сори, если уже было. Вчера получил такое с Ali (1005002901849127).

Продавец изначально мне сказал, что официально обновляется. По факту оказалось не так. Как я понял (толком потестить не успел), серийник у него равен (-1), не обновляется, но и кирпичом не станет.

Теперь продавец говорит, что обновлять не надо, должно итак работать, уточнит ещё у изготовителя.

Контроллер LPC4325 в BGA корпусе.

 

IMG_20220412_163012.jpg

IMG_20220412_163524.jpg

J-Link.png

J-Link2.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После первого включения вышеуказанного JLink обнаружилось следующее. При подключении к USB эмулятора без таргета, светодиод на JLink сразу горит зелёным, будто таргет подключен, а командер показывает наличие напряжения 3.3В. При подключении таргета он на нём оказывается питание 3.3В. Оказалось, контакты 1 и 2 внутри JLink зачем-то соединены, а на контакт 2 подаётся питание с LDO 3.3/5В, выбираемое перемычкой. Пришлось порезать дорожку. После этого таргет, как и должно быть, без подачи питания не включилась от JLink. И командер не показывает наличие Vref без подключения таргета. Однако светодиод на JLink всё равно горит зелёным на JLink без таргета. Где-то ещё косяк...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Dimonira сказал:

При подключении таргета он на нём оказывается питание 3.3В.

J-Link умеет запитывать подключенное устройство. Или запитывать или не запитывать. Через определённый пин. Этим пином можно управлять - конфигурировать через jlink.exe: подавать на него питание или нет. Откройте jlink.exe, попробуйте включить/выключить эту опцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Однако светодиод на JLink всё равно горит зелёным на JLink без таргета.


Всегда так было и на SAM-ICE, и на EDU и на JLINK-obe: отладчик штатно сконнекчен с компом, красный - это неконнект с подключённым устройством.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...