eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› кто поможет с программой?
Посл.ответ Сообщение

Ранг: 1.1 (гость)
Статус: Участник

Создано: 6 декабря 2017 17:03 New!
Цитата · Личное сообщение · #1

https://cloud.mail.ru/public/MR9u/EYNJzryTK
у программы 3 разных окна при разных условиях запускается одно из трех, не могу понять при каких условиях запускается другие два окна. адреса заголовков окон нашел, но как на них перейти не пойму.

{ Атач доступен только для участников форума } - 3.jpg


Ранг: 246.7 (наставник)
Статус: Участник
RBC

Создано: 6 декабря 2017 17:30 New!
Цитата · Личное сообщение · #2

а при каких условиях эта шляпа должна запускаться?
вообще не работает никак с учетом регистрации dll в систему.

Ранг: 1.1 (гость)
Статус: Участник

Создано: 6 декабря 2017 18:47 New!
Цитата · Личное сообщение · #3

она на станке запускается только при каком условии, могу скинуть ещё если какие надо dll, но просто на компе она не запускается, но Идой смотреть можно) и PE эксплорере показывает 3 окна

Добавлено спустя 9 минут
есть такое подозрение что она смотрит PPV , на станке это значение равно 8D1F60h

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 6 декабря 2017 18:58 · Поправил: ELF_7719116 New!
Цитата · Личное сообщение · #4

Она не может инициализировать COM:
Code:
  1. 00401C2E  /$  6A 00         PUSH 0                                                                            ; OSPDLGRD.00401C2E(guessed Arg1,Arg2,Arg3,Arg4)
  2. 00401C30  |.  FF15 D8204000 CALL DWORD PTR DS:[<&ole32.CoInitialize>]

и токен ниже мы тоже не получаем. Из-за этого все рушится в самом начале
Code:
  1. 00401C36  |.  68 40324000   PUSH OFFSET 00403240
  2. 00401C3B  |.  68 30224000   PUSH OFFSET 00402230
  3. 00401C40  |.  6A 01         PUSH 1
  4. 00401C42  |.  6A 00         PUSH 0
  5. 00401C44  |.  68 40224000   PUSH OFFSET 00402240
  6. 00401C49  |.  FF15 DC204000 CALL DWORD PTR DS:[<&ole32.CoCreateInstance>]
  7. 00401C4F  |.  85C0          TEST EAX,EAX
  8. 00401C51  |.  7D 05         JGE SHORT 00401C58 //<--- ТУТ


alexncr пишет:
она на станке запускается только при каком условии

Че за стойка на ЧПУ стоит? Siemens Sinumeric??


Я так понимаю, нужно искать в реестре (где это говно работает) следующий GUID и смотреть что там (dll?) грузится:
Code:
  1. 00 90 5E CE 
  2. B0 0B 
  3. CF 44 
  4. 8D B9 4B C8 C8 4A 84 B7

CE5E9000-0BB0-44CF-8DB94BC8C84A84B7 ?

Ранг: 1.1 (гость)
Статус: Участник

Создано: 6 декабря 2017 19:19 · Поправил: alexncr New!
Цитата · Личное сообщение · #5

вот

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 6 декабря 2017 19:34 · Поправил: ELF_7719116 New!
Цитата · Личное сообщение · #6

alexncr пишет:
стойка Okuma)

внезапно) Там XP (или 7ка)?

интересует тогда уже вся папка C:\OSP-P\
кидайте её

И в реестре HKEY_CLASSES_ROOT\CLSID глянуть GUID с номером CE5E9000-0BB0-44CF-8DB94BC8C84A84B7 (или что-то подобное). Дамп нужен (.reg)

Добавлено...
как вообще этот сраный GUID добавить? Пишет ERROR_SXS_KEY_NOT_FOUND. В архиве требуемые ключи для реестра.

{ Атач доступен только для участников форума } - OSP-P _CLSID.7z

Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 6 декабря 2017 22:19 · Поправил: dosprog New!
Цитата · Личное сообщение · #7

ELF_7719116 пишет:
интересует тогда уже вся папка C:\OSP-P\
кидайте её


Там с десяток пяток специфичных драйверов. [это всё хозяйство эмулировать??]
Без них работать не будет.

Затея не стОит потраченных усилий имхо.

Добавлено спустя 10 минут
alexncr пишет:
у программы 3 разных окна

Чего вообще хочешь добиться от этой софтины?
Работы в режиме ProgStation?



Добавлено спустя 17 минут
)) Посмотрел скриншот в старт-посте.
-Да, это их фирменное блядство.

Кстати, полные данные по софту какие? (версия OSP-P, T/M?)

[переложи архив с говноресурса на http://rgho.st/, лень дрючиться с проксями]



Ранг: 60.4 (постоянный)
Статус: Участник

Создано: 6 декабря 2017 23:00 New!
Цитата · Личное сообщение · #8

dosprog
--> Link <--

| Сообщение посчитали полезным: dosprog


Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 6 декабря 2017 23:06 · Поправил: dosprog New!
Цитата · Личное сообщение · #9

В архиве полова. Пускай напишет название машины и версию софта.

Добавлено спустя 21 минуту
..время, время..

Ранг: 1.1 (гость)
Статус: Участник

Создано: 7 декабря 2017 05:39 New!
Цитата · Личное сообщение · #10

осп200 станок лт2000 токарка, но это не засит принцип у всех одинаковый


Ранг: 140.5 (ветеран)
Статус: Участник

Создано: 7 декабря 2017 14:36 New!
Цитата · Личное сообщение · #11

ELF_7719116 пишет:
как вообще этот сраный GUID добавить?

Пуск -> Выполнить -> regsvr32 "C:\OSP-P\VOLANTE\CRAD\TRANSDETECTAP.DLL"
ну или где эта дллка в твоей системе

Ранг: 1.1 (гость)
Статус: Участник

Создано: 7 декабря 2017 16:21 New!
Цитата · Личное сообщение · #12

короче вывести нужно окно получилось путем изменения пары ZP, программа закрылась правильно, но система не запустилась не хватает каких то ещё команд которые скорее с трансдетекта наверно идут, придется идти по пути пароля

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 7 декабря 2017 17:57 New!
Цитата · Личное сообщение · #13

-=AkaBOSS=-
всё равно ERROR_SXS_KEY_NOT_FOUND

dosprog пишет:
Там с десяток пяток специфичных драйверов. [это всё хозяйство эмулировать??]

да их проще эмулировать (буфер мусором закидать), чем пытаться CALL DWORD PTR DS:[<&ole32.CoCreateInstance;] завестись.

Ранг: 1.1 (гость)
Статус: Участник

Создано: 7 декабря 2017 18:23 New!
Цитата · Личное сообщение · #14

дошли сегдня что после ввода пароля наугад и нажатия окей переход идет в 0040130F all dword ptr [ecx+10h] в трандек.Dll по адресу ecx=10007108

Добавлено спустя 5 минут
интересно есть несколько похожих функции с sub_4011CB по sub_401358

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 7 декабря 2017 18:56 New!
Цитата · Личное сообщение · #15

alexncr пишет:
[ecx+10h] в трандек.Dll по адресу ecx=10007108

вот это уже теплее. хотя я пока не наблюдаю места, где он бы паролен сравнивал.
функа по адресу
Code:
  1. 10001F50  /.  8B4424 14     MOV EAX,DWORD PTR SS:[ESP+14]

там вроде всё возле DeviceIoControl танцует (чисто обмен данными между чпу и софтом):
Code:
  1. .orpc:10006753                 mov     ecx, [ebp+var_C8]
  2. .orpc:10006759                 lea     eax, [ecx+3]
  3. .orpc:1000675C                 and     al, 0FCh
  4. .orpc:1000675E                 mov     [ebp+var_C8], eax
  5. .orpc:10006764                 mov     [eax], esi
  6. .orpc:10006766                 add     [ebp+var_C8], 4
  7. .orpc:1000676D                 lea     edx, [ebp+var_CC]
  8. .orpc:10006773                 push    edx
  9. .orpc:10006774                 push    ebx
  10. .orpc:10006775                 call    _devio_wrap_lo //< тут DeviceIoControl


перед ней функа 00401169 точно идентифицирована, как:
Code:
  1. time_t __cdecl GetIOControlSeed(time_t *a1)
  2. {
  3.   unsigned __int64 v1; // rax
  4.   unsigned __int64 v2; // rax
  5.   unsigned __int64 v3; // rax
  6.   struct _FILETIME SystemTimeAsFileTime; // [esp+4h] [ebp-8h]
  7.  
  8.   GetSystemTimeAsFileTime(&SystemTimeAsFileTime);
  9.   v1 = SystemTimeAsFileTime.dwLowDateTime + ((unsigned __int64)SystemTimeAsFileTime.dwHighDateTime << 32);
  10.   if ( v1 >= WIN32_FILETIME_ADJUST)
  11.     v2 = v1 - WIN32_FILETIME_ADJUST;
  12.   else
  13.     v2 = 0i64;
  14.   v3 = v2 / 0x989680;
  15.   *(_QWORD *)a1 = v3;
  16.   return v3;
  17. }


возвращаемся два раза - функи перед этим только ошибки парсят при выводе железа.

Ранг: 1.1 (гость)
Статус: Участник

Создано: 7 декабря 2017 19:10 New!
Цитата · Личное сообщение · #16

да 00401169 проверка времени, то что она сначало делает

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 7 декабря 2017 20:21 New!
Цитата · Личное сообщение · #17

короче, идите Вы все нафиг
всё превосходно эмулируется и работает.

Картина преступления следующая:
TRANSDETECTAP.DLL 10001F50 , он же (ppv + 12) работает напрямую с ЧПУ и принимает следующие аргументы:
Code:
  1. (*(_DWORD *)ppv + 12))(ppv, 3, &v6, 1, &v5);
  2. arg. 1 - ppv
  3. arg. 2 - команда ЧПУ
  4. arg. 3 - (&v6) буфер входных данных (__IN)
  5. arg. 4 - (1) размер входных данных (sizeof __IN)
  6. arg. 5 - (&v5) буфер ВЫХОДНЫХ данных (__out). всегда 4 байта - integer

ppv = *(00403240), т.е. хендл от трижды гребаного CoCreateInstance (эмулируем устройство \.\CradKSD)

собственно главные события разворачиваются сразу и здесь:
Code:
  1. INT_PTR __cdecl sub_401AAD(HINSTANCE hInstance)
  2. {
  3.   INT_PTR result; // eax
  4.   int (__stdcall **v2)(HWND, int, __int16, int); // eax
  5.   int (*v3)(void); // ecx
  6.   int v4; // [esp+4h] [ebp-Ch]
  7.   int v5; // [esp+8h] [ebp-8h]
  8.   char v6; // [esp+Fh] [ebp-1h]
  9.  
  10.   result = main_wait_cycle(10);
  11.   if ( !result )
  12.   {
  13.     result = send_BYTE();
  14.     if ( result == -3 )
  15.       return 0;
  16.     if ( result )
  17.       return result;
  18.     result = main_wait_cycle(20);
  19.     if ( result )
  20.       return result;
  21.     result = send_DWORD();
  22.     if ( result )
  23.       return result;
  24.     (*(void (__stdcall **)(LPVOID, signed int, int *, signed int, int *))(*(_DWORD *)ppv + 12))(ppv, 12, &v4, 4, &v5);
  25.     if ( v5 < 0 )
  26.       return error(v5);
  27.     v6 = 0;
  28.     (*(void (__stdcall **)(LPVOID, signed int, char *, signed int, int *))(*(_DWORD *)ppv + 12))(ppv, 3, &v6, 1, &v5);
  29.     if ( v5 < 0 )
  30.       return error(v5);
  31.     v2 = sub_401B94(v6, v4);
  32.     v3 = (int (*)(void))v2[2];
  33.     if ( v3 )
  34.       result = v3();
  35.     else
  36.       result = *v2 ? DialogBoxParamA(hInstance, (LPCSTR)v2[1], 0, (DLGPROC)*v2, 0) : -12;
  37.     if ( result == -12 )
  38.       return 0;
  39.     if ( !result )
  40.     {
  41.       result = main_wait_cycle(40);
  42.       if ( !result )
  43.         result = send_control__8();
  44.     }
  45.   }
  46.   return result;
  47. }

main_wait_cycle, send_BYTE, send_DWORD сразу ставим заглушку xor eax, eax & ret и забываем за них.

единственный вопрос остаётся, уточнить, как он делает выборку по диалогу + формирование окончательного результата:
Code:
  1. v2 = sub_401B94(v6, v4);
  2.     v3 = (int (*)(void))v2[2];
  3.     if ( v3 )
  4.       result = v3();
  5.     else
  6.       result = *v2 ? DialogBoxParamA(hInstance, (LPCSTR)v2[1], 0, (DLGPROC)*v2, 0) : -12;
  7.     if ( result == -12 )
  8.       return 0;
  9.     if ( !result )
  10.     {
  11.       result = main_wait_cycle(40);
  12.       if ( !result )
  13.         result = send_control__8();


ну тут уже so close...

Ранг: 1.1 (гость)
Статус: Участник

Создано: 7 декабря 2017 20:38 · Поправил: alexncr New!
Цитата · Личное сообщение · #18

из окна он запихивает в 12FA6C - 12FA85
а значение PPV постоянно адрес 8D1F60

Добавлено спустя 12 минут
он же = 8h

Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 8 декабря 2017 00:37 · Поправил: Модератор New!
Цитата · Личное сообщение · #19

Выложи [ на rgho.st ] файл lathe.dll, гляну версию.


ELF_7719116 пишет:
короче, идите Вы все нафиг


)) Тю. Это чего это нафиг?

ELF_7719116 пишет:
да их проще эмулировать (буфер мусором закидать), чем пытаться CALL DWORD PTR DS:[<&ole32.CoCreateInstance;] завестись.

) Эта софтина - большая куча дерьма ( размером овер 300Мб, емнип), шевелящегося. С кучей скотских проверок и задротств.
Ещё и "правильно написанная", с использованием всяких микрософтовских идиотских изысков.
Году в 10-м просили на неё взглянуть, на предмет расшевелить на ПК, - мрак имхо. Повозился и забросил, ну её ...


Ранг: 1.1 (гость)
Статус: Участник

Создано: 8 декабря 2017 06:10 New!
Цитата · Личное сообщение · #20

dosprog пишет:
ну её ...


дак что опть забросил?) http://rgho.st/7fww9k5hp вот фаил

Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 8 декабря 2017 07:21 New!
Цитата · Личное сообщение · #21

Забросил, потому что говнософт. Мне не нужен, а другой кто и спасибо не скажет.

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 8 декабря 2017 07:38 New!
Цитата · Личное сообщение · #22

dosprog пишет:
Тю. Это чего это нафиг?

всё ок, бро.

dosprog пишет:
Эта софтина - большая куча дерьма

по-моему все ЧПУшные стойки на винде - такая "куча дерьма". exe'шников с файлами наплодили как муравейник. они то больше под микроконтроллеры заточены, а в винде системное программирование по книжкам (а-ля visual basic) пишут.

alexncr
там, тамщемта, на мой взгляд, вопрос - ВЫПОЛНЯЮТСЯ ЛИ КОМАНДЫ на ЧПУ ПОСЛЕ ПОСЫЛКИ ПАРОЛЯ ТУТ:
Code:
  1. 00401827  |. /75 08         JNZ SHORT 00401831
  2. 00401829  |. |6A 1E         PUSH 1E
  3. 0040182B  |. |E8 28FBFFFF   CALL 00401358

и в основной функе тут:
Code:
  1. .text:00401B86                 jnz     short loc_401B91
  2. .text:00401B88                 call    _send_control__8

переходы NOP'пить или JMP'ить????????????

Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 8 декабря 2017 07:49 · Поправил: dosprog New!
Цитата · Личное сообщение · #23

ELF_7719116 пишет:
переходы NOP'пить или JMP'ить????????????


) Та не заморачивайся. Ты пробуешь лечить этой софтине сопли, а надо лечить ей моцх.
Задача в нашем контексте неполная - а полную ну её вдаль.


--Добавлено--

ELF_7719116 пишет:
в таком уж случае нужно лечить моцх погромистов компании Okuma Corporation.


..Бесполезно. У них всё типа збс.. Шо хотят, то и творят, короче.
Проще попытаться подлечить софтину.

--Конец добавленного--


ELF_7719116 пишет:
в винде системное программирование по книжкам (а-ля visual basic) пишут.

Это да, есть такое. В лучшем смысле этого слова

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


Ранг: 1.1 (гость)
Статус: Участник

Создано: 8 декабря 2017 10:30 New!
Цитата · Личное сообщение · #24

После ввода пароля после нескольких функции с 00401827 идет в 1829
С 1B86 в 1B88

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 8 декабря 2017 19:00 New!
Цитата · Личное сообщение · #25

dosprog пишет:
надо лечить ей моцх.

в таком уж случае нужно лечить моцх погромистов компании Okuma Corporation.
dosprog пишет:
файл lathe.dll, гляну версию.

а в ней что интересного?

Code:
  1.   v1 = *(_DWORD *)ppv;
  2.   v2 = strlen(Str);
  3.   (*(void (__thiscall **)(int, LPVOID, signed int, char *, size_t))(v1 + 16))(v3, ppv, 4, Str, v2);
  4.   if ( v6 >= 0 ...
  5.   && (GetIOControlSeed(v5),
  6.         (*(void (__stdcall **)(LPVOID, signed int, time_t *, signed int, int *))(*(_DWORD *)ppv + 16))(
  7.           ppv,
  8.           7,
  9.           v5,
  10.           8,
  11.           &v6),
  12.         v6 >= 0) )

там доп. проверки понатыканы во всех ексешниках? я понимаю, что сверки пароля нет на уровне софта. всё шлется в железо и потом чекаем результат с помощью сабмита GetIOControlSeed.

alexncr пишет:
После ввода пароля после нескольких функции с 00401827 идет в 1829
С 1B86 в 1B88

давайте попробуем пропатчить два этих перехода и оценить что система будет делать после:
Code:
  1. .text:00401B86                 JMP short loc_401B91


Может это из моих фантазий, но учитывая, что японцы те, кто это писал, были людьми жестко блюдущими все возможные правила, возможно следующие события:
1. Оригинальный паролен должен вытаскиваться какой-то секретной командой обратно
2. Теоретически его можно и брутануть (мда, на станках с ЧПУ обычно какое нибудь доисторическое дерьмо типа Intel Celeron первых билдов)

alexncr пишет:
короче вывести нужно окно получилось путем изменения пары ZP, программа закрылась правильно, но система не запустилась не хватает каких то ещё команд которые скорее с трансдетекта наверно идут

Вы патчили прогу? может там проверка целостности файло?!
 eXeL@B —› Вопросы новичков —› кто поможет с программой?
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS