Тема: Обсуждение / Вопросы Редактирование функций и добавление IDA
Показать сообщение отдельно
Старый 20.07.2018, 18:03  
Devilry-PvP
На доске почёта
Аватар для Devilry-PvP
OFFLINE
Регистрация: 30.10.2013
Возраст: 44
Сообщений: 120
Благодарностей:
16 всего
Мнения: -824
Репутация: 49
Отправить сообщение для Devilry-PvP с помощью Skype™

Цитата:
Сообщение от DungeonKeeper Посмотреть сообщение
Это будет очень чЁткий пример.... Там не просто так смайл стоит.

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

Допустим офсет там пускай 0x847364
Начинаем...

void Boxfix::int
{
InsertByte (0x847364, *pMsg);
}
breack;
continue;
void WINAPIV CPlayer::pc_ExchangeItem(
ATF::CPlayer * pPlayer,
unsigned __int16 wManualIndex,
unsigned __int16 wItemSerial,
ATF::Info::CPlayerpc_ExchangeItem1711_ptr next)
{
uint8_t byResult = -1;
do
{
auto pCon = pPlayer->m_Param.m_dbInven.GetPtrFromSerial(wItemSerial) ;
if (!pCon)
{
byResult = 4;
break;
}

if (pCon->m_bLock)
{
byResult = 4;
break;
}

if (pCon->m_byTableCode != (uint8_t)e_code_item_table::tbl_code_box)
{
byResult = 12;
break;
}

// Вот нужная проверка
if (pCon->m_dwDur <= 0 || pCon->m_dwDur > 99)
{
break;
}

next(pPlayer, wManualIndex, wItemSerial);
return;
} while (false);

_STORAGE_LIST::_db_con pNewItem;
pPlayer->SendMsg_ExchangeItemResult(byResult, &pNewItem);
}

Хотя мне кажется надо в кейс засунуть....

Последний раз редактировалось Devilry-PvP; 20.07.2018 в 18:15. Причина: Добавлено сообщение
 
Ответить с цитированием