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

 eXeL@B —› Вопросы новичков —› *.pyc inject
Посл.ответ Сообщение

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

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

Добрый день.
Подскажите пож-та я изучаю дизасемблер питона UnPyC имне интересно как сделать инжект своего кода в откомпилированные файлы питона *.pyc наподобие как это делает Cheat Engine. Тоесть в определенном месте кода указываем безусловный переход на нош адрес (который надо както внедрить в адресное пространство) затем выполняется произвольный код и вновь безусловный переход к следующей строке после той где мы делали перехват изначально.
Для примера предлагаю три файлика собраных только что лично.
sample.py - исходник
sample.pyc - транслированный файл
sample.txt - дизасемблированный файл лог программы UnPyC

Задача:
перехватить установку константы равной 10 и заменить её на нашу в созданном новом адресном пространстве затем вернуться к выполнению программы.

Помогите изучающему, будте так добры.

cf73_18.04.2011_EXELAB.rU.tgz - sample.py



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

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

sample.pyc

d8c5_18.04.2011_EXELAB.rU.tgz - sample.pyc



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

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

sample.txt

a464_18.04.2011_EXELAB.rU.tgz - sample.txt




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

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

Пользуйся кнопкой "Правка", не создавай сообщения подряд.



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

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

прошу прощения видимо не разглядел, но не смог добавить одновременно 3 файла




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

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

3 аттача и не влезут в 1 сообщение, для этого есть обменники или архивы.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

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

fenicks пишет:
перехватить установку константы равной 10 и заменить её на нашу в созданном новом адресном пространстве затем вернуться к выполнению программы.

а изменить саму константу не подойдёт?
Там всё достаточно ясно
00000036 INT: 10 (0A 00 00 00),
в фаиле по смещению 00000036 мы видим 69 0A 00 00 00
меняем значение и смотрим что получилось. я не проверял)
с опкодами тоже всё ясно, находишь их в фаиле и меняеш или дописываешь, но это всё надо проверить на практике, а так дизасемблер отличный)

-----
zzz




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

Создано: 19 апреля 2011 00:02
· Личное сообщение · #8

Так изменить то это понятно, весь интерес именно в выделении дополнительного участка памяти как это делает Cheat Engine....


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


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