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

 eXeL@B —› Вопросы новичков —› Востановление IAT (ASPack 2.12)
Посл.ответ Сообщение

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

Создано: 16 февраля 2009 15:06 · Поправил: Модератор
· Личное сообщение · #1

День добрый.

1. Имеется dll упакованная ASPack v2.12 (PEiD)
2. Найдена OEP (ESP-trick)
3. Снят дамп (LordPE v0.95)
4. "Загружена" в ImpREC v1.7c
5. Получена след. картина:



В принципе все реально импортируемы библиотеки имеют место быть, однако непонятно, что делать с этой кучей "unresolved pointers"?

Заранее благодарен за помощь.

PS: в заголовке читать "IAT"! ( не могу исправить )
исправил я твой IAT в заголовке



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

Создано: 16 февраля 2009 17:12
· Личное сообщение · #2

Ну, что ли выложи уже библиотеку свою.



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

Создано: 16 февраля 2009 17:17
· Личное сообщение · #3

aspack не портит импорт, возможно там не aspack, выложи dll ответ будет более конкретным.



Ранг: 39.0 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 16 февраля 2009 18:19
· Личное сообщение · #4

Konstantin
Ты сказал DLL'ка. А на скрине exe'шник)). loaddll от оли



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

Создано: 16 февраля 2009 19:02
· Личное сообщение · #5

SVIN95
А ты, наверное, даже и не слышал в ImpRec про кнопку "Pick DLL" ?



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

Создано: 16 февраля 2009 23:39 · Поправил: hypeartist
· Личное сообщение · #6

2 tihiy_grom

Вот собственно жертва:
rghost.ru/118454



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

Создано: 17 февраля 2009 00:05 · Поправил: Konstantin
· Личное сообщение · #7

hypeartist
Ну, как я и думал, это не aspack, а ASProtect SKE 2.1x (dll) -> Alexey Solodovnikov сигнатуры смени для PEiD.



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

Создано: 17 февраля 2009 01:06 · Поправил: hypeartist
· Личное сообщение · #8

2 Konstantin

Обновил... да действительно обнаруживает именно ASProtect SKE 2.1x... но при этом:
1. Тот же PEiD, но с VerA -> "Error, may be it's not ASProtect!"
2. RDG Packer Detector v0.6.6 2k8 -> ASPack 2.12
3. PE Detective -> ASPack 2.12

ну и наконец сразу после загрузки нашей dll в ollydbg мы оказываемся здесь:

Code:
  1.   PUSHAD 
  2.   CALL L700
  3.   JMP 460044F7h
  4.   PUSH EBP
  5.   RETN 


Разве это не типичный ASPack?



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

Создано: 17 февраля 2009 01:33
· Личное сообщение · #9

hypeartist пишет:
Разве это не типичный ASPack?

Если-б речь шла об экзешнике, то да. Навешанный на dll asprotect так же выглядит.
Да asprotect там, точно. Импорт мусором разбавлен, и из основного кода куча call-ов в выделенную asprotect.dll виртуальную память.



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

Создано: 17 февраля 2009 10:04
· Личное сообщение · #10

распакованная dll rapidshare.com/files/199079668/IL_Wave_Candy.rar



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

Создано: 17 февраля 2009 13:44
· Личное сообщение · #11

2 Konstantin

Спасибо огромнейшее!!!!! Вот еще бы ты рассказал алгоритм действий - я был бы вообще счастлив!!!



Ранг: -3.7 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 18 февраля 2009 18:48
· Личное сообщение · #12

тебе для начала надо скачать ollydbg. а потом мы тебе все объясним



Ранг: -3.7 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 18 февраля 2009 18:49
· Личное сообщение · #13

а как предыдущий пост удалить?




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

Создано: 18 февраля 2009 19:05
· Личное сообщение · #14

Удалить тебе пост могу я. Для тебя кнопка Правка. Лепить несколько подряд вовсе не обязательно.



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

Создано: 21 февраля 2009 17:47
· Личное сообщение · #15

В ожидании тутора от Konstantin'а я тут решил сам покапаться...

Вот чего (и как) я "добился":

Во первых, за исходную предпосылку я взял, что это все-же ASProtect. На Tuts4You мне подсказали поискать в образе памяти моей dll вот эту строчку - "ASProtect\SpecData" и я ее действительно нашел (хотя ни в одном туторе я об этом не слышал):

