Сейчас на форуме: asfa, _MBK_, Adler (+8 невидимых)

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

Ранг: 49.7 (посетитель), 19thx
Активность: 0.050
Статус: Участник

Создано: 27 июля 2012 16:58 · Поправил: sivorog
· Личное сообщение · #1

имеется freeware прога, зачем-то накрытая Темидой
я использовал скрипт от LCF-AT - Themida - Winlicense 1.x - 2.x Multi PRO Edition 1.2.txt
скрипт не нашел VM OEP непосредственно; сказал, что
Code:
  1. VM OEP Address not found! Rebuild it!
  2. VM PUSH is 1665A9FB
  3. VM JUMP is 516CA6

только я в это не врубился...
далее, он нормально нашел ОЕП классическую, т.е. в секции кода.

Code:
  1. 0047E250 > $ E8 9E040000    CALL scy_try_.0047E6F3
  2. 0047E255   .^E9 63FDFFFF    JMP scy_try_.0047DFBD
  3. 0047E25A     CC             INT3
  4. 0047E25B     CC             INT3
  5. 0047E25C     CC             INT3
  6. 0047E25D     CC             INT3
  7. 0047E25E     CC             INT3
  8. 0047E25F     CC             INT3
  9. 0047E260  /$ 53             PUSH EBX
  10. 0047E261  |. 56             PUSH ESI
  11. 0047E262  |. 8B4424 18      MOV EAX,DWORD PTR SS:[ESP+18]
  12. 0047E266  |. 0BC0           OR EAX,EAX
  13. 0047E268  |. 75 18          JNZ SHORT scy_try_.0047E282
  14. 0047E26A  |. 8B4C24 14      MOV ECX,DWORD PTR SS:[ESP+14]
  15. 0047E26E  |. 8B4424 10      MOV EAX,DWORD PTR SS:[ESP+10]
  16. 0047E272  |. 33D2           XOR EDX,EDX
  17. .....


