Показать сообщение отдельно

  #32  
Старый 05.06.2015, 12:28
justcoolgeo
Новичок
Регистрация: 02.06.2015
Сообщений: 10
Провел на форуме:
3301

Репутация: 0
По умолчанию

Цитата:
Сообщение от frank  

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

1. сначала декомпилируем приложение, находим нужную нам функцию и узнаем её адрес

2. в библиотеке (dll) пишем перехват функции и модификацию данных

например:

в программе есть функция "пить чай" с входными параметрами "тип чая (зелёный, чёрный)" и "кол-во сахара (в чайных ложках)"

эта функция имеет следующий вид - ПитьЧай(чай, сахар) с адресом 0x0000001

делаем прототип функции "пить чай"

эта функция имеет следующий вид - ПрототипПитьЧай(чай, сахар)

делаем перехват функции - я использую метод сплайсинга (https://ru.wikipedia.org/wiki/Перехват_(программирование ))

суть в том, что когда идёт вызов оригинальной функции ПитьЧай по адресу 0x0000001 то запускается наш прототип ПрототипПитьЧай и получает входные параметры, которые передаются в оригинальную функцию

в функции ПрототипПитьЧай мы изменяем входные параметры и модифицированные данные передаем в оригинальную функцию ПитьЧай

это выглядит примерно так:

//допустим что "чай" - чёрный, а "сахар" - 2 ложки

функция ПрототипПитьЧай(чай, сахар){

//меняем параметры

чай = кофе

сахар = 100500

//передаем модифицированные параметры

ПитьЧай(чай, сахар)

}

или так

//допустим что "чай" - чёрный, а "сахар" - 2 ложки

функция ПрототипПитьЧай(чай, сахар){

//передаем модифицированные параметры

ПитьЧай(кофе, 100500)

}
 
Ответить с цитированием