· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Внедрение своего кода в программу - создание глоба

Посл.отвђт Сообщенiе


Дата: Ноя 10, 2003 11:55:38 · Поправил: Gloomy

< Внедрение своего кода в программу - создание глобальных переменных >

Взялся ломать переводчик Promt XT. Он уже вломанный, но криво взломанный - после 14 дней с момента установки перестает работать. Если откатить системное время на тот день, когда он был установлен, то все пучком.
Долго ковырял функцию проверки даты - проблема в том что там очень много кода, один ЕХЕшник весит мегабайт, да еще библиотек целая куча. Плюс к этому еще и неявный вызов функций и вызов этих функций из библиотек. В общем забросил я это дело и написал простенький загрузчик, который берет дату одного из файлов, переводит системное время, запускает программу и возвращает время обратно.
Но сейчас возникла маниакальная идея внедрить этот загрузчик непосредственно в сам ЕХЕшник. Как это делать знаю, но возникла проблема: мне нужно объявить две глобальные переменные для хранения времени файла и хранения системного времени. Как это реализовать? Как объявлять строковые константы и загружать их в функции тоже знаю, а вот как создать глобальные переменные?
Заранее большое спасибо!


Дата: Ноя 10, 2003 12:22:11

Думаю тут поможет API Hook - после загрузки впроцесса пропатчить в таблице импорта GetLocalTime (ну или че оно там юзает чтоб время читать?) на свою заглушку и возвращать всегда то что надо.


Дата: Ноя 10, 2003 12:24:16

Не понял вопроса.

Существует несколько вариантов:
первый в свободное место уже существующик секций и править точку входа.
второй добавить ещё одну секцию.
третий писать в последнюю секцию и править размеры.

И если использовать там какие либо переменные, то то что ты туда запишешь в начале то так оно и останется до скончания времён... во как загнул Ж).
Если переменную изменишь то при следющем старте программы она снова сброситься в старое значение.

И что значит глобальные переменные???


1280337212__


Дата: Ноя 10, 2003 13:29:39

Dr.Golova
В смысле надо перехватывать вызов функции от нужного процесса и передавать свои параметры? Здорово придумано, только там библиотек слишком много и непонятно откуда вызывается функция. Сам ЕХЕ-шник функцию не вызывает, хотя она есть в импортах. Пробовал установить бряк на вызов функции GetLocalTime, но после запуска утоп в море "левых" вызовов :(

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


Дата: Ноя 10, 2003 13:40:00

> непонятно откуда вызывается функция
А ты перебери все модули процесса и пропатчи в каждом, или сразу кернел32 патчить =)


Дата: Ноя 10, 2003 13:41:34

Так хрена тут сложного ???
Возьми к примеру их захренячь в свободное место PE заголовка. И делов-то и видно отовсюду.

Но я что-то всё равно не могу понять насчёт глобальных переменных, сколько пишу вирусы все мои переменные видны всегда и отовсюду. Ты же будешь обращаться к байту, ворду или дворду по определённому смещению и если он есть в памяти значит он есть ... и виден отовсюду. Локальные и глобальные переменные это фигня из HLL. Место выделенное в стэке.


Дата: Ноя 10, 2003 21:04:50

Спасибо больше за помощь и советы, программу доканал :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054