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

 eXeL@B —› Вопросы новичков —› проблема с ручной распаковкой UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 05 апреля 2011 18:18
· Личное сообщение · #1

попросил знакомый глянуть одну программку - PDFToMusic Pro .
Начал распаковку в ручную по обыденному методу (много статей прочел но конкретного примера не увидел поэнтому и создал тему) распаковки upx - нахожу в ольге безусловный на оеп , ставлю бряк, petools-сом
со всеми нужными параметрами делаю дамп - дамп ок!
Запускаю imprec 1.7 аттачусь к процессу ищу импорт по адресу ( оеп 6038а0 то есть 38А0) - импорт находит делаю фикс дамп .
лезу в папку с прогой запускаю и вылазит окно - PDFtoMusic Pro - Win32 - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства. Нашёл в нете прогу новую - Unpacker_v1.0_by_phpbb3 она распаковала и в окошке написала ( на работоспособность проверил) -
file: PDFToMusic Pro.exe
OK packed with Upx
IMAGE BASE : 00400000
PACKED OEP : 00D5A930
PATCHING IsDebuggerPresent
HARDWARE BP :00D5A930
HARDWARE BP :0012FFA4
READING OEP !
OEP IS : 006038A0
DUMPING FINISHED !
SEARCHING FOR IAT
FIXING IAT
UNPACKING FINISHED


ПОЛУЧАЕТСЯ ЧТО ДЕЛАЛ ВРОДЕ БЫ ВСЁ ПРАВИЛЬНО - В ЧЁМ МОЖЕТ БЫТЬ ЗАГВОЗДКА? Я ТАК ПРИМЕРНО ДОГАДЫВАЮСЬ ЧТО ПРОБЛЕМА В IsDebuggerPresent НО НЕ ЗНАЮ КАК ЕЁ РЕШИТЬ.



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

Создано: 10 апреля 2011 12:11
· Личное сообщение · #2

valikz пишет:
вышел я на эти showwindow но цикл там слишко какой то замороченный - сверок серийника не могу найти или он под другими именами функций( не lstrcmp)

Чего захотел, что бы все видно было. Так уже давно не защищают. Сверок может и не быть. Иногда делают свертку серийника и сравнивают хеш. Удачи.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 10 апреля 2011 12:33
· Личное сообщение · #3

Code:
  1. 004F3474  |.  E8 D7800300   CALL PDFToMus.0052B550                                                  ; <-----Интересный CALL
  2. 004F3479  |.  84C0          TEST AL,AL
  3. 004F347B  |.  59            POP ECX                                                                 ; PDFToMus.00BBE030
  4. 004F347C  |.  75 12         JNZ SHORT PDFToMus.004F3490
  5. 004F347E  |.  E8 7D720300   CALL PDFToMus.0052A700                                                  ; <-----Выводим наг
  6. 004F3483  |.  84C0          TEST AL,AL
  7. 004F3485  |.  75 09         JNZ SHORT PDFToMus.004F3490


От этого и пляши, там же как раз и есть проврка серийника.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 10 апреля 2011 22:09
· Личное сообщение · #4

valikz только я последнюю с сайта качал, а не по твоей ссылке

Code:
  1. 004BC98E  |>  8D4424 70     |LEA EAX,DWORD PTR SS:[ESP+70]
  2. 004BC992  |.  E8 69090000   |CALL PDFToMus.004BD300      ;CheckCode()
  3. 004BC997  |.  66:85C0       |TEST AX,AX
  4. 004BC99A  |.  74 6C         |JE SHORT PDFToMus.004BCA08  ;if OK
  5. 004BC99C  |.  68 FF7F0000   |PUSH 7FFF


Code:
  1. 004BC9C0  |.  83F8 02       |CMP EAX,2
  2. 004BC9C3  |.  76 0B         |JBE SHORT PDFToMus.004BC9D0
  3. 004BC9C5  |.  807C24 71 50  |CMP BYTE PTR SS:[ESP+71],50 ;'P'
  4. 004BC9CA  |.  75 04         |JNZ SHORT PDFToMus.004BC9D0

Code длиннее 2х символов второй символ 'P'

Code:
  1. 004BD307  |.  803E 5A       CMP BYTE PTR DS:[ESI],5A     ;'Z'
  2. 004BD30A  |.  74 05         JE SHORT PDFToMus.004BD311
  3. 004BD30C  |.  8D42 01       LEA EAX,DWORD PTR DS:[EDX+1]
  4. 004BD30F  |.  5E            POP ESI
  5. 004BD310  |.  C3            RETN

Первый символ 'Z'

Отсюда дальше смотри
Code:
  1. 004BD31E  |>  57            PUSH EDI
  2. 004BD31F  |.  90            NOP
  3. 004BD320  |>  8A0E          /MOV CL,BYTE PTR DS:[ESI]
  4. 004BD322  |.  84C9          |TEST CL,CL


-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 17 апреля 2011 16:45
· Личное сообщение · #5

Парни, кто нибудь может подсказать как правильно восстанавливать таблицу импорта, если нашлась хотя бы 1 левая с валидностью NO? Вопрос глупый, понимаю, но очень надо, заранее спасибо



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

Создано: 17 апреля 2011 17:42
· Личное сообщение · #6

как правильно восстанавливать таблицу импорта

Вопрос ниочем, поскольку есть десятки причин и соответственно методов, читай Риккардо Нарваху. А в конкретном случае выкладывай программу и можешь файл импрека, или чем там восстанавливаешь импорт.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 01 мая 2011 17:26
· Личное сообщение · #7

спасибо ребята но не могу понять какая апи функция ( бп то именно на апи же вы ставите или ищите подряд?!)для сверки хеша - о такой ещё пока не слыхал)




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

Создано: 01 мая 2011 21:12
· Личное сообщение · #8

Функция сверки хеша может быть заинлайнена в программу. Ищи по константам от md5 или sha1, в зависимости от алгоритма... Если найдёшь D76AA478 (или его двойник -28955B88), например - это md5. Но проблема еще может быть в том, что известные константы в чистом виде не присваиваются в виду метафорфа кода...

В оригинале алгоритм подсчёта md5-хеша на апи выглядит так:
Code:
  1. HCRYPTPROV hProv;
  2. if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
  3.   CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET);
  4.  
  5. HCRYPTHASH hHash;
  6. CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
  7. DWORD HashDataLen = 0x10, DataLen = 4;
  8. CryptHashData(hHash, (BYTE*)s, CharCount, 0);
  9. CryptGetHashParam(hHash, HP_HASHVAL, (BYTE*)Md5, &HashDataLen, 0);
  10. CryptDestroyHash(hHash);
  11.  
  12. CryptReleaseContext(hProv, 0);


-----
IZ.RU



<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› проблема с ручной распаковкой UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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