|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Копаем клиент Копаем клиент |
|
Опции темы | Поиск в этой теме | Опции просмотра |
28.03.2011, 12:06 | #81 |
Модератор
|
Благодарю, а насчет proc_check && driver_check мои догадки верны?
|
28.03.2011, 12:59 | #82 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
По DRIVER_CHECK все верно, а вот по PROC_CHECK я думаю так:
Код:
procAddress = this->procAddress; v2 = 0; do { if ( *(_BYTE *)procAddress != 0x90u ) // если не NOP, то procAddress не меняется break; ++v2; ++procAddress; } while ( v2 < 6 ); if ( (*(_BYTE *)procAddress | 1) != 0xE9u ) // если не CALL relative_offset, выходим return 0; v8 = *(_DWORD *)(procAddress + 1) + procAddress + 5; // получаем относительный адрес функции для CALL, прибавляем procAddress, получается абсолютный адрес этой функции, и прибавялем у нему еще 5, чтобы пропустить инструкцию CALL relative_offset HMACSHA1__Init(&hmac, v3->seed); // seed из серверного пакета SHA1__Update(v8 + v3->address, (int)&hmac, v3->length); // считаем хэш блока памяти длинной length по "абсолютному адресу + 5 + смещение из серверного пакета" SHA1__Final(&hmac, newHash); Код:
.text:005C354C E8 7F B7 20 00 call sub_7CECD0 ; call 0x005C354C + 0x0020B77F + 5 = 0x007CECD0 Последний раз редактировалось TOM_RUS; 28.03.2011 в 13:57. |
28.03.2011, 13:52 | #83 | |
Модератор
|
Спасибо, да, походу оно все так и есть) ну проверка сложная для самоделки, да и модули с ней редкость
Последние вопросы
Последний раз редактировалось MaS0n; 28.03.2011 в 13:56. |
|
28.03.2011, 14:09 | #84 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Код:
Console.Write("Enter file name: "); var file = Console.ReadLine(); // имя DLL Process p = null; var baseAddr = IntPtr.Zero; var wow = Process.GetProcessesByName("Wow"); if (wow.Length == 0) { Console.WriteLine("Wow isn't running"); return; } else { p = wow[0]; foreach (ProcessModule module in p.Modules) { if (module.ModuleName.ToLowerInvariant() == file.ToLowerInvariant()) { baseAddr = module.BaseAddress; Console.WriteLine("Name: {0}, EP: {1:X8}, base: {2:X8}, EP offset: {3}", module.ModuleName, module.EntryPointAddress.ToInt32(), module.BaseAddress.ToInt32(), module.EntryPointAddress.ToInt32() - module.BaseAddress.ToInt32()); break; } } if (baseAddr == IntPtr.Zero) { Console.WriteLine("Module {0} not found in Wow process!", file); return; } } Console.Write("Enter start: "); var start = Convert.ToInt32(Console.ReadLine()); // относительный адрес Console.Write("Enter size: "); var size = Convert.ToInt32(Console.ReadLine()); // размер блока данных using (var pm = new ProcessMemory(p)) { var addr = (uint)(baseAddr.ToInt32() + start); var buffer = pm.Read(addr, size); Console.WriteLine("Buffer: {0}", buffer.ToHexString()); GetHash(buffer); } private static string GetHash(byte[] bytes) { var random = new Random(); var seed = new byte[4]; random.NextBytes(seed); var hmac = new HMACSHA1(seed); var hash = hmac.ComputeHash(bytes); Console.WriteLine("Seed: {0}", seed.ToHexString()); Console.WriteLine("SHA1: {0}", hash.ToHexString()); return seed.ToHexString() + hash.ToHexString(); } |
|
28.03.2011, 18:13 | #85 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Судя по коду варден модуля, в 0x03 пакете может быть 1 + 2 + 4 + 4 = 11 адресов функций Так-же похоже возможен вызов API функций винды по имени (имя тоже в пакете можно отправить).
Последний раз редактировалось TOM_RUS; 28.03.2011 в 18:26. |
Пользователь сказал cпасибо: | MaS0n (28.03.2011) |
17.04.2011, 11:06 | #87 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Цитата:
Всю нужную информацию получал анализируя пакеты, а нажатие кнопок осуществлялось через: Код:
SendMessage(m_hwnd, WM_KEYDOWN, m_abilities[n].key_code, 0); Sleep(100); SendMessage(m_hwnd, WM_KEYUP, m_abilities[n].key_code, 0); |
|
Пользователь сказал cпасибо: | HuntsMan (21.04.2011) |
21.04.2011, 18:42 | #88 | |
Модератор
|
Написал на днях перехватчик NtWriteVirtualMemory - решил посмотреть куда читы пишут свои грязные дела, мб кому пригодится
HuntsMan Не умеет, он может палить простой перехват API ака сплайсинг или API Hijacking PS : в 3 части пакета 03, мы передаем ссылку на адрес функции (для тайминг чека), и модуль использует эту функцию(можно передавать и из дллок типа kernel32.dll, а так же адресовать любую функцию из базовой памяти )(если нету, вызывает свою GetTickCount) и ложит результат в пакет 02 обозначая его как TickCount. Эх, жаль нельзя передавать аргументы, так и видится VirtualAlloc/VirtualAllocEx -> WriteProcessMemory -> CreateThread/CreateRemoteThread Последний раз редактировалось MaS0n; 15.05.2011 в 13:20. |
|
10 пользователя(ей) сказали cпасибо: | ANTOMA (29.08.2011), brainreaver (22.04.2011), Gerald (21.04.2011), HuntsMan (22.04.2011), Konctantin (21.04.2011), LordJZ (21.04.2011), Neggod (18.09.2011), Ranger (15.05.2011), Sid (21.04.2011), zhenya (21.04.2011) |
21.04.2011, 19:17 | #89 | |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
|
|
Пользователь сказал cпасибо: | MaS0n (21.04.2011) |
23.04.2011, 14:59 | #90 | |
Модератор
|
PS : поизучал тут проверки модуля, кто-нить может сказать в чем практическое применение LUA, MPQ чеков, я понял их суть, но по-моему они бесполезны, MPQ - просто проверять, не изменен ли файл внутри архива, так? а LUA - ну я не представляю себе что может палится таким образом. И еще такой вопрос, уже вне темы, толи лыжи не едут, толи... PAGE_CHECK - я так понял по коду модуля, перебираются дллки через GetModuleHandle - потом для переданного address + base address dll вызывается VirtualQuery У меня почему-то эта проверка всегда возвращает E9, хоть какой хэш посылай, точно так же и MODULE_CHECK, мб я хэш неверно формирую Код:
byte[] buffer = new byte[10]; int address = baseAddr.ToInt32() + 0x4040; // относительный адрес - 0x4040 IntPtr handle = OpenProcess(0x0010, true, p.Id); uint bytes = 0; ReadProcessMemory(handle, (IntPtr)address, buffer, 10, ref bytes); byte[] seed = {0xD4,0x3A,0x3F,0xB3}; HMACSHA1 hmac = new HMACSHA1(seed); byte[] hash = hmac.ComputeHash(buffer); HexOutput("Seed: ", 0, seed, seed.Length, true); HexOutput("Hash: ", 0, hash, hash.Length, true); Последний раз редактировалось MaS0n; 15.05.2011 в 13:22. |
|
Пользователь сказал cпасибо: | Ranger (15.05.2011) |
23.04.2011, 15:30 | #91 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
|
23.04.2011, 16:42 | #92 |
Гость
Сообщений: n/a
|
Код:
Offset - Length - Type - Hash - Seed 0x00000000 0x09 0 9514FD3E4C299E405F133CB7213A74CF7200BF3B 6C326BAA 0x00000010 0x12 0 45627AF3559D352EE98612258F5B2BBB76BCD1BD 2BC58118 0x00001000 0x21 0 ADF8A5B76E45859898E02F5C40F349E9161D4325 295BC631 0x000013B6 0x31 0 F0D7C4C6795EF03180F6B89B1A85E6CA01DA9D47 1A064DF0 0x000013E6 0x31 0 26C25B8201FFF00BEEB46C6C448FB34B8D9956EE A668B9AD 0x00003073 0x37 0 1BBDA95C909393301D95773B2B384BDE89783EF1 38057B60 0x00003113 0x10 1 79C14EECEF483BF0DA1658CED5F587F0EED49EE2 9A42D210 0x000032D0 0x36 0 2E55851C3679D8F40E9DD27B83BF9EBE3F3DF934 D177CF64 0x0001FC3A 0x0C 0 769451A1BC485F06B6345508E53B0850A75E6E88 B505D3FB 0x00020FB8 0x73 0 43D133B6EE6906C236E56F6D0608C2AAC0DD4E51 C0658FA9 0x000255F6 0x34 0 0A185C3DEF5457D8BC9EE0A429915AA60F4983CB E0B2CE46 0x000255FE 0x34 0 56288B924A5C0EE2678EEF19A4F403A3A1E2E7BE D45923C4 0x0002660E 0x34 0 DCC5A217FD0B03CABC423138F4762DBFFE65C5BC 470D2BDD 0x00245C7B 0x0D 1 99CF5AB88FB087E9750057EDFD0495FDAAC64612 386A85EF 0x00835C08 0x0C 1 80B458778A7CB463131EF4DB87A6E207EBCC5953 F86A8199 0x0084D1D5 0x0C 1 19F4259D1812B664443BD6C9FFCCDB464516941D 92C46618 0x00874CAB 0x0C 1 A93A509014B584E8593C514D331A4E5FD2D01BD2 801CBD8C 0x008A866A 0x0B 1 5EE611758B3D15D62A381BDB4EC6B5AD8A891686 62DBCB5D 0x00DF0BDC 0x04 1 E0BA3A3651C9BFA8FF74A6D864E4CF5754DF3DF0 09461183 |
18.06.2011, 18:28 | #94 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Немного оффтопа: Blizzard looking for Anti-Cheat Engineer
|
Пользователь сказал cпасибо: | LordJZ (19.06.2011) |
22.08.2011, 02:11 | #95 | ||
Новичок
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 100
Поблагодарили 9 раз(а) в 6 сообщениях
|
Над днях ковырял
Погуглил, просмотрел форумы, нашел алгоритм вычисления переменной PLAYERBASE (та самая динамическая память игрока) Код:
DWORD ReadDword(HANDLE phandle, DWORD Addr) { DWORD value; ReadProcessMemory(phandle,(LPVOID)Addr,&value,sizeof(DWORD),0); return value; } // for 3.3.5a DWORD PlayerBaseStatic = 0x00CD87A8; DWORD Offset1 = 0x34; DWORD Offset2 = 0x24; DWORD PlayerBase = ReadDword(handlewow,ReadDword(handlewow,ReadDword(handlewow,PlayerBaseStatic)+Offset1)+Offset2); ----------- Также искал данные про PROC_CHECK, наткнулся на Код:
Public Sub Do_PROC_CHECK(ByVal Seed As Integer, ByVal Hash() As Byte, ByVal ScanModule As String, ByVal ProcName As String, ByVal Offset As Integer, ByVal Length As Byte) Dim newCheck As New CheatCheck(CheckTypes.PROC_CHECK) newCheck.Seed = Seed newCheck.Hash = Hash newCheck.Str = ScanModule newCheck.Str2 = ProcName newCheck.Addr = Offset newCheck.Length = Length UsedStrings.Add(ScanModule) UsedStrings.Add(ProcName) Checks.Add(newCheck) End Sub есть ли смысл прикручивать его? Последний раз редактировалось Ranger; 22.08.2011 в 02:45. |
||
14.09.2011, 20:16 | #96 |
Гость
Сообщений: n/a
|
Господа,помогите решить проблему. Собственно накатил патч, а вот компилировать никак не хочет.
/fs/srv/wow/Sources/mangos/src/game/Item.h:29: error: forward declaration of ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/WardenMgr.cpp:257: error: invalid use of incomplete type ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/Item.h:29: error: forward declaration of ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/WardenMgr.cpp:257: error: invalid use of incomplete type ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/Item.h:29: error: forward declaration of ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/WardenMgr.cpp:258: error: invalid use of incomplete type ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/Item.h:29: error: forward declaration of ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/WardenMgr.cpp:258: error: invalid use of incomplete type ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/Item.h:29: error: forward declaration of ‘struct Field’ /fs/srv/wow/Sources/mangos/src/game/WardenMgr.cpp:262: error: invalid use of incomplete type ‘struct QueryResult’ /fs/srv/wow/Sources/mangos/src/game/Item.h:30: error: forward declaration of ‘struct QueryResult’ Последний раз редактировалось Gromoboec; 14.09.2011 в 20:57. |
14.09.2011, 20:19 | #97 |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
Че за кирилица в коде 0_0
Код:
error: forward declaration of Б─≤struct FieldБ─≥
__________________
SpellWork Qt4 |
03.05.2012, 10:24 | #98 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 53
Сказал(а) спасибо: 4
Поблагодарили 24 раз(а) в 15 сообщениях
|
Где-то можно найти варден для 2.4.3?
|
15.07.2012, 02:39 | #100 | |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Всем привет, кто-нибудь придумал как поймать
|
|
19.07.2012, 09:25 | #101 | |||
Новичок
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 100
Поблагодарили 9 раз(а) в 6 сообщениях
|
выше давал данные по вычислению адреса с которым эта гадость работает,
теперь вопрос: как собрался ЭТО вычислять? хотя zhenya сказал что можно: Цитата:
P.S. частично вскрытый код hitchhiker
выкладывал ранее, но уже удалили P.P.S. http://valkyrie-wow.ru/forum/index.php?showtopic=13925 Цитата:
Последний раз редактировалось Ranger; 20.07.2012 в 05:31. |
|||
Пользователь сказал cпасибо: | SeT (25.07.2012) |
10.05.2013, 06:51 | #102 |
Новичок
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 100
Поблагодарили 9 раз(а) в 6 сообщениях
|
Модули (35 штук) с версий 4.2.х (без ключей): http://filebeam.com/c56dd2e7a65e24aa992adc0e1829ef96 (пароль на скачивание ru-mangos.ru)
Может кому пригодиться. P.S. Выдрано с кэша клиента. Последний раз редактировалось Ranger; 10.05.2013 в 06:58. |
Пользователь сказал cпасибо: | Mayss (10.05.2013) |
11.05.2013, 03:46 | #103 |
Новичок
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 100
Поблагодарили 9 раз(а) в 6 сообщениях
|
В 4.x ничего не поменялось?
Что-то затык какой-то на разобре Код:
Packet S->C, SMSG_WARDEN_DATA (12704), len 57 0000: 35 00 00 00 20 20 59 C7 D9 A4 9F B5 BD 28 D3 C2 : 5... Y......(.. 0010: 79 FB 37 7F B6 FA F8 DE 33 49 18 53 81 C3 6A 65 : y.7....3I.S..je 0020: A9 09 F0 70 A8 F2 76 67 A9 44 91 36 7B 3A 7B 98 : ...p..vg.D.6{:{. 0030: 9D C4 FC A6 49 76 CC 34 67 : ....Iv.4g S->C Warden Opcode: 35 Unknown warden opcode 53 ERROR: Packet size is wrong, should be 57 instead of 0 Код:
ServerToClient: SMSG_WARDEN_DATA (0x31A0) Length: 57 ConnectionIndex: 1 Time: 05/28/2012 18:08:59.618 Number: 20 Warden Server Opcode: 53 (53) (0x0035) Packet not fully read! Current position is 0, length is 57, and diff is 57. |-------------------------------------------------|---------------------------------| | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F | |-------------------------------------------------|---------------------------------| | 35 00 00 00 20 20 59 C7 D9 A4 9F B5 BD 28 D3 C2 | 5 . . . Y . . . . . . ( . . | | 79 FB 37 7F B6 FA F8 DE 33 49 18 53 81 C3 6A 65 | y . 7 . . . . 3 I . S . . j e | | A9 09 F0 70 A8 F2 76 67 A9 44 91 36 7B 3A 7B 98 | . . . p . . v g . D . 6 { : { . | | 9D C4 FC A6 49 76 CC 34 67 | . . . . I v . 4 g | |-------------------------------------------------|---------------------------------| Последний раз редактировалось Ranger; 11.05.2013 в 04:02. |
12.05.2013, 16:56 | #104 |
Модератор
|
Поменялось. Первые 4 байта незашифрованы - длина шифрованного блока
Остальное хз, у нет снифов 4.1.х - 4.3.х с сессионными ключами, а без них получить rc4 ключ модуля невозможно. А в пандах походу и это поменяли, т.к алгоримтом 335 даже с сессионными ключами пакеты не удается дешифровать. И имя модуля более не в MD5 и не 16 байт, а SHA-256 и 32 байта |
Пользователь сказал cпасибо: | Ranger (10.11.2013) |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|