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

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

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

Создано: 30 июня 2010 16:47 · Поправил: dsnup
· Личное сообщение · #1

Вот есть такая задачка.

Есть файл swid.php

В нем код:

Code:
  1. <?php 
  2.  
  3. eval (public_swis());
  4.  
  5. ?>


Как мы видим это простой код который вызывает функцию public_swis()
Далее полученный результат попадает в eval()
eval() - выполняет как код php

ЗАДАЧА --- КАК ПОЛУЧИТЬ ДАННЫЕ которые ВОЗВРАЩАЮТСЯ от функции public_swis()

ПРИ ЭТОМ есть два условия!!!

1. Размер самого файла swid.php всегда должен быть равен ЧЕТКО 38 байт.
Если не равен, то выполнение скрипта не будет.


2. В файле swid.php ровно 5 строчек.
Если вставить новую строчку в любую часть файла, то скрипт не будет работать!

То есть получается, что если попытаться дописать или изменить файл swid.php, то скрипт не будет работать.

ЗАДАЧА --- КАК ПОЛУЧИТЬ ДАННЫЕ которые ВОЗВРАЩАЮТСЯ от функции public_swis()


Файл PHP задокирован фишратором.
Чтобы скрипт работал к нему дается декодер --- decoder_zid.so
Сам декодер это модуль (расширение для php, Extension)
Расширение подключается через php.ini

Сам PHP работает через Апач - КАК МОДУЛЬ (mod_php)

Процесс работы такой:

заходишь на адрес http://сайт.ru/swid.php
Запускается апач, php
обрабатывается скрипт модулем расшифровки decoder_zid.so

в модуле есть функция public_swis() которая делает расшифровку и возвращает ее скрипту
а далее сам скрипт ее выполняет через eval()

Сам модуль decoder_zid.so - написан на Си под FreeBSD

Так вот по мимо дешифровки есть два правила которые написал выше.

если они не выполняются, то дешифровщик прекращает работу.


Как обойти или как поймать уже чистый ответ от функции public_swis() ???

Уже бью над этим не первую неделю.....




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 30 июня 2010 17:54
· Личное сообщение · #2

При чем тут форум по взлому ПО и низкоуровневому программингу?

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




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

Создано: 30 июня 2010 18:25
· Личное сообщение · #3

Тут же наверняка есть люди которые и в PHP рубят




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

Создано: 30 июня 2010 18:27
· Личное сообщение · #4

Стряхну в новички, не буду пока закрывать, вдруг, чо-нить интересное придумают.



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

Создано: 30 июня 2010 18:43
· Личное сообщение · #5

блин... ну вы что...
первый пункт я знаю как пройти
а вот второй не знаю.

есть другой вариант - дизасемблирование модуля, но что из этого выйдет не понятно

есть вариант в теории, но у меня уже тут не хватает практики - это поймать в оперативки раскодированный код.



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

Создано: 30 июня 2010 18:48
· Личное сообщение · #6

Кстате.

Вот как раз по поводу низкоуровневому программингу.

Сам php есть в исходниках.
Исходники на Си под FreeBSD

Фишка в том, что когда устанавливают сервер, то компилируют Апач и PHP и сам модуль чтобы они оба работали - mod_php

mod_php тоже на Си.

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




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

Создано: 30 июня 2010 19:06
· Личное сообщение · #7

Найди кнопку Правка и начни ей пользоваться.



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 30 июня 2010 19:37
· Личное сообщение · #8

а заменить eval() на echo() не?



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

Создано: 01 июля 2010 10:21
· Личное сообщение · #9

да не.
2 правило проверяет сходность



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 01 июля 2010 11:35 · Поправил: _ruzmaz_
· Личное сообщение · #10

тогда можт файло выложишь)?



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

Создано: 01 июля 2010 15:14
· Личное сообщение · #11

я выше написал весь текст скрипта
больше там ничего нет



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

Создано: 01 июля 2010 15:37 · Поправил: ZLOvar
· Личное сообщение · #12

dsnup
Я конечно не ПХП гуру, но если в скрипте нет ничего кроме вызова ХЗ какой функции и присвоения её результата переменной eval(), то во-первых где проверка на целостность и во-вторых:
dsnup пишет:
2. В файле swid.php ровно 5 строчек.
Если вставить новую строчку в любую часть файла, то скрипт не будет работать!

Я почему-то увидел в скрипте только 3 строки
????????????????????




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

Создано: 01 июля 2010 15:53
· Личное сообщение · #13

Смотри в каком модуле находится функция public_swis(), смотри в нём проверку целостности вызывающего модуля, правь её и echo(public_swis())

-----
Следуй за белым кроликом




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

Создано: 01 июля 2010 17:46
· Личное сообщение · #14

выкидываем строчку php и пробел после eval
и меняем eval на var_dump, итого 4 выкинули, 4 добавили. Первое условие выполнено. Количество строчек не меняли, следовательно второе тоже выполнили



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 01 июля 2010 18:01
· Личное сообщение · #15

А, допустим, decoder_zid.so недоступен что ли?



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

Создано: 02 июля 2010 15:48 · Поправил: dsnup
· Личное сообщение · #16

decoder_zid.so он доступен
это типа программа для PHP. она к ПХП подключается
сама она на Си написана, компиляция под FreeBSD

и именно в ней находится функция public_swis()

Декомпилировать decoder_zid.so получается надо.
но, потом не собирешь.

я пытаюсь через hex поймать в decoder_zid.so функцию public_swis()

Veliant выполнили все условия - согласен
но если выкинуть строчку php
то скрипт не запустится уже сразу. это даже не из-за защиты,
а из-за того что PHP сервер выполняет скрипт только если написано
<?php - это начало скрипта

и

?> - это конец

занчит эти две строчки вообще не трогаются. так как иначе это будет считаться не скрипт, а простой текстовой файл.




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

Создано: 02 июля 2010 16:07
· Личное сообщение · #17

Дизассемблируй decoder_zid.so и изучай public_swis(). Возможно собирать заново не придётся, поменять только контрольку. Да и из неё непосредственно можно выдрать возвращаемые в случае успеха данные.

-----
Следуй за белым кроликом




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

Создано: 02 июля 2010 16:28
· Личное сообщение · #18

я думал декомпилировать на Си
пока пробую подобрать декомпилятор.

а вот дизасемблирование это другое дело.
я особо в нем не рулю.
но это не страшно.

мне хотя бы знать что через асм возможно будет что-то сделать.

не умею я в асме ловить контрольки.

я еще другой вариант обдумываю - это в оперативке поймать.
но с оперативки я могу снять дамп.
а что с ним далее делать я не заню. да и думаю это не поможет. так как функция возвращает текст.
а приводить в наормальный вид из дампа - думаю не выйдет.

или я ошибасью? я работал с оперативкой только когда крякал игры. игры легко, там не текст, а параметры - типа много патрон или бесссмертие. достаточно на hex поменять и все.

вообще возможно в оперативки ловить куски текса?



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 02 июля 2010 20:13
· Личное сообщение · #19

dsnup пишет:
я думал декомпилировать на Си
пока пробую подобрать декомпилятор

IDA+HexRays пробовал?


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


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