я снял дамп Сциллой, вправил импорт, запускаю результат. Тут самое интересное - появляется в трее иконка проги (она и должна появиться), но только появилась - слышится ДУНГ и процесс обрубается.
ах да, я ж еще пропатчил CrashRpt.dll, а то он швырялся в меня zip архивами весом по 9 Кб
теперь не швыряется.
ковырялся я , трассировал по частям оригинальный exe и дамп, выходит что там регистры разнятся - это я исправил, но еще и со стеком что-то надо сделать, по-моему.
нашел место ошибки -
Code:
  1. 0041EF8A  |. FF15 74EA4800  CALL DWORD PTR DS:[<&QtGui4.?showNormal@>; QtGui4.?showNormal@QWidget@@QAEXXZ


перед ней в обоих вариантах (в защищенном ехе и в дампе) отличается только значения ESI - в оригинале 003D5670, в дампе 010156A8.
т.е. неверные аргументы, по всей видимости.
замена ESI прямо в Олли не дает эффекта - тот же ДУНГ.

и тут я подумал: Темиду я снял, а не все восстановил, что ли?

http://rghost.ru/39331771 (8 Мб) - repack, там нужно будет запустить "appdata.sufree.exe", он добавит ini файлы. без них прога не хочет работать.
если у кого вдруг не пашет repack, то
http://rghost.ru/39331663 - оригинальный сетап (16 Мб)
http://rghost.ru/39435819 - мои дампы (3,1 Мб)




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

Создано: 27 июля 2012 20:51 · Поправил: -=AkaBOSS=-
· Личное сообщение · #2

sivorog пишет:
нашел место ошибки

думаешь? а теперь поставь бряк сюда:
Code:
  1. 0041F811   call dword ptr ds:[48ED3C]               ; CrashRpt.1000940F

и увидишь, как происходит вызов х@# пойми чего
походу, в твоих дампах с .48EC40 до .48EDFC недовосстановлен импорт

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


Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 28 июля 2012 07:16
· Личное сообщение · #3

1.
Code:
  1. /*487605*/  LEA ECX,[EBP-BC]
  2. /*48760B*/  JMP 670B1910=========>должно jmp [XXXXXXXX]
  3. /*487610*/  DB 04
  4. /*487611*/  LEA ECX,[EBP-B4]
  5. /*487617*/  JMP [48E868]
  6. /*48761D*/  MOV ECX,[EBP-B0]
  7. /*487623*/  JMP 670B1910==========>тоже самое(скрипт аля кирдык неправильно сработал)
  8. /*487628*/  DB B3
  9. /*487629*/  MOV ECX,[EBP-C0]
  10. /*48762F*/  JMP [48E868]


2.
Таблица IAT
Восстановлена некорекно.
Программа использует API Themida
Код вызова
Code:
  1. /*46CC2D*/  RETN 0C
  2. /*46CC30*/  JMP [48EC38]====>вызов API (Hardvare ID)
  3. /*46CC36*/  INT3

IAT
Code:
  1. 0048EC38 >0069D750

Всё что ниже 0048EC38, программа решила что ненужно и обрезола пол таблици

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


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

Ранг: 49.7 (посетитель), 19thx
Активность: 0.050
Статус: Участник

Создано: 28 июля 2012 12:44 · Поправил: sivorog
· Личное сообщение · #4

-=AkaBOSS=-
да, я уже это встречал, аля кирдык выбрасывает в QT-шное ядро

Code:
  1. 6701E12F   85C0             TEST EAX,EAX
  2. 6701E131   74 14            JE SHORT QtCore4.6701E147
  3. 6701E133   83F8 FF          CMP EAX,-1
  4. 6701E136   75 14            JNZ SHORT QtCore4.6701E14C
  5. 6701E138   68 08471567      PUSH QtCore4.67154708                    ; ASCII "QThread::wait: Thread wait failure"
  6. 6701E13D   E8 3E9EFFFF      CALL QtCore4.?qErrnoWarning@@YAXPBDZZ

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

add

это Сцилла ошиблась!
щас я взял Imports Fixer 1.6 в паре со скриптом, сначала "Get imports - auto scan", отрезал инвалидные,
далее добавил из лога Олли значения начала ИАТ и ее размера (через IAT manual adding), поставил ОЕП, пофиксил дамп - работает!!
http://rghost.ru/39465632 (1,8 МБ) - отрезал секцию azwsbkvs; 5-ю секцию с пустым именем нельзя просто так отрезать, там ВМ-ский темидовский код делается. щас вот трассирую эту ерунду.

add
http://rghost.ru/39468445 - повыкидывал bin мусор из секции ВМ, затер сертификат
RAR ужимает теперича до 1,04 МБ, PECompact - до 0,98 МБ



Ранг: 49.7 (посетитель), 19thx
Активность: 0.050
Статус: Участник

Создано: 23 августа 2012 18:57 · Поправил: sivorog
· Личное сообщение · #5

ёшкин кот, сколько мусора в этой ВМ этой Темиды!!
причем там не только скопированные куски (сжатые) из исходного файла - типа после проверки CRC их из памяти (эти куски) не выгружают ,
так еще и дох@@ кода, который никогда не исполняется!
причем, и это самое поганое, этот мусорный ВМ-ский код легко спутать с ВМ-ским кодом, который реально исполняется. Поскольку они очччень похожи внешне.
секцию ВМ я не удалил, т.к. при загрузке проги происходят прыжки туда-сюда из секции кода в ВМ и обратно, не менее 10 раз. VMSweeper я попробовал, он сказал, что ничего сущечтвенного не видит.
...короче, я уменьшил Raw Size ВМ-ской секции, повыкидывал мусор оттуда, и теперь дамп мой работающий весит 2,63 МБ и ужимается (7-zip) до 399 Кб
также выкинул ланг файлы, ...
теперь вместо установщика, который весит под 16 Мб, можно пользоваться SFX архивом размером ~5,5 Мб

a865_23.08.2012_EXELAB.rU.tgz - ___.7z



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

Создано: 24 августа 2012 11:51
· Личное сообщение · #6

sivorog

А ты попробуй восстановить оригинальный код программы с помощью плагина Oreans UnVirtualizer 1.5, и вырежи лишние секции, созданные протектором. И все будет пучком.



Ранг: 49.7 (посетитель), 19thx
Активность: 0.050
Статус: Участник

Создано: 24 августа 2012 12:51 · Поправил: sivorog
· Личное сообщение · #7

vnekrilov
так пробовал же, он тоже при анализе выдает хз что, много референсов и ни один из них не похож на то, что Deathway описывает в своем туторе - т.е. я ни разу не увидел JMP xxxxxxxx, затем DB xx, DB xx ..... DB xx и в конце JMP какой-то.
не, спасибо, я уже так оставлю
а 2 лишние секции я уже отсобачил. Маленьую секцию загрузчика (ту, что Оля обозначает "SFX"), и секцию azwsbkvs в 1,5 МБ. Потому что ставил мемори бряки на них, в распакованном дампе - нигде не брякается. Значит, это мусор.



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

Создано: 24 августа 2012 22:23 · Поправил: vnekrilov
· Личное сообщение · #8

sivorog пишет:
так пробовал же, он тоже при анализе выдает хз что, много референсов и ни один из них не похож на то,


Эта программа имеет только один прыжок в секцию, созданную протектором:

Code:
  1. 0046CC30   - E9 1B0B2300      JMP 0069D750                                     ; 0069D750


Эта инструкция аналогична следующей инструкции:

Code:
  1. 0046CC30     B8 01000000      MOV EAX,1
  2. 0046CC35     C2 0400          RET 4


По ссылке http://rghost.ru/39983857 скачай распакованный мной файл, и сравни со своим дампом. Распакованный мной файл нормально запускается, и что-то сканирует.

PS: Если что-то непонятно, пиши в личные сообщения.

| Сообщение посчитали полезным: sivorog
 eXeL@B —› Вопросы новичков —› восстановление кода (регистров...) проги после Темиды
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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