Toyota TechStream генератор ключей

Потные ладошки потирая, я взялся за течстрим (Techstream). Он мне нужен на моем ноуте чтоб тыкать провода в бездушную железку.

Поставил течстрим 11.хххх, но он уже не дает работать в "демо" режиме как позволял работать во всех, кажется версиях, до 10 включительно. Ключи на софт раздает пара человек, нахаляву, но чтоб их получить нужно регаться на форумах околоавтомобильных и выпрашивать их стоя на коленях, причем проявляя строго дозированное количество пафоса в сообщениях. Иначе не снизойдет.

Вообще, если смотреть на бинарники течстрима версии до 10 включительно (все интересное с ключами происходит внутри MainMenu.exe) сквозь мутные линзы дизассемблера, то там все очевидно. Код хорошо читается, но сильно размазан. В 11й версии тойота и обладатель новенького авенсиса (пароль на некоторые строки внутри самого течстрима, которые декриптятся на лету - MyNewAvensisIsWonderful

minipic

) решили защитить бинарники каким-то хитрожопым (может даже самопальным) протектором. Протектор защищает от внезапного аттача отладчиком, от создания удаленных потоков, от дампа с помощью некоторых утилит. Причем течстрим запускается сам, потом запускает еще одного себя, этот второй течстрим выступает в роли отладчика и наверное делает какойто трейс для исходго процесса. В детали не вникал, не особо интересно. Откинув дебаггер процессхакером можно спокойно снять дамп, хотя приаттачившись своим дебаггером по прежнему наблюдаю как процесс в панике завершается. Сняв дамп я увидел что по большому счету функции проверок ключей если и были изменены то совсем немного. А значит, нагавнокодив генератор для 10й версии я вполне в теории заимею и 11й. Реверсинжениринг был недолгий, так как спасибо Ильфаку.

Сам ключ непременно должен состоять из 46 символов и это жестко зашито в функционал его проверки.

minipic

С символа 0 - 32 идут байты ключа (особо не разбирался, может это просто МД5 от соленой строки аппаратного айди машины). Дальше 4 символа на кол-во дней которые ограничивают срок действия ключа. На форумах везде предлагают максимум 5000 дней, но течстрим хавает и 9999 дней, но после перезагрузки всеравно показывает 5000 дней :). Дальше дата в формате год\месяц\число, когда сгенерирован ключ. Все это проверяется на факт того чтоб ключ не был протухший, чтоб везде были непременно числовые значения и все такое :

minipic

Где написано "тут интересно" - там интересное. :)) Функа генерит айди ключа и сравнивает его с тем, что ввел юзер в форме регистрации. Совпадает - ок. Не совпадает - не ок. Все, как видно, илиментарно. Что мы делаем? Сигнатурно в памяти ищем этот вызов, после него суем джамп в наш код, где извлекаем из стека сгенерированный кей и показываем его юзеру, чтоб тот его скопировал и... ввел!

DWORD dwOldFunctionAddress = 0;

VOID
WINAPI
DisplayNaturalKey(PCHAR EnteredKey, PCHAR GeneratedKey){
 CHAR NaturalKey[MAX_PATH] = { 0 };
 StrCpyA(NaturalKey, GeneratedKey);
 StrCatA(NaturalKey, "50001511030836");
 if (StrCmpIA(EnteredKey, GeneratedKey)){
  DisplayMyMessage(0, 0, NaturalKey);
 }
}

__declspec(naked)
VOID
HwGeneratorHook(){
 _asm{
  lea     eax, dword ptr [ebp - 0x898]
  mov     ecx, dword ptr[ebp - 0x14]
  pusha
  push    eax
  push    ecx
  call DisplayNaturalKey
  popa
  mov     ecx, dword ptr[ebp - 0x14]
  lea     eax, dword ptr[ebp - 0x898]
  mov  esi, dwOldFunctionAddress
  jmp  esi
 }
}

Да, костыли, ассемблер, гавнокод, все вот это. Для этого накодил небольшую длл, которая инжектится в MainMenu.exe стартером (нашим небольшим ехе) и все. Ехе просто инжектирует длл в течстрим, за исключением того что для 11й версии нужно отключить "дебаггер", для этого я взял функу из кода процессхакера.

