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

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

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

Создано: 15 сентября 2011 14:36 · Поправил: virtposting
· Личное сообщение · #1

Приветствую всех и бесконечно благодарствую тех, кто откликнулся!
Начну по порядку. Нужна помощь, а точнее просветление и совет в решении. Я скачал с п равочник те леф онный, который весит аж но 400мб, в котором 340мб рекламного материала(.swf+avi).
И ещё стоит ограничение во времени. Т.е. через несколько месяцев появляется окошко с напоминанием, что версия устарела и необходимо приобрести новую. Это предупреждение убирается после нажатия на кнопку "Ок", но занудно появляется снова и снова при любом действии в справочнике.

Перечислю какие ограничения в справочнике хочется попробовать снять:
- Отучить программу от папки "Media" (где хранятся промо материалы), но при этом чтобы реклама показывалась.
- Не показывалось окошко о том, что версия устарела.
- (Не обязательно) Но для будущего и пополнения знаний. Чтобы открывался сразу справочник, а не превью программы.

Что я сделал:
- открыл файл PEiD-0.95 (файл был упакован UPX)
- распаковал файл, вот этим RLdeUPX_1.x-3.x (в ручную у меня не вышло почему то)
- Распаковал с помощью upx -d
- попытался просмотреть РЕ ресурсы, чтобы посмотреть window-ы этим PE.Explorer, но из-за каких-то причин PE.Explorer виснет и не может открыть файл справочник (запакованный и также распакованный)
- Когда снова открыл распакованный файл в ollydbg.2.01, понял, что сделал не всё для расшифровки.

Прикреплено:
файл без папки "Media" (распакованный)
--> Скачать справочник (обновил)<--

Пожалуйста помогите разобраться как осуществить снятия всех(почти) ограничений. Что нужно предпринять? Я как бы новичок в этом, но я стараюсь.



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 15 сентября 2011 14:44
· Личное сообщение · #2

PE.Explorer умеет распаковывать upx



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

Создано: 15 сентября 2011 16:25
· Личное сообщение · #3

То что
Av0id пишет:
PE.Explorer умеет распаковывать upx


Я это знаю, в том то и дело, этот файл он не может распаковать, просто виснет в ходе обработки.
Там по моему помимо UPX есть ещё что-то. Кто подскажет?




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

Создано: 15 сентября 2011 16:50
· Личное сообщение · #4

virtposting
Кроме UPX никакого протектора нет,расспаковывается хорошо самим UPX, PE.Explorer падает и за того что в файле содержится слонпотамский размер ресурсов,ипользуй другой редактор ресурсов

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


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


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 15 сентября 2011 17:04 · Поправил: DimitarSerg
· Личное сообщение · #5

virtposting
Ну вообще то такой пакер, как UPX лучше для начала попробовать распаковывать самим же упыхом. (твой анпакед в рестораторе на все типы ресурсов пишет currupted, после upx -d все нормально).

Да и можно было не заливать оба файла (тут какбе и не такое распаковывают .)

А так как прога на дельфях, то советую IDR

-----
ds


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

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

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

Теперь понятно всё, спасибо за подсказку насчёт самого upx.exe -d. Сейчас попробую. А как найти место где файл проверяет на наличие папки "Media". Там даже если файл заменить на меньший по размеру, то это тоже в файле замечается... как отучить от таких проверочек? Есть приблизительно как это вычислить?



Ранг: 15.9 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 15 сентября 2011 18:33 · Поправил: shadow_user
· Личное сообщение · #7

Идти от обратного - как замечается и что при этом происходит.
Reverse




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 15 сентября 2011 18:35
· Личное сообщение · #8

Выложи файл то, в первом посте удален уже.

-----
Yann Tiersen best and do not fuck




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

Создано: 15 сентября 2011 20:54 · Поправил: virtposting
· Личное сообщение · #9

Файл обновил

PE_Kill пишет:
Выложи файл то, в первом посте удален уже.


