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

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

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 декабря 2016 00:52 · Поправил: xinside
· Личное сообщение · #1

Здравствуйте. Сдох старенький комп по управлению станком, был слитый образ системы, я его накатил на новый системник. Как оказалось, у программы имеется привязка к железу, в папке программы лежит файл PC.Code, в котором автоматически формируется PC ID, если его изменить на другой и сохранить - ничего не меняется.
Также в папке есть reg.key, в котором код активации.
На данный момент программа работает, но выдает окно демо режима и через 60 минут выключается (скрин прилагаю).
Прошерстил с помощью w32dasm все .exe и .dll, и только в файле S7onlinx.dll обнаружил информацию, связанную с Hardware ID (пытался менять как в статье на jmp адреса 100058D9 и 100058E5).
Подскажите, в правильном направлении двигаюсь или искать информацию о PC ID в другом месте? Заранее благодарю.

84b3_09.12.2016_EXELAB.rU.tgz - Immagine.JPG

0286_09.12.2016_EXELAB.rU.tgz - Immagine2.JPG

ce9b_09.12.2016_EXELAB.rU.tgz - 3.JPG



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

Создано: 09 декабря 2016 05:23 · Поправил: dosprog
· Личное сообщение · #2

Наверное, в правильном.
Если побороть не удастся, тогда заархивируйте каталог C:\GRPRJX и представьте на рассмотрение.
А ещё лучше сам слитый образ системы.

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

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 декабря 2016 08:18 · Поправил: xinside
· Личное сообщение · #3

Каталог залил, менее 50мб (--> Link <--), образ тоже залью.



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

Создано: 09 декабря 2016 21:02
· Личное сообщение · #4

Для начала, чтобы заставить хоть как-то работать это говно , необходимо заглянуть/отредактировать в файло Environment.cfg, а именно строчки:
Code:
  1. UserStrFile="c:\Lcr\Global\Italiano.txt"; //такого файла нету - надо создать или забить первый попавшейся
  2. DefaultAppDir="c:\Lcr"; //100%, что такая директория не у всех существует


xinside пишет:
лежит файл PC.Code, в котором автоматически формируется PC ID, если его изменить на другой и сохранить - ничего не меняется.
Также в папке есть reg.key, в котором код активации.

Половина ответа лежит в Вашем вопросе. reg.key и PC.Code
По крайней мере можно попытаться найти ссылки на эти файлы в dll'ках и они действительно есть!
Внимание привлекает GRGlobalDat.dll:
Code:
  1. 002A19B8  |.  52            PUSH EDX                                                                                                 ; /<%s> = "\x14"
  2. 002A19B9  |.  68 2C802B00   PUSH OFFSET 002B802C                                                                                     ; |Format = "%s\Reg.key"
  3. 002A19BE  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]                                                                            ; |
  4. 002A19C1  |.  83C0 14       ADD EAX,14                                                                                               ; |
  5. 002A19C4  |.  50            PUSH EAX                                                                                                 ; |Arg1
  6. 002A19C5  |.  E8 CE310000   CALL <JMP.&MFC42D.#2168>                                                                                 ; \MFC42D.#2168
  7. 002A19CA  |.  83C4 0C       ADD ESP,0C
  8. 002A19CD  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
  9. 002A19D0  |.  51            PUSH ECX                                                                                                 ; /<%s>
  10. 002A19D1  |.  68 1C802B00   PUSH OFFSET 002B801C                                                                                     ; |Format = "%s\PC.Code"
  11. 002A19D6  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]                                                                            ; |
  12. 002A19D9  |.  83C2 18       ADD EDX,18                                                                                               ; |
  13. 002A19DC  |.  52            PUSH EDX                                                                                                 ; |Arg1
  14. 002A19DD  |.  E8 B6310000   CALL <JMP.&MFC42D.#2168>                                                                                 ; \MFC42D.#2168
  15. 002A19E2  |.  83C4 0C       ADD ESP,0C

проверяется наличие данных файлов и их чтение (функа инициализации global data).
Далее, из всего зверушника exe-файлов внимание привлекает GRSysRun.exe, который выдает окошко, показанное на первом скриншоте в первом сообщении (Immagine.JPG).
Суммируя информацию выше, анализируем GRGlobalDat.dll и находим симпатичные экспортные функи:
Code:
  1. Names in GRGlobalDat, item 5
  2.   Address = 0033101E
  3.   Section = .text
  4.   Type = Export
  5.   Name = ?GetSWkeyPCCode@GRGlobalDat@@QAE?AVCString@@XZ
  6.   Comments = Ordinal = #18
  7.  
  8. Names in GRGlobalDat, item 6
  9.   Address = 00331023
  10.   Section = .text
  11.   Type = Export
  12.   Name = ?GetSWkeyRegCode@GRGlobalDat@@QAE?AVCString@@XZ
  13.   Comments = Ordinal = #19
  14.  
  15.  
  16. Names in GRGlobalDat, item 14
  17.   Address = 0033104B
  18.   Section = .text
  19.   Type = Export
  20.   Name = ?GetSWkeyOwner@GRGlobalDat@@QAE?AVCString@@XZ
  21.   Comments = Ordinal = #17
  22.  
  23. Names in GRGlobalDat, item 18
  24.   Address = 0033105F
  25.   Section = .text
  26.   Type = Export
  27.   Name = ?TestSWkey@GRGlobalDat@@QAEHXZ
  28.   Comments = Ordinal = #35


Через GRGlobalDat.TestSWkey можно выйти на такое место в GRSysRun.exe (работает по тикам таймера, судя по всему):
Code:
  1. 0040322D  |.  8BF4          MOV ESI,ESP
  2. 0040322F  |.  B9 88F74100   MOV ECX,OFFSET 0041F788
  3. 00403234  |.  FF15 68084200 CALL DWORD PTR DS:[<&GRGlobalDat.?TestSWkey@GRGlobalDat@@QAEHXZ>] //наш клиент
  4. 0040323A  |.  3BF4          CMP ESI,ESP
  5. 0040323C  |.  E8 E15A0000   CALL <JMP.&MSVCRTD._chkesp>                                                                              ; Jump to MSVCRTD._chkesp
  6. 00403241  |.  83F8 02       CMP EAX,2 //тут уже как-бы должно намекать!
  7. 00403244  |.  0F84 E8000000 JE 00403332
  8. 0040324A  |.  817D 08 60EA0 CMP DWORD PTR SS:[EBP+8],0EA60 
  9. 00403251      0F85 DB000000 JNE 00403332 //тут, кстати, если сделать инверсию, то получится немного неожиданно.


xinside пишет:
Прошерстил с помощью w32dasm

OllyDbg Вам в помощь!

xinside пишет:
S7onlinx.dll обнаружил информацию, связанную с Hardware ID

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

данное наблюдение не представляет исследовательской ценности - при терминанте процесса в лог сыпется тонна debug string:
Code:
  1. 10215133  Debug string: Dumping objects ->
  2. 10215133  Debug string: {17501} 
  3. 10215133  Debug string: client block at 0x01E7DF48, subtype 0, 8 bytes long.
  4. 10215133  Debug string: a CBitmap object at 
  5. 10215133  Debug string: {17500} 
  6. 10215133  Debug string: client block at 0x01E7DF10, subtype 0, 8 bytes long.
  7. 10215133  Debug string: a CBitmap object at 
  8. 10215133  Debug string: {17499} 
  9. 10215133  Debug string: client block at 0x01E7DED8, subtype 0, 8 bytes long.
  10. 10215133  Debug string: a CBitmap object at 
  11. 10215133  Debug string: {17498} 
  12. 10215133  Debug string: client block at 0x01E7DEA0, subtype 0, 8 bytes long.
  13. 10215133  Debug string: a CBitmap object at 
  14. 10215133  Debug string: {17493} 
  15. 10215133  Debug string: client block at 0x01E7DE68, subtype 0, 8 bytes long.
  16. ...


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

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

Создано: 10 декабря 2016 02:22
· Личное сообщение · #5

Ну, тогда, очевидно, нужен архив каталога "C:\Lcr".
Там много чего хранится, помимо упомянутого.



Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 10 декабря 2016 15:49
· Личное сообщение · #6

Строка из Reg.key обрабатывается в GRGlobalDat.dll:
Code:
  1. 10004081   FF15 B8C23D00    call    near dword ptr ds:[<&GRUlib.?AlfNum2Byte@GRSWKey@@QAEHVCString@@PAE@Z>]
  2. 10004087   8BF4             mov     esi, esp
  3. 10004089   8D45 AC          lea     eax, dword ptr ss:[ebp-54]
  4. 1000408C   50               push    eax
  5. 1000408D   8D4D B4          lea     ecx, dword ptr ss:[ebp-4C]
  6. 10004090   51               push    ecx
  7. 10004091   8D55 B8          lea     edx, dword ptr ss:[ebp-48]
  8. 10004094   52               push    edx
  9. 10004095   8D45 88          lea     eax, dword ptr ss:[ebp-78]
  10. 10004098   50               push    eax
  11. 10004099   8D4D 84          lea     ecx, dword ptr ss:[ebp-7C]
  12. 1000409C   FF15 B4C23D00    call    near dword ptr ds:[<&GRUlib.?DeMixCodes@GRSWKey@@QAEHPAEPAVCString@@11@Z>]

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

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

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 декабря 2016 10:18 · Поправил: xinside
· Личное сообщение · #7

Всем большое спасибо за участие, теперь много информации к размышлению.
Думаю в каталоге LCR нет вещей, ответственных за ключ, там скорее просто часть программы.
-->LCR<--



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

Создано: 13 декабря 2016 19:29
· Личное сообщение · #8

Естественно. Там данные, необходимые для нормальной её работы.


 eXeL@B —› Вопросы новичков —› Как обойти привязку к железу?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати