Цитата:
Сообщение от 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);
}
Хотя мне кажется надо в кейс засунуть....