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

Сейчас на форуме: rmn, bernal1, parfetka, jinoweb, hlmadip (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Протекторы —› Crack SecuROM & DENUVO
<< 1 ... 45 . 46 . 47 . 48 . 49 . 50 . 51 . 52 . 53 . >>
Посл.ответ Сообщение

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

Создано: 28 марта 2012 14:24 · Поправил: 21 июля 2016 20:02 ELF_7719116 New!
Цитата · Личное сообщение · #1


CODEX UNVIRTUALIZE DENUVO/VMProtect
Code:
  1. Release Notes:
  2.  
  3. This is an experimental Proof of Concept release where the Denuvo DRM
  4. and VMProtect have been removed completely from the main executable.
  5. The main idea of this project was to verify whether Denuvo affects
  6. CPU usage and overall performance of this game. We noticed faster
  7. loading times but will leave the rest of the performance comparison
  8. battle to others.
  9.  
  10. Here is a small tech summary of what has been done:
  11.  
  12. - VMProtect is fully removed (30 VM entry points)
  13. - Denuvo is fully removed (104 VM entry points)
  14. - All required PE directories are fully restored
  15. (exports, imports, exceptions, TLS)
  16. - Fixed around 500k absolute & relative code and data pointers
  17.  
  18. The team would like to send out special thanks to our hard working mate who is responsible for this huge project. This would not have been possible without you! You rock man!


**************

В связи со стремительно развивающимися событиями, данный топик будет реформирован. Перечень тем, на которые ведется обсуждение:

░▒▓▓-SecuROM 7/8 common (VM research; disk-check bypass attack; find OEP & dumping; cumulative attack...)
░▒▓▓-- SPR I (profiles; updates)
░▒▓▓-Requests for generation SecuROM PA Unlock code (SecuROM PA Online-activation) WOW! Only on EXELAB.RU
░▒▓▓-Denuvo ("surface" questions)
░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

SPR I - Fight against the virtual machines (VM) of all SecuROM 7-8 versions (Подробности в 20, 23 посте.)


80_PA - SecuROM (PA) Online-Activation keygen! Holy shit!
[/url]
the list of programs (games), which can now be activated using 80_PA:
https://pastebin.com/EiMbV3YD or --> pastebin primary link <--

>>>>>>>> (!) Send me more games with SecuROM PA (!) >>>>>>>>>>>>

Denuvo Profiler (DProfiler)


------------
1.04.2012
Собственно я не сказал самого главного. SecuRom_Profiler 7 v1.0(SPR I) - часть большого зеленого пирога, под названием "ТИБЕРИУМНЫЙ РЕВЕРСИНГ" (статья опубликована в 159 номере ][. А позже, ещё одна итоговая статья - 199 ][), включает в себя собственно статью в журнале, ПОЛНУЮ техническую статью, материалы по SecuROM 7.33.0017, исходники X-кода и видео. Технический вариант статьи с приложениями можно брать отсюда:
Статья
Видео
Видео 2 (Продолжение)
Видео 3 (Окончательный разгром)
Видео 4 (В погоне за взломом DENUVO)
Имеет косвенное отношение к статье:
Видео косвенное

Хроники битвы при DENUVO 19.04.19
https://xakep.ru/2019/04/19/denuvo/

Message for the companies(etc) using this protection: we can buy SecuROM/DENUVO SDK & sources. Сontact me according to the personal message. Сonfidentiality is guaranteed!!! The bought files will be used for private research!

░░░░░░░░░░
См. также:
diff_trace

▓▓
{ Атач доступен только для участников форума } - Sony DADC SecuROM vulnerability.zip
{ Атач доступен только для участников форума } - PATENT DENUVO.pdf (притащил v00doo)


▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓
80_PA new 2.0 hotfix (!!!). Official links (mirrors):
https://mega.nz/#!L6gGBYBK!Y9X-6LFBdow6a1_IBlDFbrS6PBF4RRz_n9kuSGiI0UM (или --> 80_PA_v2.0 keygen link <--)
--> Mirror #1 <--
--> Mirror #2 <--

▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓
DENUVO Leak content
обращайтесь в личку - скину.

▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓
Denuvo Profiler (DProfiler) - test version 0.3 "INSPIRE"
https://mega.nz/#!DLwExKya!kCyFXw1roY3MkFaTO56LJAd-amc2yXWVerV2ic38bgs (или --> DProfiler link <--)

| Сообщение посчитали полезным: yanus0, obfuskator, Vovan666, MasterSoft, slick, hlmadip, ClockMan, Nightshade, Dart Raiden, Bronco, BAHEK, SReg, [Nomad], DimitarSerg, verdizela, yagello, OnLyOnE, FrenFolio, daFix, VodoleY, gena-m, m0bscene, Gideon Vi, ff0h, zeppe1in, antipod, huckfuck, kioresk, aRiX, 4kusNick, Ara, d0wn, Smon, audiofeel, zNob, cypherpunk, zzzombie1989, MarcElBichon, v00doo, DenCoder, nick7, Haoose-GP, arnix, Qbik, serilo, s2003r, DICI BF, Kindly, PavelDAS, HandMill, VanHelsing, random, TrueLies, warezhunter_, denfil777, alx30721, omeh2003, asm-jaime, WildGoblin, mushr00m, Flippy1801, KOTwasya, r3n5m388, chegevara, Groul, dnv83, kassane, ==DJ==[ZLO], red0x, HAOSov, rootkid, DirtyHarry, MacTep, kurorolucifer, s0cpy, aire1, ReloadUGunz, tRuNKator, Cherbet, RmK-FreE, Pringell, IHateInventNicknames, go2crck, mak, Dimosz, Creckerhack, zd0x, Mustafa_Dev007, UnnyBolt, Isaev, Astap1516, Voices_of_the_BULG, EHS4N, SnakeByte, KOCMOC42



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

Создано: 9 апреля 2020 20:04 · Поправил: Bronco New!
Цитата · Личное сообщение · #2

вот раньше подобного не было.
Code:
  1.  MEM_READ from TEB: 0000000000292030; value = 0000000000292000; size = 8
  2.   Address from code: 0000000150EE9D18 | TabIndex: 106748 | Current VM_BASE X86_REG_R15 
  3.  
  4.  MEM_READ from TEB: 0000000000292040; value = 0000000000000A64; size = 4
  5.   Address from code: 000000015111DA16 | TabIndex: 106757 | Current VM_BASE X86_REG_R15 
  6.  
  7. -Please expect! Current Timing: 00:00:54.938
  8. 1.Write instr->9000000 | 2.Skip instr->16232972 | 3.Skip size-> 0x3755E63(55.3 Mb) | 4.CountTabIndex->107843 | REG_FILE->vm_base_r15b.fpu 
  9.  
  10.  MEM_READ from TEB: 0000000000292010; value = 000000000013E000; size = 8
  11.   Address from code: 00000001485893DD | TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  12.  
  13.  MEM_READ_UNMAPPED address 0x5603C0 to membase 0x520000 at CIP 00000001505398F2, READ_WRITE
  14.  
  15.  2.MEM_READ from: 00000000005603C0; value = 0000000000000080; size = 2
  16.   Address from code: 00000001505398F2| TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  17.  

читает по байту
Code:
  1.  
  2.  2.MEM_READ from: 00000000005603C0; value = 0000000000000080; size = 2
  3.   Address from code: 00000001505398F2 | Address for page: 00000001324A0737 | TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  4.  
  5.  2.MEM_READ from: 0000000000560444; value = 0000000000000080; size = 2
  6.   Address from code: 00000001485A5900 | Address for page: 00000001324B38B5 | TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  7.  
  8.  2.MEM_READ from: 0000000000560448; value = 0000000000000010; size = 1
  9.   Address from code: 000000014858A2B9 | Address for page: 00000001324B42B0 | TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  10.  
  11.  2.MEM_READ from: 0000000000560448; value = 0000000000000010; size = 1
  12.   Address from code: 000000014858A60C | Address for page: 00000001324B475E | TabIndex: 109497 | Current VM_BASE X86_REG_R15 
  13.  
  14.  2.MEM_READ from: 0000000000560449; value = 0000000000000094; size = 1
  15.   Address from code: 000000014858A60C | Address for page: 00000001324B4C93 | TabIndex: 109497 | Current VM_BASE X86_REG_R15 

потом пишет к себе в раздел
Code:
  1.    - MEM_WRITE  in image: 00000001470FC895; size = 1; value = 0000000000000057
  2.    - MEM_WRITE  in image: 00000001470FC895; size = 1; value = 00000000000000FF
  3.    - MEM_WRITE  in image: 00000001470FC896; size = 1; value = 000000000000004F
  4.    - MEM_WRITE  in image: 00000001470FC896; size = 1; value = 00000000000000F2
  5.    - MEM_WRITE  in image: 00000001470FC897; size = 1; value = 000000000000004F
  6.    - MEM_WRITE  in image: 00000001470FC897; size = 1; value = 000000000000006B
  7.    - MEM_WRITE  in image: 00000001470FC898; size = 1; value = 000000000000004F

посмотрел по трассе, указатель читает из своего раздела, запись самого указателя в стартовом коде.
по бинарной цепочке похоже на лицуху, хотя хз его знает, как то млять зарыто глубоко:
Info at address: 0000000000520000
AllocationBase: 0000000000520000
RegionSize: 1020 K
Type: Private
Access: RW
Initail Access: RW
Shared: False
Shared count: 0
да и с лицухой обычно в стартовом коде прощаются, а тут вот така фуйня малята.
проверил аллокатор, в стартовом нифуя не лочит, на NtAllocateVirtualMemory до оеп прерываний нет.
дескрипторы (IDT&GDT) ?

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


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

Создано: 11 апреля 2020 15:29 New!
Цитата · Личное сообщение · #3

Всем привет,объясните если не сложно:
1.Система проверки лицензии в денуво
2.Загрузчик и его функции
3.Какие в данной защите есть проверки
Буду очень благодарен если поможете разобраться


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

Создано: 11 апреля 2020 16:42 New!
Цитата · Личное сообщение · #4

Astap1516 пишет:
объясните если не сложно:

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

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

Создано: 11 апреля 2020 17:05 New!
Цитата · Личное сообщение · #5

BroncoКак ты ведёшь лог с программы?


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

Создано: 11 апреля 2020 19:18 · Поправил: Bronco New!
Цитата · Личное сообщение · #6

Astap1516, я могу поболтать на тему дуньки, и то под настроение, и если ты в процессе анализа.
но на тему что и как делаю я, беседы не веду.

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

Создано: 11 апреля 2020 20:43 · Поправил: Astap1516 New!
Цитата · Личное сообщение · #7

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


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

Создано: 11 апреля 2020 21:17 New!
Цитата · Личное сообщение · #8

Astap1516 пишет:
Хорошо,какие регистры в основном использует дунька

под базу вм стакана, любой регистр общего пользования, кроме RSP.
базы могут менять после каждого исполнения оригинальной инструкции на вм,
а может быть и одна на всё тело, и бывает одна база но с разными рег_файлами.
в общем однозначности нет.
Astap1516 пишет:
и есть ли в ней таблица примитивов

я уже отвечал на этот вопрос, листай выше.
Astap1516 пишет:
В чём отличие таблицы примитивов от таблицы хэндлов?

это тождественно.

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

Создано: 11 апреля 2020 21:35 New!
Цитата · Личное сообщение · #9

Bronco,про рег_файлы можно по подробнее


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

Создано: 11 апреля 2020 21:43 · Поправил: Bronco New!
Цитата · Личное сообщение · #10

Astap1516 пишет:
про рег_файлы можно по подробнее

млять...это ппц, мне такое уже скучно.
страницу назад, ты разбирал код с еп загрузчика, и утверждал что это вм.
значит должен знать что такое рег_файл.
ты где топчешься?

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

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

Bronco,пардон за вопрос не про то подумал. Завтра буду дальше копаться и попробую свои наработки выложить

Добавлено спустя 12 часов 46 минут
Покопался я в новом Beyond two souls demo с дунькой и что я там заметил:
1)загрузчик поделили на несколько частей
2)фальшивые указатели на страницы перед выходом из функи используют lea для внесения указателя и уничтожают его xchg qword
3)ксорит DWORD/QWORD константы
Я топчусь на вм и загрузчике


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

Создано: 12 апреля 2020 18:38 New!
Цитата · Личное сообщение · #12

Astap1516 пишет:
1)загрузчик поделили на несколько частей

не считая первых двух, обычно в 3 разделах, tls и заполнение iat отдельно.
в первом разделе тупой цикл, в итоге ставит булку. для чего я не вникал.
во втором обычно шлак, вплоть до рег_файла.
Astap1516 пишет:
2)фальшивые указатели на страницы перед выходом из функи используют lea для внесения указателя и уничтожают его xchg qword
3)ксорит DWORD/QWORD константы
Я топчусь на вм и загрузчике

если упростить, то тут 2 потока. вм это основной,
сверху обфускация и код управление трассой - в основном это эмуляция безусловного перехода.
фейковые указатели для борьбы с Ида.
чтобы понять весь этот хлам, его надо выстроить в линейный ряд. забей счётчик до 10к инструкций, встроенный трассер в отладчике с этим справится.
от контекста старайся абстрагироваться. первая задача - удалить хлам, и эмуль джампа.

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

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

Вот лог трейса в x64dbg за 50000 шагов

https://dropmefiles.com/uAoib


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

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

Astap1516 пишет:
Вот лог трейса в x64dbg за 50000 шагов

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

Ранг: -1.1 (нарушитель)
Статус: Участник

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

А почему мне кейген SecuROM на двух разных системах в новом интерфейсе красным пишет про ошибку "Not your HWID!"? При этом сгенерированные коды прекрасно подходят. GTA: San Andreas из GFWL содержит вариацию этой блауковицкой "мамы". Сделать с этим что-нибудь можно?

P.S.
Послал Эльфу т.н. минимальный комплект.

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

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

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

Как снять скальп с инициализации cpuid?


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

Создано: 13 апреля 2020 20:21 · Поправил: Bronco New!
Цитата · Личное сообщение · #17

Astap1516 пишет:
более 2500 переходов в вм.

хз...нужно быть увереным что это вход именно в вм.
максимально что я встречал, это 150 вм_ентрю, хотя обычно 105 -110.
остальное это просто перемещённые тела из секции кода в секцию дуньки.
их может быть до 100к и больше. 7% из этого числа, с "мёртвым кодом".
либо зеро, либо цепочки байт, иногда в телах, могут быть таблицы индексов или дист.
где ячейки по 4 и 8 байт, это для ключей и указателей на ключи.
всё что больше, юзают под декрипт своей шняги, типа этой:
Code:
  1.          xor edi, edi
  2.          mov rbx, 0x7FFE0268
  3.  
  4. @L00000001:
  5.          add rbx, 0x4
  6.          add edi, dword ptr ds:[rbx]
  7.          cmp bx, 0x284
  8.          jl short @L00000001
  9.          add rbx, 0x64
  10.          add edi, dword ptr ds:[rbx]
  11.          sub rbx, 0x2BC
  12.  
  13. @L00000002:
  14.          add rbx, 0x4
  15.          add edi, dword ptr ds:[rbx]
  16.          cmp bx, 0x4C
  17.          jl short @L00000002
  18.          xor edi, 0x1AA9AC27
  19.          ret

сбор прыгов начинай с секции кода, сейчас много фейковых или дублей, их надо фильтровать_килять.
вм ентрю может измениться, но в том материале что я смотрел, это больше пары игр, оно было так:
Code:
  1.          call 0x000000014D4DAC20
  2. 000000014D4DAC20:
  3.          pushfq
  4.          cmp byte ptr ds:[0x000000014DAABFB2], 0x0
  5.          je short @L00000001
  6.          push rcx
  7.          push rdx
  8.          mov rcx, 0xDEEE0A66929E9DF
  9.          mov rdx, 0x144AC82D0
  10.          call 0x000000014BEAC850
  11.          pop rdx
  12.          pop rcx
  13.  
  14. @L00000001:
  15.          popfq
  16.          ret


Astap1516 пишет:
Как снять скальп с инициализации cpuid?

да их проще выловить, и пропатчить ретурн, их на самом деле не много.


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

Создано: 14 апреля 2020 00:48 New!
Цитата · Личное сообщение · #18

BroncoСколько я не смотрю на сруньку такое ощущение что её делали разные люди,вм писали под заказ 100%, как можно объяснить заполнение импорта таким способом
Code:
  1. lea rdx,qword ptr [156329FC7]========>GetUserNameW
  2. mov rcx,qword ptr [rsp + 28]
  3. mov rdx,rdx
  4. call qword ptr [<&GetProcAddress>]
  5. mov qword ptr [142BD8008],rax

где на каждую айпи идёт такой вызов......... и получаем мы 120api х 1С засратого кода


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

Создано: 14 апреля 2020 01:23 New!
Цитата · Личное сообщение · #19

ClockMan пишет:
ощущение что её делали разные люди

дык...там же команда, кто то шарит в битовых операциях, кто то занят эмулем прыга, кто то морфом, а кто то шлаком.
ну а кто то вот так заполняет иат, но где то 5% переходников перебито на иат загрузчика.
ClockMan пишет:
вм писали под заказ 100%

хз...по ходу это рука маэстро Блу...))
уж очень суровая вм, они её лелеят, поэтому нифуя не меняется.

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

Создано: 14 апреля 2020 11:24 · Поправил: Astap1516 New!
Цитата · Личное сообщение · #20

Вот полный дамп загрузчика,с указателями беда полная,стоит ли делать дамп загрузчика и вм до OEP?

Прикрутите его в виде секции кода
{ Атач доступен только для участников форума } - DumpLoader

Добавлено спустя 1 час 7 минут
ClockMan,я не эксперт но заполнение таблицы импорт довольно странное для каждой api вычисляет адрес,громосткий и странный способ заполнения iat


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

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

Astap1516 пишет:
Вот полный дамп загрузчика

это не загрузчик, это вход в вм, с рег файлом и со стартовым оператором множественного выбора, по простому свитч.
Astap1516 пишет:
стоит ли делать дамп загрузчика и вм до OEP?

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

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

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

Bronco,подскажи тогда чтобы я смог сориентироваться что из себя представляет загрузчик


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

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

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

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

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

Bronco,я правильно понял что сначало идёт вм а ближе к oep уже загрузчик?

Добавлено спустя 16 минут
Сколько всего может быть зависимостей от ПК? И если я правильно думаю то эти зависимости это просто DWORD/QWORD разбросанные в вм


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

Создано: 14 апреля 2020 13:31 · Поправил: Bronco New!
Цитата · Личное сообщение · #25

Astap1516, вм это обёртка над обычным кодом.
почему поленились сунуть под вм функционал загрузчика я хз..
Astap1516 пишет:
DWORD/QWORD

в основном 32 бита, 64 только для баз системных модулей.
часть раскидана по телам нормального кода, часть статических в служебном коде под вм.
ну а остальное от системы берёт.

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

Создано: 14 апреля 2020 14:51 · Поправил: Astap1516 New!
Цитата · Личное сообщение · #26

Broncoчто я заметил то что до oep вызывается всего 3 cpuid ,самое интересное куда он раскидывает эти данные ячеек в виде mov dword там нет в основном ксорит и сравнивает эти значения, если провести поиск по всему модулю то можно заметить то что cpuid инструкций более 100 и они или мусорные или как-то зашифрованы, так вот к чему я это я по твоему видео попробовал повторить похожее ,в новых версиях этого "шедевра" OEP не шифруется, но создаётся его копия аля vmprotect.

У меня одна проблема это image data directory initialisation check, как его найти


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

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

Astap1516 пишет:
самое интересное куда он раскидывает эти данные ячеек в виде mov dword там нет в основном ксорит и сравнивает эти значения

хз.. я же писал, что все логические операции идут через булевую матрицу.
сам алгоритм под вм, его так не увидишь. можно понять что за операция, если вышел на вход в матрицу.
ну это уже в практике, к примеру:
Code:
  1. sub rsp, 20:
  2. MOV R9, QWORD PTR DS:[R15 + 0x200]< vm_rsp <-var1
  3. MOV QWORD PTR DS:[R15 + 0x5D0], R9 
  4. MOV QWORD PTR DS:[R15 + 0x780], 0x20    <-var2
  5. MOV QWORD PTR DS:[R15 + 0xA30], 0x0
  6. MOV QWORD PTR DS:[R15 + 0x230], 0x1< var1 - var2
  7. add rsp, 20:
  8. MOV QWORD PTR DS:[R15 + 0x780], 0x20 < var1
  9. MOV QWORD PTR DS:[R15 + 0xA30], 0x0
  10. MOV R14, QWORD PTR DS:[R15 + 0x230] < vm_rsp
  11. MOV QWORD PTR DS:[R15 + 0x200], R14 < var 2
  12. MOV QWORD PTR DS:[R15 + 0x230], 0x0 < var1+var2

Astap1516 пишет:
до oep вызывается всего 3 cpuid

хвид формирует
Astap1516 пишет:
то что cpuid инструкций более 100

я же писал, что в каждом стыренном теле под лицензию, свой набор привязок для декрипта.
1 привязка = это декрипт 1 оригинальной инструкции, цпуайди не во всех телах.
а часть таких вызовов декриптуют в динамике.
Code:
  1.          push rax
  2.          push r14
  3.          mov r14, 0x1
  4.          xor rax, rax
  5.          lock cmpxchg dword ptr ds:[0x0000000146401D7B], r14d
  6.          pop r14
  7.          pop rax
  8.          mov dword ptr ds:[0x00000001502801F8], 0xBAC3A20F
  9.          call 0x00000001502801F8
  10. 0x00000001502801F8:
  11.          cpuid
  12.          ret
  13.          mov dword ptr ds:[0x00000001502801F8], 0xA7524DE1
  14.          push rax
  15.          push r13
  16.          xor r13, r13
  17.          mov rax, 0x1
  18.          lock cmpxchg dword ptr ds:[0x0000000146401D7B], r13d
  19.          pop r13
  20.          pop rax
  21.          mov r12d, ebx
  22.          sub r12d, 0x85C9252B
  23.          ret

+апп может юзать, это же гейм.
Astap1516 пишет:
У меня одна проблема это image data directory initialisation check, как его найти

я не понял что это. если это к системным модулям, то лови вызовы к TEB&PEB
Astap1516 пишет:
по твоему видео попробовал повторить похожее

в видосе гавнопрот загрузчик, а так всё то же самое. тогда было 2 антидампа, сейчас один.
Astap1516 пишет:
Выделенные страницы?

угу, + ключи для баз системных модулей

| Сообщение посчитали полезным: mkdev, mak, v00doo, Astap1516


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

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

Bronco,что за антидамп? Выделенные страницы?

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

Создано: 19 апреля 2020 18:25 · Поправил: Astap1516 New!
Цитата · Личное сообщение · #29

BroncoПосле многочасового исследования JC4 назрел вопрос зачем DENUVO v4 идёт на такие жертвы в плане использования xmmdword регистров пример
Code:
  1. 000000014024EA10 | 48:8BC4                    | mov rax,rsp                                               |
  2. 000000014024EA13 | 55                         | push rbp                                                  |
  3. 000000014024EA14 | 41:56                      | push r14                                                  |
  4. 000000014024EA16 | 41:57                      | push r15                                                  |
  5. 000000014024EA18 | 48:8DA8 38FFFFFF           | lea rbp,qword ptr ds:[rax-C8]                             |
  6. 000000014024EA1F | 48:81EC B0010000           | sub rsp,1B0                                               |
  7. 000000014024EA26 | 48:C74424 30 FEFFFFFF      | mov qword ptr ss:[rsp+30],FFFFFFFFFFFFFFFE                |
  8. 000000014024EA2F | 48:8958 08                 | mov qword ptr ds:[rax+8],rbx                              |
  9. 000000014024EA33 | 48:8970 10                 | mov qword ptr ds:[rax+10],rsi                             |
  10. 000000014024EA37 | 48:8978 18                 | mov qword ptr ds:[rax+18],rdi                             |
  11. 000000014024EA3B | 0F2970 D8                  | movaps xmmword ptr ds:[rax-28],xmm6                       |
  12. 000000014024EA3F | 0F2978 C8                  | movaps xmmword ptr ds:[rax-38],xmm7                       |
  13. 000000014024EA43 | 44:0F2940 B8               | movaps xmmword ptr ds:[rax-48],xmm8                       |
  14. 000000014024EA48 | 44:0F2948 A8               | movaps xmmword ptr ds:[rax-58],xmm9                       |
  15. 000000014024EA4D | 44:0F2950 98               | movaps xmmword ptr ds:[rax-68],xmm10                      |
  16. 000000014024EA52 | 44:0F2958 88               | movaps xmmword ptr ds:[rax-78],xmm11                      |
  17. 000000014024EA57 | 48:8BD9                    | mov rbx,rcx                                               |
  18. 000000014024EA5A | 0FB789 44010000            | movzx ecx,word ptr ds:[rcx+144]                           |
  19. 000000014024EA61 | F6C1 06                    | test cl,6                                                 |
  20. 000000014024EA64 | 0F84 79040000              | je justcause4.14024EEE3                                   |<-- В этом месте 
  21. 000000014024EA6A | 0FB6C1                     | movzx eax,cl                                              |
  22. 000000014024EA6D | C0E8 02                    | shr al,2                                                  |
  23. 000000014024EA70 | F6D0                       | not al                                                    |
  24. 000000014024EA72 | A8 01                      | test al,1                                                 |
  25. 000000014024EA74 | 75 72                      | jne justcause4.14024EAE8                                  |
  26. 000000014024EA76 | 48:8B05 2BC0A302           | mov rax,qword ptr ds:[142C8AAA8]                          |
  27. 000000014024EA7D | 48:8B90 98000000           | mov rdx,qword ptr ds:[rax+98]                             |
  28. 000000014024EA84 | 48:C1E2 07                 | shl rdx,7                                                 |
  29. 000000014024EA88 | 41:B8 80000000             | mov r8d,80                                                |
  30. 000000014024EA8E | 6641:23D0                  | and dx,r8w                                                |
  31. 000000014024EA92 | 0FB7C1                     | movzx eax,cx                                              |
  32. 000000014024EA95 | 6641:23C0                  | and ax,r8w                                                |
  33. 000000014024EA99 | 66:3BC2                    | cmp ax,dx                                                 |
  34. 000000014024EA9C | 74 4A                      | je justcause4.14024EAE8                                   |
  35. 000000014024EA9E | 0F1083 04010000            | movups xmm0,xmmword ptr ds:[rbx+104]                      |
  36. 000000014024EAA5 | 0F1183 C4000000            | movups xmmword ptr ds:[rbx+C4],xmm0                       |
  37. 000000014024EAAC | 0F108B 14010000            | movups xmm1,xmmword ptr ds:[rbx+114]                      |
  38. 000000014024EAB3 | 0F118B D4000000            | movups xmmword ptr ds:[rbx+D4],xmm1                       |
  39. 000000014024EABA | 0F1083 24010000            | movups xmm0,xmmword ptr ds:[rbx+124]                      |
  40. 000000014024EAC1 | 0F1183 E4000000            | movups xmmword ptr ds:[rbx+E4],xmm0                       |
  41. 000000014024EAC8 | 0F108B 34010000            | movups xmm1,xmmword ptr ds:[rbx+134]                      |
  42. 000000014024EACF | 0F118B F4000000            | movups xmmword ptr ds:[rbx+F4],xmm1                       |
  43. 000000014024EAD6 | B8 7FFF0000                | mov eax,FF7F                                              |
  44. 000000014024EADB | 66:23C8                    | and cx,ax                                                 |
  45. 000000014024EADE | 66:0BCA                    | or cx,dx                                                  |
  46. 000000014024EAE1 | 66:898B 44010000           | mov word ptr ds:[rbx+144],cx                              |
  47. 000000014024EAE8 | 33F6                       | xor esi,esi                                               |
  48. 000000014024EAEA | 48:897424 20               | mov qword ptr ss:[rsp+20],rsi                             |
  49. 000000014024EAEF | 48:8BBB 68010000           | mov rdi,qword ptr ds:[rbx+168]                            |
  50. 000000014024EAF6 | 48:897C24 28               | mov qword ptr ss:[rsp+28],rdi                             |
  51. 000000014024EAFB | 48:85FF                    | test rdi,rdi                                              |
  52. 000000014024EAFE | 74 40                      | je justcause4.14024EB40                                   |
  53. 000000014024EB00 | 8B57 08                    | mov edx,dword ptr ds:[rdi+8]                              |
  54. 000000014024EB03 | 85D2                       | test edx,edx                                              |
  55. 000000014024EB05 | 0F84 A5010000              | je justcause4.14024ECB0                                   |
  56. 000000014024EB0B | 8D4A 01                    | lea ecx,qword ptr ds:[rdx+1]                              |
  57. 000000014024EB0E | 8BC2                       | mov eax,edx                                               |
  58. 000000014024EB10 | F0:0FB14F 08               | lock cmpxchg dword ptr ds:[rdi+8],ecx                     |
  59. 000000014024EB15 | 74 06                      | je justcause4.14024EB1D                                   |
  60. 000000014024EB17 | 8BD0                       | mov edx,eax                                               |
  61. 000000014024EB19 | 85C0                       | test eax,eax                                              |
  62. 000000014024EB1B | EB E8                      | jmp justcause4.14024EB05                                  |
  63. 000000014024EB1D | 85D2                       | test edx,edx                                              |
  64. 000000014024EB1F | 0F84 8B010000              | je justcause4.14024ECB0                                   |
  65. 000000014024EB25 | 48:8B7C24 28               | mov rdi,qword ptr ss:[rsp+28]                             |
  66. 000000014024EB2A | 48:8B7424 20               | mov rsi,qword ptr ss:[rsp+20]                             |
  67. 000000014024EB2F | 48:85FF                    | test rdi,rdi                                              |
  68. 000000014024EB32 | 74 0C                      | je justcause4.14024EB40                                   |
  69. 000000014024EB34 | 48:8BB3 60010000           | mov rsi,qword ptr ds:[rbx+160]                            |
  70. 000000014024EB3B | 48:897424 20               | mov qword ptr ss:[rsp+20],rsi                             |
  71. 000000014024EB40 | 48:85F6                    | test rsi,rsi                                              |
  72. 000000014024EB43 | 0F84 FF020000              | je justcause4.14024EE48                                   |
  73. 000000014024EB49 | 0FB783 44010000            | movzx eax,word ptr ds:[rbx+144]                           |
  74. 000000014024EB50 | B9 08010000                | mov ecx,108                                               |
  75. 000000014024EB55 | 66:23C1                    | and ax,cx                                                 |
  76. 000000014024EB58 | B9 00010000                | mov ecx,100                                               |
  77. 000000014024EB5D | 66:3BC1                    | cmp ax,cx                                                 |
  78. 000000014024EB60 | 0F85 E2020000              | jne justcause4.14024EE48                                  |
  79. 000000014024EB66 | F686 44010000 01           | test byte ptr ds:[rsi+144],1                              |
  80. 000000014024EB6D | 0F85 4F010000              | jne justcause4.14024ECC2                                  |
  81. 000000014024EB73 | 44:0F109E 04010000         | movups xmm11,xmmword ptr ds:[rsi+104]                     |
  82. 000000014024EB7B | 44:0F115C24 48             | movups xmmword ptr ss:[rsp+48],xmm11                      |
  83. 000000014024EB81 | 44:0F1086 14010000         | movups xmm8,xmmword ptr ds:[rsi+114]                      |
  84. 000000014024EB89 | 44:0F114424 58             | movups xmmword ptr ss:[rsp+58],xmm8                       |
  85. 000000014024EB8F | 44:0F1096 24010000         | movups xmm10,xmmword ptr ds:[rsi+124]                     |
  86. 000000014024EB97 | 44:0F115424 68             | movups xmmword ptr ss:[rsp+68],xmm10                      |
  87. 000000014024EB9D | 0F10BE 34010000            | movups xmm7,xmmword ptr ds:[rsi+134]                      |
  88. 000000014024EBA4 | 0F117C24 78                | movups xmmword ptr ss:[rsp+78],xmm7                       |
  89. 000000014024EBA9 | F3:0F6F83 84000000         | movdqu xmm0,xmmword ptr ds:[rbx+84]                       |

Блок кода которой обходится исправлением одного переходника по адресу 000000014024EA64 ,смешно и страшно ведь это целая структкра

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

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

Помогите доделать скрипт для фиксирования всех примитивов для x64dbg
Code:
  1. cls
  2. bphws 000000014045D064, "x"//OEP
  3. region1 = 0000000141D9E000 // srdata
  4. region2 = 00000001541FF000 // reloc
  5. region3 = 0000000140001000 // xdata
  6. counter = 0
  7. next:
  8. find region1,"498B04C4"
  9. cmp $result,0
  10. je find2
  11. bphws $result, "x"
  12. erun
  13. log {d:0} : {p:1},counter
  14. STEP
  15. log rax={rax}
  16. counter++
  17. jmp next
  18. find2:
  19. find region2,"498B04C4"
  20. cmp $result,0
  21. je find3
  22. bphws $result, "x"
  23. erun
  24. log {d:0} : {p:0},counter
  25. STEP
  26. log rax={rax}
  27. counter++
  28. jmp find2
  29. find3:
  30. find region3,"498B04C4"
  31. cmp $result,0
  32. je exit
  33. bphws $result, "x"
  34. erun
  35. log {d:0} : {p:1},counter
  36. log rax={rax}
  37. counter++
  38. jmp find3
  39. exit:
  40. log "RET"
  41. log "Count : {d:0}",counter
  42. ret

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


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

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

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

упс...держите меня, ща наталмудю..))
во первых, скриптовой двиг, это не ИИ. что написал, то он и исполняет.
адрес результа клади в переменную, смещай его на длину паттерна, тем самым задавая новый адрес поиска, а не постоянно базовый.
--> Link <--, или результ заливай нопами.
во ..., индексация, не только в диспетчере без условных переходов, она есть и в диспетчерАХ регистров общего пользования, и в менеджере условных переходов, и в регфайлах.
в ..., в чистом виде, в коде диспетчера бывает только условная пересылка типа "CMOVB R14W, WORD PTR DS:[R13+0x940]", остальное всё размазано морфом.
в ..., их на самом деле очень дофуя, хотя для переходов по примитивам, как правило юзают от 4 до 10.
в ..., знать нужно только вход и выход.
в общем плохая идея для скрипта.

Astap1516 пишет:
Блок кода которой обходится исправлением одного переходника

отцепись от оригинального кода апа, ведь это видно даже по адресам расположения кода.
Astap1516 пишет:
зачем DENUVO v4

а вот тут млять подробней, то бишь первые 3 ты изучил, увидел разницу, и пронумеровал?
<< 1 ... 45 . 46 . 47 . 48 . 49 . 50 . 51 . 52 . 53 . >>
 eXeL@B —› Протекторы —› Crack SecuROM & DENUVO

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