FORCEINLINE
ULONG
PhGetProcessDebugObject(
 HANDLE ProcessHandle,
 PHANDLE DebugObjectHandle
)
{
 _NtQueryInformationProcess NtQueryInformationProcess =
  (_NtQueryInformationProcess)GetProcAddress(
   GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");

#define ProcessDebugObjectHandle (30)
 return NtQueryInformationProcess(
  ProcessHandle,
  ProcessDebugObjectHandle,
  DebugObjectHandle,
  sizeof(HANDLE),
  NULL
 );
}

BOOLEAN 
WINAPI
PhUiDetachFromDebuggerProcess(
 HANDLE hProcess
)
{
 HANDLE debugObjectHandle;

 _NtSetInformationDebugObject NtSetInformationDebugObject = 
  (_NtSetInformationDebugObject)GetProcAddress(
  GetModuleHandleA("ntdll.dll"), "NtSetInformationDebugObject");

 _NtRemoveProcessDebug NtRemoveProcessDebug =
  (_NtRemoveProcessDebug)GetProcAddress(
  GetModuleHandleA("ntdll.dll"), "NtRemoveProcessDebug");

 if (PhGetProcessDebugObject(
  hProcess,
  &debugObjectHandle
  ) == ERROR_SUCCESS)
 {

  ULONG flags;

  flags = 0;

  NtSetInformationDebugObject(
   debugObjectHandle,
   DebugObjectFlags,
   &flags,
   sizeof(ULONG),
   NULL
  );

  NtRemoveProcessDebug(hProcess, debugObjectHandle);

  CloseHandle(debugObjectHandle);
 }

 return TRUE;
}
/* копирайты соблюдены все дела, душа спокойна */

Как использовать. Довольно просто. Копируете длл и ехе в папку с MainMenu.exe, запускаете Starter.exe и если видите сообщение о том что все ок ("Code patched, try register"), пробуете зарегистрироваться. Течстрим попросит ввести ключ, вводите заведомо нверный, например

0000000000000000000000000000000050001511030836

и нажимаете ОК. В этот момент течстрим генерит верный ключ, мой код его перехватывает и показывает вам чтоб вы его скопировали и вставили и уже на него течстрим даст добро. После успешной регистрации запускать течстрим можно как обычно, без использования стартера.

Мой метод хорош тем что я не порчу оригинальные файлы течстрима, что работает так же софт обновления прошивок, что ключ легален.

Скомпилированные файлы (RAR, пароль такойже как у чувака с авенсисом) и исходные коды тут : https://drive.google.com/folderview?id=0BwEpHfeP-hWDbGo4Q3BTYnR3WE0&usp=drive_web Для работы необходим рантайм https://www.microsoft.com/ru-RU/download/details.aspx?id=40784

Демонстрация :

demo


Комментарии
Mykhaylo Roslyak
Hello. Can you generate activation code for Techstream v11.30.024 SoftwareID: A56AC8534B65ED5366D4311B4D3E1905 i can pay through paypal, just give me email
Wed Mar 22 2017 20:56:28 GMT+0300 (MSK)
Andrwe
i cant. do it yourself
Thu Mar 23 2017 12:53:02 GMT+0300 (MSK)
Mykhaylo Roslyak
thank you for your work. i watched the video, and it worked flawlessly.
Thu Mar 23 2017 20:22:33 GMT+0300 (MSK)
Vitold
C:\Program Files\Toyota Diagnostics\Techstream\bin\Starter.exe не является приложением Win32 система XPx32, можно как-то исправить, если не трудно?
Sun Mar 26 2017 23:18:27 GMT+0300 (MSK)
Andrwe
да, я выкладывал на гуглодрайв отдельную версию под ХР также можно попоробовать заюзать генератор на этом сайте, онлайновый
Tue Mar 28 2017 12:36:18 GMT+0300 (MSK)
Evgeniy
Нужна помощь, не могу найти пароль на архив. Где можно раздобыть? Спасибо
Wed Mar 29 2017 14:59:54 GMT+0300 (MSK)
Evgeniy
Разобрался, спасибо :)
Wed Mar 29 2017 15:01:31 GMT+0300 (MSK)
Sels
Подскажи почему Toyota TechStream генератор не работает с TechStream software 12.00.127?
Thu Mar 30 2017 09:34:09 GMT+0300 (MSK)
Zaio Baio
Тьi сможеш сделат стартер.ехе для 12-тую версию Техстрийма?
Thu Mar 30 2017 10:47:10 GMT+0300 (MSK)
Andrwe
в версии 12 только поддержка LC500h и какогото еще нового лекса. не вижу пока смысла делать что-то для него
Thu Mar 30 2017 14:22:19 GMT+0300 (MSK)
art2111
скачал с рутракера Toyota Techstream V11.30.124 [12/2016] ввел хардвер код, получилось: { "key": "863e531391c716b6daa6a307d337970e02701704111327", "version": "11.30.124", "hwid": "C7CEF57C9E5D53BCC64BDFE15E1B5303" } Ввел - не работает. Где я облажалса?
Wed Apr 12 2017 03:49:24 GMT+0300 (MSK)
Andrwe
я думаю при вводе хардвареайди облажались или при выборе рынка (тут только кажется для европы)
Wed Apr 12 2017 14:18:01 GMT+0300 (MSK)
art2111
спасибо, а какая разница между америкой и европой? вернее могу ли я установить европу хоть машина сделана в америке?
Sat Apr 15 2017 01:36:32 GMT+0300 (MSK)
Andrwe
если честно, я не знаю в чем разница с точки зрения поведения течстрима. может единицы показывает какиенить мили, бары, фаренгейты. может еще чета)
Sat Apr 15 2017 10:45:29 GMT+0300 (MSK)
Voditel
Здравствуйте. А пароль на архив можно узнать?
Mon Apr 17 2017 10:59:53 GMT+0300 (MSK)
Techstream
http://rgho.st/8Wwkg6NVy
Fri Apr 21 2017 12:31:24 GMT+0300 (MSK)
Никита
Большое спасибо: и статья полезная и впридачу небольшой квест по угадыванию пароля. Нельзя юзеру все давать в разжеванном виде, а то мозги затупеют.
Sat Apr 22 2017 22:18:14 GMT+0300 (MSK)
Роман Махортов
Здравствуйте. У меня, к сожалению ни одного знакомого чувака с Авесисом! Подскажите пароль на архив, плз!)
Thu May 18 2017 09:07:52 GMT+0300 (MSK)
Andrwe
Роман Махортов, читайте внимательнее :)
Thu May 18 2017 12:51:25 GMT+0300 (MSK)
helper
Spasibo bolshoe
Sun May 21 2017 01:57:07 GMT+0300 (MSK)
Юрий
Прошу Вас если не трудно сгенерировать пароли на програмку E7E0B80E26C723F53F0064B038A9D306 12.00.123 А то в генераторе ключей не получается
Tue Jun 13 2017 10:19:38 GMT+0300 (MSK)
Vlad
Всё прекрасно работало, пока не переустановил windows 7, теперь через Starter просто запускается TechStream, в чем может быть проблема? windows с того же диска что и раньше TechStream тот же (11.10.034).
Wed Jul 26 2017 02:17:03 GMT+0300 (MSK)
Andrwe
Vlad, сгенерьте онлайн генератором айди себе
Wed Jul 26 2017 10:15:51 GMT+0300 (MSK)
Konstantin
Через стартер на версии 12.20.024 ключик не показывает. Ключ от генератора работает. Простое объяснение есть этому факту?
Thu Oct 12 2017 15:31:31 GMT+0300 (MSK)
Konstantin
Поправочка - от генератора работает только на Европу, Америку не принимает.
Thu Oct 12 2017 15:41:18 GMT+0300 (MSK)
Roman
запускаю через starter.exe - сообщение что code patched не выдает также не получается сгенерировать онлайн { "version": "11.30.037", "hwid": "6F3292B8DFDF3B6750815EFB089B1C06", "error": "invalid TIS version" } что можно сделать?
Sun Nov 26 2017 05:14:14 GMT+0300 (MSK)