Показать сообщение отдельно
Старый 25.06.2012, 17:03   #17
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Да, так и есть... Значит, чтобы получить адрес хендлер нужен адрес jamOffs или адрес _this.
Написал функцию получения jamOffst и _this по известным хендлерам, для разных пакетов _this получается разный... При этом jamOffst совпадает с данными от LordJZ

Код:
    //unsigned int op = 30375; //smsg notification
    //unsigned int * handle = (unsigned int *)0x00401230;
    unsigned int op = 43638; //smsg whois
    unsigned int * handle = (unsigned int *)0x004CF590;
    unsigned int * jamOffs = (unsigned int*)((unsigned int)handle + ((op | (op << 16)) ^ 0x62A3A31D));
    unsigned int condensedId = op & 1 | ((op & 0x1C | (((op & 0xC0) | ((op & 0x1C00 | (op >> 1) & 0x6000) >> 2)) >> 1)) >> 1);

    std::cout << std::hex << "Jam: " << jamOffs << std::endl;

    unsigned int * _this = (unsigned int *)(jamOffs - 344 - condensedId);
    std::cout << std::hex << "This: " << _this << std::endl;
Есть идеи как такое может быть?

Последний раз редактировалось Amaru; 26.06.2012 в 10:07.
Amaru вне форума   Ответить с цитированием