Хотел перезалить файл.
В общем с распаковкой разобрался, оказывается распаковывать самим upx лучше. Всё распаковалось хорошо. Но остались теперь другие вопросы.

И как shadow_user пишет:

Идти от обратного - как замечается и что при этом происходит.
Reverse


всё логично, но как осуществить... ?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 сентября 2011 08:21 · Поправил: PE_Kill
· Личное сообщение · #10

- Отучить программу от папки "Media" (где хранятся промо материалы)

Папка media проверяется во многих местах программы. Советую проанализировать программу в IDR (ищи тут на форуме) и сформировать map файл. Потом взять отладчик OllyDbg и плагин mapimp (тоже тут на форуме) и загрузить в OllyDbg программу и полученый map файл. Дальше уже можно анализировать. Пути к папке media формируются динамически посимвольно. А проверяются так:
Code:
  1. 005AE917  |.  8D95 78FFFFFF LEA EDX,DWORD PTR SS:[EBP-88]
  2. 005AE91D  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
  3. 005AE920  |.  E8 A75DE5FF   CALL <TELSPR~1.system.@LStrFromString>
  4. 005AE925  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  5. 005AE928  |.  E8 F7ADE5FF   CALL <TELSPR~1.SysUtils.FileExists>
  6. 005AE92D  |.  84C0          TEST AL,AL
  7. 005AE92F  |.  75 07         JNZ SHORT TELSPR~1.005AE938
  8. 005AE931  |.  8B07          MOV EAX,DWORD PTR DS:[EDI]
  9. 005AE933  |.  E8 7C11EDFF   CALL <TELSPR~1.Forms.TApplication.Terminate>
  10. 005AE938  |>  33D2          XOR EDX,EDX
  11. 005AE93A  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  12. 005AE93D  |.  E8 52ACE5FF   CALL <TELSPR~1.SysUtils.FileOpen>
  13. 005AE942  |.  8BF0          MOV ESI,EAX
  14. 005AE944  |.  B9 02000000   MOV ECX,2
  15. 005AE949  |.  33D2          XOR EDX,EDX
  16. 005AE94B  |.  8BC6          MOV EAX,ESI
  17. 005AE94D  |.  E8 1EADE5FF   CALL <TELSPR~1.SysUtils.FileSeek>
  18. 005AE952  |.  8BD8          MOV EBX,EAX
  19. 005AE954  |.  8BC6          MOV EAX,ESI
  20. 005AE956  |.  E8 59ADE5FF   CALL <TELSPR~1.SysUtils.FileClose>
  21. 005AE95B  |.  81FB B0360000 CMP EBX,36B0
  22. 005AE961  |.  7D 07         JGE SHORT TELSPR~1.005AE96A
  23. 005AE963  |.  8B07          MOV EAX,DWORD PTR DS:[EDI]
  24. 005AE965  |.  E8 4A11EDFF   CALL <TELSPR~1.Forms.TApplication.Terminate>

Т.е. каждый файл проверяется на его наличие, и на его размер. Всё это происходит в обработчике:
005ADCB8: Startup.TfStartup.Timer1Timer

После проверки таймер отключается. Решение: изменить код так, чтобы пропускал все проверки и сразу переходил на отключение таймера. Для этого изменим код по адресу 005ADCE0 вот так:

005ADCE0: JMP 005B081B

он прыгнет сразу на 005B081B, а там:
Code:
  1. 005B081B  |> \8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4] ; Sender
  2. 005B081E  |.  8B15 94A64300 MOV EDX,DWORD PTR DS:[43A694]            ; TELSPR~1.0043A6E0
  3. 005B0824  |.  E8 5F2FE5FF   CALL <TELSPR~1.system.@AsClass>
  4. 005B0829  |.  33D2          XOR EDX,EDX ; False
  5. 005B082B  |.  E8 E8B6E8FF   CALL <TELSPR~1.ExtCtrls.TTimer.SetEnable>

Т.е.
Code:
  1. (Sender as TTimer).Enabled := False


После этого программа работает и без папки media. Найти эти проверки было легко. Программа закрывается, если нет папки media, TApplication.Terminate в Delphi программах ничто иное, как API функция PostQuitMessage. Ставим бряк на нее и ждем, откуда вызовется. Что такое API, бряки и отладчик можно почитать в статьях для новичков, например тут: http://exelab.ru/f/action=vthread&forum=5&topic=14847

-----
Yann Tiersen best and do not fuck





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 сентября 2011 08:57
· Личное сообщение · #11

- Не показывалось окошко о том, что версия устарела
В том же IDR идем во вкладку Forms, открываем форму TFSTARTUP в визуальном режиме. Кликаем правой кнопкой на этом чудо-диске и выбираем OnClick = Label_TelecomClick и смотрим адрес обработчика. Это 005AD2A8. В OllyDbg смотрим что там:
Code:
  1. 005A489C  |.  66:B9 1E00    MOV CX,1E ; Word
  2. 005A48A0  |.  66:BA 0600    MOV DX,6 ; Month
  3. 005A48A4  |.  66:B8 DB07    MOV AX,7DB ; Year
  4. 005A48A8  |.  E8 0F68E6FF   CALL <TELSPR~2.SysUtils.EncodeDate>
  5. 005A48AD  |.  DD5D F8       FSTP QWORD PTR SS:[EBP-8]
  6. 005A48B0  |.  9B            WAIT
  7. 005A48B1  |.  E8 CA69E6FF   CALL <TELSPR~2.SysUtils.Date>
  8. 005A48B6  |.  DC5D F8       FCOMP QWORD PTR SS:[EBP-8]
  9. 005A48B9  |.  DFE0          FSTSW AX
  10. 005A48BB  |.  9E            SAHF
  11. 005A48BC  |.  0F86 431B0000 JBE TELSPR~2.005A6405

Кодируется дата посредством EncodeDate, получается текущая дата посредством Date и сравнивается. Прототип EncodeDate:
function EncodeDate(Year, Month, Day: Word): TDateTime;

Т.е.:
MOV CX,1E = 30 день
MOV DX,6 = 6 месяц
MOV AX,7DB = 2011 год

Нужно либо эмулировать работу EncodeDate либо патчить все проверки, которых несколько. Делаем поиск всех вызовов EncodeDate, смотрим где кодируется эта же дата и исправляем проверки. В данном месте исправляем 005A48BC: JBE на JMP, и в других местах так же. Кстати в одном месте видно что код уже пропатчен, не знаю сделал это ТС или это ломаный компонент какой используется. В общем после таких манипуляций сообщения о просроченой программе уходят.

-----
Yann Tiersen best and do not fuck


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

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

Создано: 16 сентября 2011 09:49 · Поправил: virtposting
· Личное сообщение · #12

Огромное спасибо тебе PE_Kill за такой урочек, с такими пояснениями не трудно уже будет разобраться. Сейчас попробую всё и отпишусь как получилось.
Всё получилось. Теперь научился, благодаря вам всем:
- распаковывать не в ручную или какие-нибудь сторонними утилитками, а именно
- создавать мап в идр и импортировать этот мап в ольгу
- узнал больше о идр и работу с формами
- более стал разбираться в ассемблерном коде (но до уважаемого PE_Kill ещё далеко)

Спасибо всем!

Отхожу от темы:
Когда установил Restorator_2007_v3.70.1709 на свой Windows 7 в первый раз, то возникла проблема с инициацией файлов, т.е. перестали просто навсего открываться. Манипуляции с реестром, не помогли
Исправилось это созданием нового профиля (естественно перед этим скопировав все нужные файлы)
Для избежание повторного такого же глюка, после установки Restorator_2007_v3.70.1709, в опциях сразу надо отключить инициацию файлов


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