Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 21:57   #1
Zlyden'
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
Печаль Создание сигнатуры функций для поиска их в памяти процесса

Требуется найти адреса двух функций в процессе. Для этого мне посоветовали создать сигнатуру и по ней искать. Но составить сигнатуру мне так и не удалось (только нервные клетки сгубил). Каким образом ее можно сделать? Пожалуйста, объясните.
Полный исходный код искомых функций имеется, при необходимости выложу.
Zlyden' вне форума Ответить с цитированием
Старый 27.02.2010, 22:13   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Имеется ввиду наверное то, что вам стоит скомпилить данные функции, открыть их (его .exe, .dll....) в WinHex (например). Найти например по меткам каким либо (данные свои описать и т.п.) скопировать их код, например первые 64 байта или т.п. Вот вам и сигнатуры.
BOBAH13 вне форума Ответить с цитированием
Старый 28.02.2010, 00:45   #3
Zlyden'
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию

BOBAH13
Вот на этом-то я мозг и сломал. Эти функции написаны таким образом, что их отдельно не скомпилировать. Куча собственных типов, структур от структур, которые я сойду с ума вырезать. А как обрежу конец функции - этот компилятор-оптимизатор недоделанный обязательно что-то вырежет. Надеялся, что найдется способ полегче.

P.S. Пока писал - нашел! Взять исходники, подменить exe на dll, выставив нужные функции в экспорт, затем через API-функции найти их адрес и на лету попереть машинный код . Должно получиться
Zlyden' вне форума Ответить с цитированием
Старый 28.02.2010, 23:17   #4
Zlyden'
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию

Есть ли какие-то функции для поиска сигнатуры в памяти процесса?

Последний раз редактировалось Zlyden'; 28.02.2010 в 23:28.
Zlyden' вне форума Ответить с цитированием
Старый 28.02.2010, 23:28   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Со словом дизассемблер знакомы ? Поищите, все найдете.
BOBAH13 вне форума Ответить с цитированием
Старый 28.02.2010, 23:59   #6
Zlyden'
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Со словом дизассемблер знакомы ? Поищите, все найдете.
Я имел ввиду поиск в оперативной памяти, а не в самом коде программы.
Zlyden' вне форума Ответить с цитированием
Старый 01.03.2010, 00:07   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

почитайте тут, чуть ниже там есть
http://www.xakep.ru/magazine/xs/057/084/1.asp
NiCola999 вне форума Ответить с цитированием
Старый 01.03.2010, 08:38   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Zlyden' Посмотреть сообщение
Я имел ввиду поиск в оперативной памяти, а не в самом коде программы.
А я имел ввиду, чтобы
1. откомпилить ваши функции
2. открыть в дизасме готовый ехе (или что там у вас)
3. найти нужные функции по коду asm
4. найти соответствующие адреса этих функций в exe
5. копи-паст готового hex-кода - то бишь ваших сигнатур
BOBAH13 вне форума Ответить с цитированием
Старый 01.03.2010, 17:30   #9
Zlyden'
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию

Цитата:
почитайте тут, чуть ниже там есть
http://www.xakep.ru/magazine/xs/057/084/1.asp
Там не описан алгоритм, там описана защита от него.
Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
А я имел ввиду, чтобы
1. откомпилить ваши функции
2. открыть в дизасме готовый ехе (или что там у вас)
3. найти нужные функции по коду asm
4. найти соответствующие адреса этих функций в exe
5. копи-паст готового hex-кода - то бишь ваших сигнатур
Вы не поняли (моя ошибка, надо было пояснить). Я имел ввиду, что эти сигнатуры у меня уже есть. Теперь задача с их помощью найти функции в памяти другого процесса.
Да, и еще вопрос. Я получил сигнатуры с помощью скомпилированной dll, но когда я искал этот код в .ехе, я обнаружил очень похожий - первые 9 байт совпадали 100%, остальные байты совпадали 60х40. Это так и должно быть? Я имею ввиду, что это зависит от компиляции, и при разных настройках компилятор реализует функцию по-разному?

Последний раз редактировалось Zlyden'; 01.03.2010 в 17:55.
Zlyden' вне форума Ответить с цитированием
Старый 01.03.2010, 19:20   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Да. Разные настройки компилятора - разный генерируемый код.
2. Для чтения и записи в память другого процесса - OpenProcess, ReadProcessMemory, WriteProcessMemory - see MSDN
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считать значение из памяти чужого процесса EvgenyZ Win Api 2 27.11.2009 09:29
Чтение данных из памяти процесса (need help) lexastik Win Api 10 26.02.2009 20:50
Редактирование памяти процесса (Delphi) Air Помощь студентам 4 17.10.2008 15:19
Редактирование памяти процесса Air Win Api 6 16.02.2008 20:15