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

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

 eXeL@B —› Протекторы —› Obsidium (Туторы, скрипты, плагины, ...)
<< . 1 . 2 . 3 .
Посл.ответ Сообщение

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

Создано: 26 апреля 2010 16:21 New!
Цитата · Личное сообщение · #1

народ у кого есть? или хотябы по подмене HWID



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

Создано: 20 июня 2018 10:56 · Поправил: TryAga1n New!
Цитата · Личное сообщение · #2

В этом анпакмисе, на котором я тренеруюсь не выполняется ExitProcess, хотя он там присутствует. Соответственно не расшифровывается и импорт получается без одной функции.

Чтобы легче было найти немного кода.

Функция расшифровки API:
Code:
  1. 00396F38    E8 300F0000     CALL 00397E6D     <= После вызова, в еах реальный АПИ адрес
  2. 00396F3D    85C0            TEST EAX,EAX
  3. 00396F3F    71 01           JNO SHORT 00396F42
  4. 00396F41    BC 0F84A8F7     MOV ESP,0xF7A8840F
  5. 00396F46    FFFF            ???                                      ; Unknown command
  6. 00396F48  ^ E9 BBFAFFFF     JMP 00396A08
  7. 00396F4D    EB 02           JMP SHORT 00396F51
  8. 00396F4F    3891 F066FF4E   CMP BYTE PTR DS:[ECX+0x4EFF66F0],DL
  9. 00396F55    0C EB           OR AL,0xEB
  10. 00396F57    030F            ADD ECX,DWORD PTR DS:[EDI]
  11. 00396F59    BC 6E8B1424     MOV ESP,0x24148B6E
  12. 00396F5E    EB 03           JMP SHORT 00396F63
  13. 00396F60    3D 7A0E83C4     CMP EAX,0xC4830E7A
  14. 00396F65    0C EB           OR AL,0xEB
  15. 00396F67    0209            ADD CL,BYTE PTR DS:[ECX]
  16. 00396F69    42              INC EDX
  17. 00396F6A    C3              RETN
  18. 00396F6B    EB 01           JMP SHORT 00396F6E
  19. 00396F6D    2E:8A8D 6D0F120>MOV CL,BYTE PTR CS:[EBP+0x1120F6D]
  20. 00396F74    EB 01           JMP SHORT 00396F77
  21. 00396F76    7C 66           JL SHORT 00396FDE
  22. 00396F78    8B06            MOV EAX,DWORD PTR DS:[ESI]
  23. 00396F7A    EB 01           JMP SHORT 00396F7D


Функция установки переходника, которую я ноплю, чтобы получить живой ИАТ:
Code:
  1. 00395AA8    E8 86040000     CALL 00395F33    <== После вызова, переписывается IAT на переходник
  2. 00395AAD    85C0            TEST EAX,EAX
  3. 00395AAF    72 79           JB SHORT 00395B2A
  4. 00395AB1    0F84 390C0000   JE 003966F0
  5. 00395AB7    E9 380F0000     JMP 003969F4
  6. 00395ABC    90              NOP
  7. 00395ABD    EB 02           JMP SHORT 00395AC1
  8. 00395ABF    00448B C2       ADD BYTE PTR DS:[EBX+ECX*4-0x3E],AL
  9. 00395AC3    EB 02           JMP SHORT 00395AC7
  10. 00395AC5    3A92 E9931B00   CMP DL,BYTE PTR DS:[EDX+0x1B93E9]
  11. 00395ACB    00EB            ADD BL,CH
  12. 00395ACD    03A1 7BE22D97   ADD ESP,DWORD PTR DS:[ECX+0x972DE27B]
  13. 00395AD3    35 1201EB03     XOR EAX,0x3EB0112
  14. 00395AD8    B9 3B358B98     MOV ECX,0x988B353B
  15. 00395ADD    8C0D 1201EB01   MOV WORD PTR DS:[0x1EB0112],CS
  16. 00395AE3    B3 8B           MOV BL,0x8B
  17. 00395AE5    75 08           JNZ SHORT 00395AEF
  18. 00395AE7    EB 02           JMP SHORT 00395AEB


После запуска и закрытия программы с занопленой функцией переходника имеем такой импорт:
Code:
  1. 00402000  7C80B741  kernel32.GetModuleHandleA
  2. 00402004  00BD0048
  3. 00402008  00000000
  4. 0040200C  7E3A07EA  user32.MessageBoxA
  5. 00402010  7E374A4E  user32.EndDialog
  6. 00402014  7E38B144  user32.DialogBoxParamA


А должен быть такой:
00402000 >74821245 kernel32.GetModuleHandleA
00402004 >748279B0 kernel32.ExitProcess
00402008 00000000
0040200C >7617FDAE user32.MessageBoxA
00402010 >761498FC user32.EndDialog
00402014 >7616CBA4 user32.DialogBoxParamA

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

Добавлено спустя 20 минут
Из вышесказанного я делаю вывод, что мой метод восстановления импорта не правильный. Помнится при распаковке армадилы я делал нечто подобное, но в той ситуации перед выполнением кода с ОЕП, расшифровывался весь импорт, вне зависимости от вызовов. А здесь же только по факту вызова каждой апишки. Поэтому прошу наставить на путь истинный.



Ранг: 316.6 (мудрец)
Статус: Модератор
CrackLab

Создано: 20 июня 2018 11:37 New!
Цитата · Личное сообщение · #3

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

Добавлено спустя 1 минуту
а на путь истинный я тебя наставил, поставить еип и потрейсить, но ты не внял.
ну нет так нет



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

Создано: 20 июня 2018 11:59 New!
Цитата · Личное сообщение · #4

SReg, благодарю за наставление.
По поводу эмуляции ExitProcess я в принципе подозревал, просто ковырял еще другой семпл, там GetModuleHandleA не эмулился, хотя это делают праактически все проты и из-за этого я подумал, что обсид таким не балуется.

Теперь насчет переставить EIP, в данном частном случае это безусловно поможет. А если таких функций овер 9000? Каждую трейсить ведь не вариант.



Ранг: 316.6 (мудрец)
Статус: Модератор
CrackLab

Создано: 20 июня 2018 12:34 New!
Цитата · Личное сообщение · #5

TryAga1n так скрипт напиши! Я не помню с наскока так, какие именно апи может эмулировать протектор, помню лишь некоторые это GetModuleHandle, ExitProcess, ExitThread, FreeResource, GetCommandLine, GetCurrentProcess, GetCurrentProcessId, LoadLibraryEx, lstrlenA и может быть еще забыл что-то, но их вручную прописать не проблема

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


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

Создано: 20 июня 2018 12:52 New!
Цитата · Личное сообщение · #6

И еще один вопрос. Есть в паблике информация по определению точной версии прота? Не автоматические анализаторы, а именно алгоритм определения.




Ранг: 569.3 (!)
Статус: Участник
оптимист

Создано: 20 июня 2018 13:54 New!
Цитата · Личное сообщение · #7

TryAga1n
Проще написать скрипт для трейса таблици iat стоя на oep, тело расшифровки ищи в секции SFX(EP) по сигнатуре #558BEC81EC????????535657#

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


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

Создано: 27 марта 2019 12:03 · Поправил: zorkin New!
Цитата · Личное сообщение · #8

Реально ли так сложный Obsidium v1.5.2 x32 (Тот что в паблике крякнутый). У меня за анпак его стянули 200$. И времени ушло на это больше суток у человека. Работой я то доволен но предполагаю что версия 1.6 еще сложнее. Что скажете ?

И есть ли на этом форуме человек который может снимать его хотя бы за 100$ а не за 200$ ? И работа для него всегда найдется от меня.

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



Ранг: 529.0 (!)
Статус: Участник
5KRT

Создано: 28 марта 2019 01:03 New!
Цитата · Личное сообщение · #9

zorkin
Всё зависит от опций защиты. Давно как-то сидели с парнем с Djeck, писали скрипты под это дело




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

Создано: 04 апреля 2019 01:17 New!
Цитата · Личное сообщение · #10

У меня есть вопрос.

Для своих целей перебирал протекторы и наблюдал за некоторой их активностью(нужной мне). При просмотре активности этого прота её просто нет. Точнее говоря я наблюдал за релоками. В исходном апп они есть, после запуска под этим протом их нет. Такое в принципе возможно ?



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

Создано: 04 апреля 2019 09:37 New!
Цитата · Личное сообщение · #11

difexacaw пишет:
В исходном апп они есть, после запуска под этим протом их нет

там релоки крадутся в свою таблицу и применяются к коду в процессе распаковки

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



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

Создано: 04 апреля 2019 09:48 New!
Цитата · Личное сообщение · #12

tihiy_grom пишет:
там релоки крадутся в свою таблицу и применяются к коду в процессе распаковки

подобное еще наблюдается у пакера mpress.




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

Создано: 04 апреля 2019 11:08 · Поправил: difexacaw New!
Цитата · Личное сообщение · #13

Как такое возможно ?

Пусть есть некоторая область и в ней релок. Не известно до выполнения инструкции что релок в ней(в коде), как впрочем и начало инструкции не известно. Как тогда можно убрать релок - только лишь в процессе исполнения, когда управление получит инструкция с релоком. Или я что то не понял ?

Добавлено спустя 1 час 19 минут
BlackCode

Глянул mpress. Образ неизменен в памяти после запуска(если это можно назвать распаковкой"). Так что вы не правду говорите.



Ранг: 316.6 (мудрец)
Статус: Модератор
CrackLab

Создано: 04 апреля 2019 12:34 New!
Цитата · Личное сообщение · #14

difexacaw
До обработки файла протектором, все релоки на месте. Если его нет в таблице, то протектор при распаковке его и не пофиксит.




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

Создано: 04 апреля 2019 13:05 New!
Цитата · Личное сообщение · #15

SReg

Поэтому и спросил, что то странное. Смотрите сами --> Link <--

Первый запуск это mpress. В логе исполняемые инструкции с релоками. У обсида там обращение к паре адресов из кучи буферов в которые прогружается код апи, а где само тело апп с релоками(те адресация) !?



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

Создано: 04 апреля 2019 22:35 · Поправил: tihiy_grom New!
Цитата · Личное сообщение · #16

difexacaw пишет:
Как такое возможно ?
Пусть есть некоторая область и в ней релок. Не известно до выполнения инструкции что релок в ней(в коде), как впрочем и начало инструкции не известно. Как тогда можно убрать релок - только лишь в процессе исполнения, когда управление получит инструкция с релоком. Или я что то не понял ?

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




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

Создано: 04 апреля 2019 23:17 New!
Цитата · Личное сообщение · #17

tihiy_grom

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

Code:
  1. 00406232 mov eax,dword ptr ds:[453504]
  2. 00406237 push ecx
  3. 00406238 push edx
  4. 00406239 hlt 
  5. 0040623A push 0CF0000
  6. 0040623F push 004347D6
  7. 00406244 push 00435A60
  8. 00406249 push 0
  9. 0040624B call dword ptr ds:[434418]
  10. 00406251 mov dword ptr ds:[44F9E0],eax
  11. 00406256 hlt

- код неизменный по своим адресам, со своими релоками. Это у меня там косяк какой то. А я уже было подумал что это какой то хитрый трюк, но увы.



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

Создано: 20 января 2020 17:59 New!
Цитата · Личное сообщение · #18

Собирал кто разные версии Обсида ?
Хочу по мануалу распаковать 1.5.Х.Х , залейте несколько подверсий пожалуйста.




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

Создано: 24 января 2020 13:16 · Поправил: Kindly New!
Цитата · Личное сообщение · #19

Кто ввел кей в новый сетап от комплекта "Obsidium 1.6.7.1 + key", тот получил "бан" под совместимую версию. Чистить тут:
c:\Users\%USERNAME%\.obs32\
c:\Users\%USERNAME%\AppData\Roaming\Obsidium\
HKEY_CURRENT_USER\SOFTWARE\Obsidium\
удалить и перезарегать.

ar2r пишет:
так же спрошу - где найти ?

ну руборде брал



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

Создано: 24 января 2020 21:26 New!
Цитата · Личное сообщение · #20

zorkin пишет:
Реально ли так сложный Obsidium v1.5.2 x32 (Тот что в паблике крякнутый). У меня за анпак его стянули 200$. И времени ушло на это больше суток у человека. Работой я то доволен но предполагаю что версия 1.6 еще сложнее. Что скажете ?

а вы можете помочь найти его ?

Добавлено спустя 1 минуту
Kindly пишет:
Кто ввел кей в новый сетап от комплекта "Obsidium 1.6.7.1 + key", тот получил "бан" под совместимую версию.


так же спрошу - где найти ?








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

Создано: 29 июня 2020 14:40 · Поправил: Kindly New!
Цитата · Личное сообщение · #21

Потестил прот Obsidium 1.6.7.1 + key. Полная лажа и боль.
Некоторый образец защитных маркеров:
Code:
  1. ;some init
  2. if obsIsLicensed() then
  3. begin
  4.    {$I OBSIDIUM_LIC_START.pas}
  5.    obsGetLicenseInfo(0, @regInfo); //Username
  6.    obsGetLicenseInfo(1, @bindInfo); //string SystemID inside license
  7.    obsGetLicenseInfo(2, @hideInfo); //CheckValue (FACEEBFE)
  8.    obsGetSystemId(@sysID); // hardware SystemID
  9.    obsGetLicenseExpiration(@lpExpDate); // Expiration date
  10.    {$I OBSIDIUM_LIC_END.pas}
  11. end;
  12.  
  13. ;some start part of algo
  14. {$I OBSIDIUM_VM_START}
  15. if string(bindInfo) = string(sysID) then
  16.    P := CalcSha256Unicode(Form1.edt1.Text)
  17. else
  18.    P := PChar('FAKE');
  19.  
  20. if ($FACEEBFE) = StrToInt64('$'+string(hideInfo)) then
  21.    abc := '123456789ABCDEFGHJKMNPQRSTUVWXYZ'
  22. else
  23.    abc := 'FAKEFAKEFAKEFAKEFAKEFAKEFAKEFAKE';
  24. {$I OBSIDIUM_VM_END}
  25.  
  26. {$I OBSIDIUM_ENC_START}
  27. asm
  28.   PUSHAD
  29.   // some operations
  30.   POPAD
  31. end;
  32. {$I OBSIDIUM_ENC_END}

считает неправильно. все похерено и портится при обволакивании в маркеры. а с асм вставками вообще почти не дружит.
если поубирать все маркеры кроме VM, также работать не будет правильно. если и их убрать и оставить хотя бы такой код:

if string(bindInfo) = string(sysID) then
P := CalcSha256Unicode(Form1.edt1.Text)
else
P := PChar('FAKE');

то будет работать нормально, но если добавить проверочку данных из лицухи:

if ($FACEEBFE) = StrToInt64('$'+string(hideInfo)) then
abc := '123456789ABCDEFGHJKMNPQRSTUVWXYZ'
else
abc := 'FAKEFAKEFAKEFAKEFAKEFAKEFAKEFAKE';

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

некоторые другие протекторы [censored], в частности, upx, работают правильно в отличие от Obsid.
сырая шляпа, кто его покупает, если на болванку повесить нельзя нормально, про крупный софт ваще молчу
в sdk опечатки, например: lpSytemId вместо lpSystemId, некоторые функции вообще недокументированы, покупай за бабки отдельные SDK или чеши репу с гуглом, чтобы самому сделать киген или какие-то функи, еще и файл проекта требует таскать рядом для генерации лицухи со своего кейгена - видители константы впадлу было отдельно вынести




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

Создано: 30 июня 2020 22:50 · Поправил: difexacaw New!
Цитата · Личное сообщение · #22

Kindly

Что значит потестил, это как то попытался накрыть тестовый семпл этим протом ?

Какой же это тест. Это попытка сборки, а не тест протектора.

А как протектор из тех что есть весьма не плох. Я действительно тестил его тысячи раз визор видел(хотя автоматика его решает общим путём, но это довольно древний прот и не для этих техник предназначен), тут примеров достаточно.

> навешал просто на киген, у меня на последней 10-ке работал норм, а у некоторых юзеров вылетало в BSOD.

analyze -v в студию. Иначе это пустые слова, отладчик ваш ядерный крэшил или плагины типо сциллы.


<< . 1 . 2 . 3 .
 eXeL@B —› Протекторы —› Obsidium (Туторы, скрипты, плагины, ...)

Видеокурс ВЗЛОМ