Code:
  1. 01896224                            53 6F 66 74 77 61 72 65           Software
  2. 01896240   5C 41 53 50 72 6F 74 65  63 74 5C 53 70 65 63 44   \ASProtect\SpecD
  3. 01896256   61 74 61 00 55 8B EC 83  C4 A8 53 56 57 33 C9 89   ata.U‹мѓДЁSVW3Й‰
  4. 01896272   4D A8 89 4D B0 89 4D AC  89 4D B8 89 4D B4 89 4D   MЁ‰M°‰M¬‰Mё‰Mґ‰M
  5. 01896288   FC 8B F2 8D 7D BE B9 07  00 00 00 F3 A5 66 A5 8B   ь‹тЌ}ѕ№....уҐfҐ‹
  6. 01896304   F0 8D 7D DC B9 08 00 00  00 F3 A5 33 C0 55 68 26   рЌ}Ь№....уҐ3АUh&
  7. 01896320   32 B4 00 64 FF 30 64 89  20 80 7D FA 00 74 28 8D   2ґ.dя0d‰ Ђ}ъ.t(Ќ
  8. 01896336   55 B8 8B 45 E0 E8 FA FB  FF FF 8B 45 B8 50 8D 55   Uё‹Eаиъыяя‹EёPЌU
  9. 01896352   B4 8B 45 DC E8 EB FB FF  FF 8B 55 B4 8D 45 FC      ґ‹EЬилыяя‹UґЌEь


Далее у меня возникли проблемы с дампом. При попытке загрузить дамп, сделаный с помощью LordPE, в Olly я получал сначала ошибку о том, что это типа не Win32 файл ("Rebuild PE" вроде исправило), а затем и "Unable to load dll". После чего мне посоветовали сделать дамп из ImpREC! Хм... И ведь помогло!!! OEP я нашел тупым поиском последовательности "55 8B EC 83 C4 B4 B8" опять таки прямо в памяти загруженной dll. "Auto search" выдал IAT без проблем и каких бы то ни было "uresolved pointers". Только одно интересно - все проходит столь гладко только если я загружау dll используя прогу которая ее юзает, через Olly'вский LoadDll IAT не находится катигорически!!! Вот. Итак на данный момент у меня есть дамп который нормально видится и понимается Olly, четко останавливается на EP:

Code:
  1. 014226F9    8BEC                   MOV     EBP, ESP
  2. 014226FB    83C4 B4                ADD     ESP, -4C
  3. 014226FE    B8 D8244201            MOV     EAX, il_delay.014224D8
  4. 01422703    E8 D0B0FDFF            CALL    il_delay.013FD7D8   <--------------------------(1)
  5. 01422708    E8 8F8EFDFF            CALL    il_delay.013FB59C


...но не работает!!!

Протрассировав в (1):

Code:
  1. 013FD7D8    BA A4304201            MOV     EDX, il_delay.014230A4
  2. 013FD7DD    837D 0C 01             CMP     DWORD PTR SS:[EBP+C], 1
  3. 013FD7E1    75 2A                  JNZ     SHORT il_delay.013FD80D
  4. 013FD7E3    50                     PUSH    EAX
  5. 013FD7E4    52                     PUSH    EDX
  6. 013FD7E5    C605 C8444201 01       MOV     BYTE PTR DS:[14244C8], 1
  7. 013FD7EC    8B4D 08                MOV     ECX, DWORD PTR SS:[EBP+8]
  8. 013FD7EF    890D D4444201          MOV     DWORD PTR DS:[14244D4], ECX
  9. 013FD7F5    894A 04                MOV     DWORD PTR DS:[EDX+4], ECX
  10. 013FD7F8    C742 08 00000000       MOV     DWORD PTR DS:[EDX+8], 0
  11. 013FD7FF    C742 0C 00000000       MOV     DWORD PTR DS:[EDX+C], 0
  12. 013FD806    E8 81FFFFFF            CALL    il_delay.013FD78C    <-----------------------------------(2)


я обнаруживаю, что (2) в моем дампе ведет не ТУДА!!! У меня веде сюда:

Code:
  1. 013FD78C    53                     PUSH    EBX
  2. 013FD78D    81C4 F8FEFFFF          ADD     ESP, -108
  3. 013FD793    68 05010000            PUSH    105
  4. 013FD798    8D4424 04              LEA     EAX, DWORD PTR SS:[ESP+4]
  5. 013FD79C    50                     PUSH    EAX
  6. 013FD79D    A1 D4444201            MOV     EAX, DWORD PTR DS:[14244D4]
  7. 013FD7A2    50                     PUSH    EAX
  8. 013FD7A3    E8 A4FEFFFF            CALL    <JMP.&kernel32.GetModuleFileNameA>
  9. 013FD7A8    8BC4                   MOV     EAX, ESP
  10. 013FD7AA    E8 B5EEFFFF            CALL    il_delay.013FC664
  11. 013FD7AF    8BD8                   MOV     EBX, EAX
  12. 013FD7B1    891D B4304201          MOV     DWORD PTR DS:[14230B4], EBX
  13. 013FD7B7    85DB                   TEST    EBX, EBX
  14. 013FD7B9    75 0A                  JNZ     SHORT il_delay.013FD7C5
  15. 013FD7BB    A1 A8304201            MOV     EAX, DWORD PTR DS:[14230A8]
  16. 013FD7C0    A3 B4304201            MOV     DWORD PTR DS:[14230B4], EAX
  17. 013FD7C5    B8 A4304201            MOV     EAX, il_delay.014230A4
  18. 013FD7CA    E8 EDF0FFFF            CALL    il_delay.013FC8BC
  19. 013FD7CF    81C4 08010000          ADD     ESP, 108
  20. 013FD7D5    5B                     POP     EBX
  21. 013FD7D6    C3                     RETN


а в оригинальной dll сюда:

Code:
  1. 008670B8    B8 C0379200            MOV     EAX, IL_Delay.009237C0
  2. 008670BD    E8 86F8FFFF            CALL    IL_Delay.00866948
  3. 008670C2    C3                     RETN


Причем, как видно из адресации, эти участки кода расположены непосредственно над входом в (1)

Что не так? Почему получился такой разный код?



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

Создано: 21 февраля 2009 19:44 · Поправил: Konstantin
· Личное сообщение · #16

hypeartist пишет:
...но не работает!!!

А с чего он должен работать? Импорт ты не восстановил. Если сделаеш поиск в оле - "правая клавиша мыши -> Serch for -> All intermodular calls" то увидишь кучу call-ов ведущих в выделенную аспротектом виртуальную память, эти call-ы так называемые переходники виртуальных апи, вот их то и надо иcправить в этой длл на код типа jmp [адр апи в IAT], кроме того если посмотреть секцию с импортом, то среди нормальных адресов увидиш кучу мусора, он мешает imprec-у правильно определить импорт, с этом тоже нужно что то сделать (забить мусор нулями), либо воспользоваться Universal Import Fixer он пофиксит импорт на место, которое ты укажешь.
hypeartist пишет:
я обнаруживаю, что (2) в моем дампе ведет не ТУДА!!!

И не только это, в той длл что ты выложил(которую я распаковал) OEP выглядит следующим образом:
Code:
  1. 00948928   .  55            PUSH EBP
  2. 00948929   .  8BEC          MOV EBP,ESP
  3. 0094892B   .  83C4 C4       ADD ESP,-3C
  4. 0094892E   .  B8 D4699400   MOV EAX,IL_Wave_.009469D4
  5. 00948933   .  E8 9CE8F2FF   CALL IL_Wave_.008771D4
  6. 00948938   .  E8 EBC4F2FF   CALL IL_Wave_.00874E28


Ты же приводишь в качестве OEP следующий код:
Code:
  1. 014226F9    8BEC                   MOV     EBP, ESP
  2. 014226FB    83C4 B4                ADD     ESP, -4C
  3. 014226FE    B8 D8244201            MOV     EAX, il_delay.014224D8
  4. 01422703    E8 D0B0FDFF            CALL    il_delay.013FD7D8   <--------------------------(1)
  5. 01422708    E8 8F8EFDFF            CALL    il_delay.013FB59C


Чем то отличаются, не так ли?
Ломаешь другую длл, или дамп чего ты сделал?



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

Создано: 22 февраля 2009 07:46
· Личное сообщение · #17

Кстати код:

014226F9 8BEC MOV EBP, ESP
014226FB 83C4 B4 ADD ESP, -4C
014226FE B8 D8244201 MOV EAX, il_delay.014224D8
01422703 E8 D0B0FDFF CALL il_delay.013FD7D8 <--------

Это традиционный код Asprotect.dll, которая зашита в упакованную программу.



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

Создано: 22 февраля 2009 13:46
· Личное сообщение · #18

vnekrilov
vnekrilov пишет:
Это традиционный код Asprotect.dll

это не просто код Asprotect.dll, это ее EP .



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

Создано: 22 февраля 2009 14:04
· Личное сообщение · #19

Konstantin пишет:
это не просто код Asprotect.dll, это ее EP


Это правильное уточнение. Все версии Asprotect.dll имеют такую стандартную Entry Point.



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

Создано: 22 февраля 2009 14:27
· Личное сообщение · #20

Konstantin

Konstantin пишет:
увидишь кучу call-ов ведущих в выделенную аспротектом виртуальную память


Типа вот этого?:

Code:
  1. 01A0D2AE       E8 37EC37F0            CALL    F1D8BEEA
  2. 01A0D22E       E8 36EC36F0            CALL    F1D7BE69
  3. 01A0D108       E8 36EC36F4            CALL    F5D7BD43
  4. ........
  5. ........


И значит ли это, что мне нужно смотреть туторы на тему ASProtect+VM?

Konstantin пишет:
это не просто код Asprotect.dll, это ее EP


Так это не OEP моей dll????!!!

Konstantin пишет:
в той длл что ты выложил(которую я распаковал) OEP выглядит следующим образом


Точно так! Я практиковался на другой dll. Но она абсолютно аналогична, в плане защиты, той, что была выложена...



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

Создано: 22 февраля 2009 15:05
· Личное сообщение · #21

hypeartist пишет:
И значит ли это, что мне нужно смотреть туторы на тему ASProtect+VM?


вряд ли , анализ кода олей (ctrl+a) делал перед тем как искать все "intermodular calls"?
Переходники на vm обычно выглядят как jmp adr, и часть кода после них украдена, т. к. его работа и эмулируется vm.


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


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