Сейчас на форуме: Lohmaty, tyns777 (+7 невидимых)

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

Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 06 декабря 2017 17:03
· Личное сообщение · #1

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

a1ce_06.12.2017_EXELAB.rU.tgz - 3.jpg




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 06 декабря 2017 17:30
· Личное сообщение · #2

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

-----
Array[Login..Logout] of Life




Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 06 декабря 2017 18:47
· Личное сообщение · #3

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

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 06 декабря 2017 18:58 · Поправил: ELF_7719116
· Личное сообщение · #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 ?



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

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

вот



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

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

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

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

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

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

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

cde2_06.12.2017_EXELAB.rU.tgz - OSP-P _CLSID.7z



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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


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

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

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

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



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

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

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






Ранг: 62.3 (постоянный), 51thx
Активность: 0.040.01
Статус: Участник

Создано: 06 декабря 2017 23:00
· Личное сообщение · #8

dosprog
--> Link <--

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

Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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

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



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 07 декабря 2017 05:39
· Личное сообщение · #10

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




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 07 декабря 2017 14:36
· Личное сообщение · #11

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

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



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 07 декабря 2017 16:21
· Личное сообщение · #12

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 07 декабря 2017 17:57
· Личное сообщение · #13

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

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

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



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 07 декабря 2017 18:23
· Личное сообщение · #14

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

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 07 декабря 2017 18:56
· Личное сообщение · #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. }


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



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 07 декабря 2017 19:10
· Личное сообщение · #16

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 07 декабря 2017 20:21
· Личное сообщение · #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...



Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

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

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

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



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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


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


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

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

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





Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 08 декабря 2017 06:10
· Личное сообщение · #20

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


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



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 08 декабря 2017 07:21
· Личное сообщение · #21

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 декабря 2017 07:38
· Личное сообщение · #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'ить????????????



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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


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


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

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


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

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


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

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

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





Ранг: 3.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 08 декабря 2017 10:30
· Личное сообщение · #24

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 декабря 2017 19:00
· Личное сообщение · #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 —› Вопросы новичков —› кто поможет с программой?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати