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

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

Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 15 апреля 2018 21:20 · Поправил: RoKZaR
· Личное сообщение · #1

Добрый вечер дамы и господа))
Возникла трабла с крекми. Сразу оговорюсь делал по такому способу много раз.
Крекми создает дочерний процесс который запускается через ResumeThread. Вроде все просто но есть одно но: когда я дохожу до resume thread создается два дочерних процесса. И причем ни один не дампится ни через process explorer, ни через pe tools, ни через дичпетчер задач.
Как делал я:
1. запускаем крекми в отлдачике (в моем случае это x64dbg)
2. ставим бряк на Resume thread
3. тапаем F9. Тормозимся на вызове ResumeThread.
4. доходим трассировкой до вызова NtResumeThread
5. идем в process explorer и пытаемся дампить.
Как то так. Может я что-то неправильно делаю...
Крекми прилагается. http://rgho.st/8jRpw6YVq



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

Создано: 15 апреля 2018 21:23 · Поправил: dosprog
· Личное сообщение · #2

RoKZaR пишет:
rgho.st/8tysn6wnC

"Доступ к файлу запрещён".





Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 15 апреля 2018 21:32
· Личное сообщение · #3

Поправил




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

Создано: 15 апреля 2018 21:36 · Поправил: mysterio
· Личное сообщение · #4

Поправил
Да ты везучий - "Доступ к файлу запрещён".

... мог бы избавить от мучений с заливкой и просто дать ссылку на оригинал.

-----
Don_t hate the cracker - hate the code.




Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 15 апреля 2018 21:38
· Личное сообщение · #5

http://dropmefiles.com/YXUbB
Гребаный файлообменник. Пароль 1234




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 15 апреля 2018 22:31
· Личное сообщение · #6

RoKZaR
Всё правильно, так дампиться оно не будет и не должно. Ставим волшебные байтики EBFE на месте, где должен начать своё выполнение новый поток, потом делаем ResumeThread, потом аттачимся и байтики возвращаем.

Ну или из ядра дампить через KeStackAttachProcess.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 15 апреля 2018 23:21
· Личное сообщение · #7

Что то я не догоняю. Где взять начало треда? Я сравнил вкладку потоки до и после там ничего не изменилось. Oep дочернего процесса я не знаю. Всегда делал по этому методу https://www.youtube.com/watch?v=2AtB9g5zjsg . Не реклама!!! Но в это раз что то сложно. И еще за что отвечает второй дочерний процесс??




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

Создано: 15 апреля 2018 23:41
· Личное сообщение · #8

ARCHANGEL

> Ну или из ядра дампить через KeStackAttachProcess.

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

Добавлено спустя 10 минут
RoKZaR

> Что то я не догоняю. Где взять начало треда?

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

-----
vx




Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 16 апреля 2018 00:01 · Поправил: RoKZaR
· Личное сообщение · #9

Такс) Похоже мы о разных вещах глаголим. Распишу еще раз.
Дохожу до resumethread
К этому времени в processexplorer два дочерних процесса

В дебагере 3 потока. Они как с начала были так в таком состоянии и остаются.

Вот я и не понимаю что делать дальше.
От ядерных отладчиков я пока очень далек.
Не серчайте я новичок и пока сложно для меня это.



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

Создано: 16 апреля 2018 08:49
· Личное сообщение · #10

зачем вам крэкми возьмите реальную программу например талисман или телепорт про самое то для новичков



Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 16 апреля 2018 09:37
· Личное сообщение · #11

У меня задача освоить этот вид распаковки. Я прошу совета как решить ЭТОТ крэкми.




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

Создано: 16 апреля 2018 11:00 · Поправил: mysterio
· Личное сообщение · #12

То о чем говорил ARCHANGEL на видео с 1:30.

Oep дочернего процесса я не знаю.
Чтобы узнать oep нужно его сдампить. Запуск с правами админа - таргета и дампера.

Из за таких как вы ....
Открываем сообщение #4 этой темы смотрим внимательно путь - ... UnpackMe's - Format Specific / UnpackMe (PE32bit) - какое совпадение что "дамп нужен для файловой распаковки". Хватит тебе уже употреблять .... а то из-за таких как ты, новички будут думать что "Visual C++ 12.0 (Visual Studio 2012)" это такой слой протектора.

-----
Don_t hate the cracker - hate the code.


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


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

Создано: 16 апреля 2018 14:58
· Личное сообщение · #13

mysterio

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

RoKZaR

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

Какой то не логичный ход решения.

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 16 апреля 2018 15:46
· Личное сообщение · #14

difexacaw пишет: Какой то не логичный ход решения.

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



Ранг: 9.0 (гость), 6thx
Активность: 0.030.02
Статус: Участник

Создано: 16 апреля 2018 17:07
· Личное сообщение · #15

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

У меня алгоритм был такой:
В ольке опцию брякаться на System Breakpoint, бряк на ZwContinue, чуть потрейсил, вышел на такое (похоже на выход на ОЕП):

Code:
  1. 003D720A    55              PUSH EBP
  2. 003D720B    8BEC            MOV EBP, ESP
  3. 003D720D    53              PUSH EBX
  4. 003D720E    56              PUSH ESI
  5. 003D720F    57              PUSH EDI
  6. 003D7210    8B4C24 F4       MOV ECX, DWORD PTR [ESP-0xC]
  7. 003D7214    64:890D 0000000>MOV DWORD PTR FS:[0], ECX
  8. 003D721B    5F              POP EDI
  9. 003D721C    5E              POP ESI
  10. 003D721D    5B              POP EBX
  11. 003D721E    C9              LEAVE
  12. 003D721F    83C4 3C         ADD ESP, 0x3C
  13. 003D7222    A1 B8073F00     MOV EAX, DWORD PTR [0x3F07B8]
  14. 003D7227    894424 1C       MOV DWORD PTR [ESP+0x1C], EAX
  15. 003D722B    61              POPAD
  16. 003D722C    FFE0            JMP EAX <<<<<<<<<<<<<<<<<< OEP


Импорт по*уйкан, выполняется через "классичечкую" прослойку с функции декрипта имени Api-функции, GetProcAddress и JMP api_addr.

Code:
  1. 00346A38    60                  PUSHAD
  2. 00346A39    E8 00000000         CALL 00346A3E
  3. 00346A3E    5D                  POP EBP
  4. 00346A3F    81ED 3F463D00       SUB EBP, 0x3D463F
  5. 00346A45    FFB5 B1463D00       PUSH DWORD PTR [EBP+0x3D46B1]
  6. 00346A4B    FFB5 B5463D00       PUSH DWORD PTR [EBP+0x3D46B5]
  7. 00346A51    FFB5 B9463D00       PUSH DWORD PTR [EBP+0x3D46B9]
  8. 00346A57    FFB5 A9463D00       PUSH DWORD PTR [EBP+0x3D46A9]
  9. 00346A5D    FFB5 AD463D00       PUSH DWORD PTR [EBP+0x3D46AD]
  10. 00346A63    E8 08000000         CALL 00346A70
  11. 00346A68    894424 1C           MOV DWORD PTR [ESP+0x1C], EAX
  12. 00346A6C    61                  POPAD
  13. 00346A6D    FFE0                JMP EAX                   <<<<<<<<<<<<<< CALL API FUNC
  14. 00346A6F    C3                  RETN
  15. 00346A70    55                  PUSH EBP
  16. 00346A71    8BEC                MOV EBP, ESP
  17. 00346A73    83C4 FC             ADD ESP, -0x4
  18. 00346A76    2B65 14             SUB ESP, DWORD PTR [EBP+0x14]
  19. 00346A79    8965 FC             MOV DWORD PTR [EBP-0x4], ESP
  20. 00346A7C    8B4D 14             MOV ECX, DWORD PTR [EBP+0x14]
  21. 00346A7F    8B75 10             MOV ESI, DWORD PTR [EBP+0x10]
  22. 00346A82    8B7D FC             MOV EDI, DWORD PTR [EBP-0x4]
  23. 00346A85    F3:A4               REP MOVS BYTE PTR ES:[EDI], BYTE PTR [ES>
  24. 00346A87    FF75 FC             PUSH DWORD PTR [EBP-0x4]
  25. 00346A8A    FF55 18             CALL DWORD PTR [EBP+0x18]  <<<<<<<<<<<< DECRYPT API NAME
  26. 00346A8D    FF75 FC             PUSH DWORD PTR [EBP-0x4]
  27. 00346A90    FF75 0C             PUSH DWORD PTR [EBP+0xC]
  28. 00346A93    FF55 08             CALL DWORD PTR [EBP+0x8]   <<<<<<<<<<<< GetProcAddress
  29. 00346A96    50                  PUSH EAX
  30. 00346A97    8B7D FC             MOV EDI, DWORD PTR [EBP-0x4]
  31. 00346A9A    8B4D 14             MOV ECX, DWORD PTR [EBP+0x14]
  32. 00346A9D    32C0                XOR AL, AL
  33. 00346A9F    F3:AA               REP STOS BYTE PTR ES:[EDI]
  34. 00346AA1    58                  POP EAX
  35. 00346AA2    8BE5                MOV ESP, EBP
  36. 00346AA4    5D                  POP EBP
  37. 00346AA5    C2 1400             RETN 0x14                                        





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

Создано: 16 апреля 2018 18:29 · Поправил: mysterio
· Личное сообщение · #16

dsrabot1
Тоже не гуру анпака, но ..... Что "такого" посоветовал ARCHANGEL (полностью с ним согласен) или я ? Мой совет касался "Крекми создает дочерний процесс который запускается через ResumeThread" - чтобы узнать OEP этого дочернего процесса его нужно сдампить предварительно запустив в дебагере (кто конечно по "круче" может OEP прямо в памяти посмотреть, или распаковать не запуская). У меня этот анпакми не запускается.

поделись логичными рассуждениями
все три слова по отоношению к инде взаимоисключающие.

-----
Don_t hate the cracker - hate the code.




Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 16 апреля 2018 22:13
· Личное сообщение · #17

Вообщем у меня получилось слить полностью рабочий дамп)))
dsrabot1 пишет:
Распаковка никогда не была моей сильной стороной

К oep пришел правильно но импорт тут не нужен потому что в дампе он целый. Это обычное получение адресов и их выполнение чтобы создать и выполнить дочерний процесс (поправьте если не так)
ARCHANGEL пишет:
Ставим волшебные байтики EBFE

Собственно их не надо ставить. Незачем. А вот про аттач к процессу спасибо) Очень помогло. Просто до этого приаттачиться не мог потом разобрался
Спасибо mysterio,ARCHANGEL ну и всем остальным!
Оказалось все не так сложно! Сейчас распишу как сделал. Пусть это останется в архиве пресвященного exelab
1)Открываем закриптованный файл в отладчике и нас ждет стандартное начало aspra. Видимо просто для путаницы сделали.
Code:
  1. 20001061 | 68 79 2A 04 20           | push unpackme_cube crypt0r.20042A79                                    |
  2. 20001066 | E8 01 00 00 00           | call unpackme_cube crypt0r.2000106C                                    |
  3. 2000106B | C3                       | ret                                                                    |
  4. 2000106C | C3                       | ret                                                                    |

2)Выходим из этой процедуры и оказываемся здесь
Code:
  1. 20042A79 | 60                       | pushad                                                                 |
  2. 20042A7A | E8 03 00 00 00           | call unpackme_cube crypt0r.20042A82                                    |
  3. 20042A7F | E9 EB 04 5D 45           | jmp 65612F6F                                                           |
  4. 20042A84 | 55                       | push ebp                                                               |
  5. 20042A85 | C3                       | ret                                                                    |

3)Проходим pushad и ставим бряк на регистр ESP. Пару раз нажимаем f9 пока не оказываемся здесь
Code:
  1. 0268722B | 61                       | popad                                                                  |
  2. 0268722C | FF E0                    | jmp eax                                                                |
  3. 0268722E | 5F                       | pop edi                                                                | edi:EntryPoint
  4. 0268722F | 5E                       | pop esi                                                                | esi:EntryPoint
  5. 02687230 | 5B                       | pop ebx                                                                |
  6. 02687231 | 5D                       | pop ebp                                                                |
  7. 02687232 | C3                       | ret                                                                    |

4)А в eax у нас лежит адрес oep основного процесса.
Code:
  1. 2004CDC0 | 55                       | push ebp                                                               |
  2. 2004CDC1 | 8B EC                    | mov ebp,esp                                                            |
  3. 2004CDC3 | 83 C4 EC                 | add esp,FFFFFFEC                                                       |
  4. 2004CDC6 | 53                       | push ebx                                                               |
  5. 2004CDC7 | 56                       | push esi                                                               | esi:EntryPoint
  6. 2004CDC8 | 57                       | push edi                                                               | edi:EntryPoint
  7. 2004CDC9 | 33 C0                    | xor eax,eax                                                            |
  8. 2004CDCB | 89 45 EC                 | mov dword ptr ss:[ebp-14],eax                                          |
  9. 2004CDCE | B8 D0 CB 04 20           | mov eax,unpackme_cube crypt0r.2004CBD0                                 |
  10. 2004CDD3 | E8 54 8F FB FF           | call unpackme_cube crypt0r.20005D2C                                    |

5) Ставим бряк на ResumeThread и отпускаем программу не забыв снять бряк с ESP. Оказываемся в вызове процедуры ResumeThread. Доходим до call NtResumeThread но не выполняем ее
Code:
  1. 745BBD80 | 8B FF                    | mov edi,edi                                                            |
  2. 745BBD82 | 55                       | push ebp                                                               |
  3. 745BBD83 | 8B EC                    | mov ebp,esp                                                            |
  4. 745BBD85 | 51                       | push ecx                                                               |
  5. 745BBD86 | 8D 45 FC                 | lea eax,dword ptr ss:[ebp-4]                                           |
  6. 745BBD89 | 50                       | push eax                                                               |
  7. 745BBD8A | FF 75 08                 | push dword ptr ss:[ebp+8]                                              |
  8. 745BBD8D | FF 15 A0 88 65 74        | call dword ptr ds:[<&NtResumeThread>]                                  |

6)Открываем второй отладчик и приатачиваемся ко второму дочернему процессу и нажимаем f9
7)Ставим бряк на секцию по адресу 400000 на доступ и в первом отладчике выполняем call NtResumeThread
8)Брякнемся на настоящей oep по адресу 4271b0
Code:
  1. 004271B0 | 55                       | push ebp                                                               |
  2. 004271B1 | 8B EC                    | mov ebp,esp                                                            |
  3. 004271B3 | 6A FF                    | push FFFFFFFF                                                          |
  4. 004271B5 | 68 60 0E 45 00           | push 450E60                                                            |
  5. 004271BA | 68 C8 92 42 00           | push 4292C8                                                            |
  6. 004271BF | 64 A1 00 00 00 00        | mov eax,dword ptr fs:[0]                                               |
  7. 004271C5 | 50                       | push eax                                                               |
  8. 004271C6 | 64 89 25 00 00 00 00     | mov dword ptr fs:[0],esp                                               |
  9. 004271CD | 83 C4 A8                 | add esp,FFFFFFA8                                                       |
  10. 004271D0 | 53                       | push ebx                                                               |
  11. 004271D1 | 56                       | push esi                                                               |
  12. 004271D2 | 57                       | push edi                                                               |
  13. 004271D3 | 89 65 E8                 | mov dword ptr ss:[ebp-18],esp                                          |
  14. 004271D6 | FF 15 DC 0A 46 00        | call dword ptr ds:[<&GetVersion>]                                      |

9)Делаем дамп pe tools (Сцилка почему то отказалась делать мне дамп) и восстанавливаем импорт (импорт целый и тут сцилка справилась нормально)
10) Profit! У нас есть рабочий дамп со снятым криптором)
p.s. Ушел весь вечер чтобы понять что я делал неправильно.
p.p.s. Подвел process explorer. Да и не нужен он вовсе.
Еще раз всем спасибо! Если где то был неточен или неправ поправьте.



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 16 апреля 2018 22:49
· Личное сообщение · #18

RoKZaR пишет: Сцилка почему то отказалась делать мне дамп

standalone версия обычно без бубна дампит, а встроенная в отладчик работает в зависимости от фазы луны.



Ранг: 14.3 (новичок), 5thx
Активность: 0.070
Статус: Участник

Создано: 16 апреля 2018 23:16
· Личное сообщение · #19

Тему закрываю.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 16 апреля 2018 23:41
· Личное сообщение · #20

Автор сам может закрыть свою тему, кнопка "Закрыть тему" находится внизу страницы, под кнопкой "Отправить сообщение".


 eXeL@B —› Вопросы новичков —› Странный крекми
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати