eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

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

 eXeL@B —› Основной форум —› Проверка на целостность файла.
Посл.ответ Сообщение

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

Создано: 30 июня 2010 15:33 · Поправил: Chococream New!
Цитата · Личное сообщение · #1

Сделал поиск по форуму - не нашёл подходящего для меня.

Суть такова: друг подкинул файл(вероятно модифицированный им), который не поддавался мне.
Вообщем пакер сняли(аспротект). Таблицу импорта восстановили, файл - работоспособный.
Оставалась лишь проверка на crc, как в последствии узнали, что там не crc32, а hash функция длиной 20 байт.

Перерыли все способы с crc32, даже поменяли это значение у файла, но всё равно до истины не дошли.
Выкладываю в архиве наши с ним изыскания.
Наибольший интерес должен принести файл sht.txt с подробными комментариями в ходе исследования.
Файл большего размера a.exe - модифицированный, b.exe - меньшего размера - исходный файл!
Программа написана на Delphi, смотрели через DeDe - ничего интересного

Буду благодарен за помощь!
Линка: http://www.sendspace.com/file/qw3knf


Статус: Пришелец

Создано: 30 июня 2010 17:23 New!
Цитата #2

Перенесено.


Ранг: 598.5 (!)
Статус: Модератор
Research & Development

Создано: 30 июня 2010 17:34 New!
Цитата · Личное сообщение · #3

Code:
  1. #include <idc.idc>
  2.  
  3. static main(void)
  4. {
  5.  
  6.          auto slotidx;
  7.          slotidx = 1;
  8.  
  9.          MarkPosition(0x131FCF17, 0, 0, 0, slotidx + 0, "ADLER32");
  10.          MakeComm(PrevNotTail(0x131FCF18), "ADLER32\nAdler32 checksum (unsigned 32-bit integer, BASE value); used by ZLIB compression library");
  11.          MarkPosition(0x131FCFE1, 0, 0, 0, slotidx + 1, "ADLER32");
  12.          MakeComm(PrevNotTail(0x131FCFE2), "ADLER32\nAdler32 checksum (unsigned 32-bit integer, BASE value); used by ZLIB compression library");
  13.          MarkPosition(0x131BE158, 0, 0, 0, slotidx + 2, "BASE64 table");
  14.          MakeComm(PrevNotTail(0x131BE159), "BASE64 table\nBASE64 encoding (used e.g. in e-mails - MIME)");
  15.          MarkPosition(0x132062F4, 0, 0, 0, slotidx + 3, "CRC32");
  16.          MakeComm(PrevNotTail(0x132062F5), "CRC32\nCRC32 precomputed table for byte transform");
  17.          MarkPosition(0x131B5187, 0, 0, 0, slotidx + 4, "SHA1 [Compress]");
  18.          MakeComm(PrevNotTail(0x131B5188), "SHA1 [Compress]\nSHA1 additive constants (also used in SHA, SEAL, partly in RIPEMD)");
  19.          MarkPosition(0x131E3B68, 0, 0, 0, slotidx + 5, "SHA-256 [mixing]");
  20.          MakeComm(PrevNotTail(0x131E3B69), "SHA-256 [mixing]\nSHA-256 mixing constants (also used in SHA-512)");
  21.          MarkPosition(0x131B562A, 0, 0, 0, slotidx + 6, "SHA-384 [Init]");
  22.          MakeComm(PrevNotTail(0x131B562B), "SHA-384 [Init]\nSHA-384 init constants (partly used also in SHA-224)");
  23.          MarkPosition(0x131B56B6, 0, 0, 0, slotidx + 7, "SHA-512 [init]");
  24.          MakeComm(PrevNotTail(0x131B56B7), "SHA-512 [init]\nSHA-512 init constants (partly used also in SHA-256)");
  25.          MarkPosition(0x13209534, 0, 0, 0, slotidx + 8, "ZLIB deflate [word]");
  26.          MakeComm(PrevNotTail(0x13209535), "ZLIB deflate [word]\nZLIB compression algorithm - literal codes base values, used to build the trees");
  27. }


результат работы модуля KANAL
Смотри в IDA соответствующие адреса и ссылки на них

Ранг: 114.8 (ветеран)
Статус: Участник

Создано: 30 июня 2010 19:28 New!
Цитата · Личное сообщение · #4

имхо к sha-1 стоит по-внимательней присмотреться - подходит по длине


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 30 июня 2010 19:59 New!
Цитата · Личное сообщение · #5

А не проще ли запатчить проверку целкости и все?

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

Создано: 30 июня 2010 21:10 · Поправил: Chococream New!
Цитата · Личное сообщение · #6

Благодарю за ответы.
Сорри если тему не там запостил.

Jupiter
Первым делом полезли в пеид за плагином, но как-то не обратили внимание. Спасибо за наводку - будем копать.

OnLyOnE
В том то и дело, что запатчить её нелегко, в приложении видимо либо создаются два окна, сначала нормальное, затем одно заменяет другое, либо создаётся нормальное, но после проверки хэша создаётся "наг"(проще говоря изменяется содержимое окна).
По строкам в программке можно узнать где производится вывод нага, но увы того "кто вызывает" найти не удаётся , т.к посути за этим выводом идёт показ окна с таймером, который по завершению закрывает его.
Также глянул в SHA1 - увидел один вызов, где программа оперирует с навзанием хард диска, затем идёт сбор другой информации... копаю дальше.

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

Создано: 1 июля 2010 09:22 New!
Цитата · Личное сообщение · #7

А как ты пытаешся наг отловить? Стандартно - функция ShowWindow.

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

Создано: 1 июля 2010 16:45 · Поправил: Chococream New!
Цитата · Личное сообщение · #8

Я бы не стал просто так писать, ловил наг через CreateWindowExA, ShowWindow(UpdateWindow).
Написал, потому что прошу помощи отловить тот самый наг, либо помочь с хэшом.

Code:
  1. -----------------------В поиска хэша...----------
  2.  
  3. 1)131B5CEE b35a98872ad016ac996d474bac24957460a28816 от названия хардов ??
  4. В коде также есть строка:
  5. 131B5D98   . /E45D1B13      DD lacd_cli.131B5DE4 ; ASCII 09,"TSha1Hash"
  6. МОЖЕТ ЭТО ОНО ? !!!Возможно это просто сбор опр. данных.!!!
  7.  
  8. Переводит строку b35a98872ad016ac996d474bac24957460a28816 в верхний регистр
  9. B35A98872AD016AC996D474BAC24957460A28816
  10.  
  11. 2)Стучит куда-то...
  12. 131D7CF0  |.  50            PUSH EAX                                 ; /pThreadId
  13. 131D7CF1  |.  6A 00         PUSH 0                                   ; |CreationFlags = 0
  14. 131D7CF3  |.  6A 00         PUSH 0                                   ; |pThreadParm = NULL
  15. 131D7CF5  |.  68 A07A1D13   PUSH lacd_cli.131D7AA0 ; |ThreadFunction = lacd_cli.131D7AA0!!!!!!!!!
  16. 131D7CFA  |.  6A 00         PUSH 0                                   ; |StackSize = 0
  17. 131D7CFC  |.  6A 00         PUSH 0                                   ; |pSecurity = NULL
  18. 131D7CFE  |.  E8 D5FAF6FF   CALL <JMP.&kernel32.CreateThread>        ; \CreateThread
  19.  
  20. 3)Можете пропустить... 131D8A44
  21.  
  22. 4)!!!!!!!!!!!!!!!!!!!Exceptions: 131D905D 1336A268 1336B6CC!!!!!!!!!!!!!!!!!!!
  23.  
  24. 5)132062F4 CRC32
  25. 131B5187 SHA1
  26. 131E3B68 SHA-256
  27.  
  28.  
  29. 131B5168  /$  3C 13         CMP AL,13
  30. 131B516A  |.  7F 06         JG SHORT lacd_cli.131B5172
  31. 131B516C  |.  B8 9979825A   MOV EAX,5A827999
  32. 131B5171  |.  C3            RETN
  33. 131B5172  |>  3C 27         CMP AL,27
  34. 131B5174  |.  7F 06         JG SHORT lacd_cli.131B517C
  35. 131B5176  |.  B8 A1EBD96E   MOV EAX,6ED9EBA1
  36. 131B517B  |.  C3            RETN
  37. 131B517C  |>  3C 3B         CMP AL,3B
  38. 131B517E  |.  7F 06         JG SHORT lacd_cli.131B5186
  39. 131B5180  |.  B8 DCBC1B8F   MOV EAX,8F1BBCDC
  40. 131B5185  |.  C3            RETN
  41. 131B5186  |>  B8 D6C162CA   MOV EAX,CA62C1D6 ;SHA1
  42. 131B518B  \.  C3            RETN
  43.  
  44. 131B6C51 call 131B5E38
  45.  |
  46. \ /
  47. 131B5E76 call 131B5C10
  48.  |
  49. \ /
  50. 131B5222 call 131B5168
  51. где-то рядом программа делает что-то с названиями хардов.
  52.  
  53. --------------------------------------------------------
  54.  
  55. CRC32 для родного файла wow.exe - 2034D8CB.
  56.  
  57. CRC32 для родного файла b.exe - 5E519C29.
  58.  
  59. ----------------------------------------------------------------------   --------------------------
  60. Текст носит исследовательский характер. Исследование программы было начато лишь с целью изучения
  61. новых алгоритмов проверки файла. За ваши дальнейшие действия я ответственности не несу!
  62. ----------------------------------------------------------------------   --------------------------


Ранг: 169.6 (ветеран)
Статус: Участник

Создано: 1 июля 2010 23:29 New!
Цитата · Личное сообщение · #9

ZLOvar пишет:
Стандартно - функция ShowWindow

Часто удобнее вернуться назад по коду из DestroyWindow - вызов пытаются прятать, а от смерти никуда не уйдешь

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

Создано: 2 июля 2010 09:45 New!
Цитата · Личное сообщение · #10

А что там конкретно за наг? Просто создается новое окошко с текстом?


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 2 июля 2010 20:10 New!
Цитата · Личное сообщение · #11

Самое простое это - поставить бряк на CreateFile ... однозначно для того чтобы проверить себя на целкость... прога должна открыть сама себя для чтения... и вот с этого места уже ловить ReadFile или CreateFileMapping и дальше смотреть что происходит... Не понимаю, что здесь сложного?

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

Создано: 3 июля 2010 08:54 · Поправил: Chococream New!
Цитата · Личное сообщение · #12

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

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

Я в первом посту выкладывал файл sht.txt, так там все процедуры есть. Впрочем сейчас возьмусь за это дело - посмотрим, что выйдет(опыта пока ещё не так много).

Code:
  1. CreateFile:
  2. 13149BDA
  3.  
  4. Bad Message:
  5. 131E0D13 131d8a12
  6.  
  7. DestroyWindow:
  8. 131860F0(131994C3, 131D2c6c).
  9.  
  10. 13196074 Процедура плохого окна.
  11.  
  12. 131639BB(131739E1, 1317B69F, 1317EAB2, 1319DA9A).
  13.  
  14. 1319DADA(1319DAA).


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

Создано: 3 июля 2010 09:19 New!
Цитата · Личное сообщение · #13

Chococream пишет:
Таблицу импорта восстановили, файл - работоспособный

у меня твой файл расспакованный вообще незапускается хотя упакованный выводит сообщение
"Error: Resolving wow-saratov.ru IP"
Jupiter пишет:
результат работы модуля KANALСмотри в IDA соответствующие адреса и ссылки на них

Канал стоит использовать когда файл полность целый,в файле выложенным выше много украденного кода аспром..

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

Создано: 3 июля 2010 09:38 · Поправил: Chococream New!
Цитата · Личное сообщение · #14

ClockMan пишет:
у меня твой файл расспакованный вообще незапускается хотя упакованный выводит сообщение"Error: Resolving wow-saratov.ru IP"

Странно - у меня работает, хост - резолвит(сейчас стоит другой), но пишет ошибку: "Контрольная сумма файлов не совпадает. LACD Terminated.(эта строка кстати в коде есть)."

ClockMan пишет:
Канал стоит использовать когда файл полность целый,в файле выложенным выше много украденного кода аспром..

Т.е посути придётся распаковвывать ещё раз и смотреть что не так ?

Code:
  1. 942777     freeloc: 00930000
  2. 974C5A     AsprAPIloc: 0098267C
  3. 965538     SDK stolen code sections = 00000001
  4. 97F682     Delphi initialization table address 131DF404
  5. 1B4025A    SDK stolen code section address = 01BB0000
  6. 1B4025A    Address of IAT = 131EB928
  7. 1B4025A    RVA of IAT = 000AB928
  8. 1B4025A    Size of IAT = 000007AC
  9. 1B4025A    Address of OEP = 131E0BA8
  10. 1B4025A    RVA of OEP = 000A0BA8


ClockMan
Только что сделал распак - файл работает также, как и оригинальный, только выдаёт табличку о несовпадении контрольной суммы.
Табличку убрал, осталось окно(131E0D13).


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

Создано: 3 июля 2010 10:17 New!
Цитата · Личное сообщение · #15

Chococream пишет:
Т.е посути придётся распаковвывать ещё раз

Неправельно меня понял ты... посути вот мой расспакованный вариант..slil.ru/29424622
pass: tdSNZt61eSUpX2kKjsah

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

Создано: 3 июля 2010 12:02 New!
Цитата · Личное сообщение · #16

Затвор в виде 13144A00 был успешно прорван.
Целка в виде 131de76c - порвана(простите за выр-е)
Всем спасибо за помощь, особенно ClockMan, если вам не составит труда накидайте пару мануальчиков, чтобы так сказать руки набить


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

Создано: 3 июля 2010 12:07 · Поправил: ClockMan New!
Цитата · Личное сообщение · #17

Chococream
Говори спасибо vnekrilov
Chococream пишет:
если вам не составит труда накидайте пару мануальчиков

[url=http://exelab.ru/f/index.php?action=vthread&forum=13&topic=1159 6&page=29]--> Link <--[/url]

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

Создано: 3 июля 2010 12:59 New!
Цитата · Личное сообщение · #18

Хочу русифицировать FontLab Studio 5.04. Открыл Ресторатором - exe_шник не запакован, все нужные ресурсы видны. Попробовал изменить - позволило, а вот сохранить не дает, выдает ошибку: Строка 65: '{' или ожидается BEGIN. Смотрел PEiD_0.95, он показал: Microsoft Visual C++ 7.0 [Overlay]. Есть у меня русифицированная версия FontLab Studio 5.0 но там есть свои ошибки которые исправлены в новой версии да и в новой сделана уже полная поддержка шрифтов OpenType. В русифицированной версии все дается редактировать, ее тоже смотрел PEiD_0.95, он показал: Microsoft Visual C++ 7.0.
Что не дает сохранить изменения, как и чем с этим бороться?
Программа с оф сайта для Windows: www.font.to/downloads/demos/FLS5WinDemo.exe


Ранг: 164.6 (ветеран)
Статус: Участник
Волшебник

Создано: 3 июля 2010 13:44 New!
Цитата · Личное сообщение · #19

Строка 65: '{' или ожидается BEGIN.
Быстрее всего это и не даёт сохранять.


Ранг: 520.5 (!)
Статус: Участник
Победитель турнира 2010

Создано: 3 июля 2010 13:51 New!
Цитата · Личное сообщение · #20

Каким боком это к этой ветке??

ТС все выяснил
Chococream пишет:
Всем спасибо за помощь


Закройте ветку.
 eXeL@B —› Основной форум —› Проверка на целостность файла.
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS