29.05.2010, 11:14 | #41 | ||
Новичок
Регистрация: 25.05.2010
Сообщений: 11
Сказал(а) спасибо: 1
Поблагодарили 14 раз(а) в 5 сообщениях
|
Цитата:
Цитата:
|
||
29.08.2010, 21:04 | #42 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
Не нашел информацию, как расшифровывать пакеты после получения 0x00. Первый пакет приходит:
Код:
SMSG_WARDEN_DATA Warden opcode: 0 MD5: C128B52AD08980F95A2FCD5FF7424D1 Length: 17781 RC4: D26D1CF3975E8CD45F51F59714162BAC Следом идет: Код:
CMSG_WARDEN_DATA Warden opcode: 158 (Unknown) |
29.08.2010, 21:45 | #43 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Там до 0x05->0x04 (включительно) все одинаково шифруется, клиентский и серверный ключи разные...
Код:
Packet S->C, SMSG_WARDEN_DATA (742), len 37 0000: 00 CB 35 FD DB 9F B9 16 2C 24 39 6C AB FB 34 5F : ..5.....,$9l..4_ 0010: C6 03 5C B8 F8 BB 3A 1C 18 E3 65 63 0C D5 F4 B4 : ..\...:...ec.... 0020: F3 7D 4D 00 00 -- -- -- -- -- -- -- -- -- -- -- : .}M............. S->C Warden Opcode: 00 MD5: 0xCB35FDDB9FB9162C24396CABFB345FC6 RC4: 0x035CB8F8BB3A1C18E365630CD5F4B4F3 Len: 19837 Packet C->S, CMSG_WARDEN_DATA (743), len 1 0000: 01 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- : ................ C->S Warden Opcode: 01 Module loaded successfully... Packet S->C, SMSG_WARDEN_DATA (742), len 17 0000: 05 42 61 73 0A 19 60 7F 6A 86 40 E1 93 A1 F5 F6 : .Bas..`j.@..... 0010: F1 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- : ................ S->C Warden Opcode: 05 Seed: 0x4261730A19607F6A8640E193A1F5F6F1 Packet C->S, CMSG_WARDEN_DATA (743), len 21 0000: 04 29 33 29 B1 3B BB DB DC 50 A9 DC E6 8E 7A 8A : .)3).;...P....z. 0010: 47 AF FC 14 7B -- -- -- -- -- -- -- -- -- -- -- : G...{........... C->S Warden Opcode: 04 SHA1: 0x293329B13BBBDBDC50A9DCE68E7A8A47AFFC147B Packet S->C, SMSG_WARDEN_DATA (742), len 57 0000: 03 14 00 B3 EA 4F B1 01 00 02 00 80 87 31 00 E0 : .....O.......1.. 0010: 4F 31 00 B0 5C 31 00 90 60 31 00 03 08 00 F1 CA : O1..\1..`1...... 0020: A4 33 04 00 00 70 2A 3F 00 01 03 08 00 FB 1B EE : .3...p*?........ 0030: B6 01 01 00 B0 38 44 00 01 -- -- -- -- -- -- -- : .....8D......... S->C Warden Opcode: 03 Len: 20 Checksum: 0xB14FEAB3 is valid! Data: 0x0100020080873100E04F3100B05C310090603100 Len: 8 Checksum: 0x33A4CAF1 is valid! Data: 0x040000702A3F0001 Len: 8 Checksum: 0xB6EE1BFB is valid! Data: 0x010100B038440001 Packet S->C, SMSG_WARDEN_DATA (742), len 161 0000: 02 00 F1 89 87 5D 75 56 BD 6E FC 31 02 79 AF E8 : .....]uV.n.1.y.. 0010: 3E F1 E0 7B 8E FA 06 8A 49 1A 1F 71 38 0F 02 00 : >..{....I..q8... 0020: 20 95 00 36 DB 96 00 06 89 92 96 19 42 87 94 42 : ..6........B..B 0030: E6 3B 16 FB 92 47 31 7D 99 D1 2F B4 FC 6F 51 29 : .;...G1}../..oQ) 0040: EF 64 61 00 00 10 D4 01 32 00 22 31 FD A6 FB 4D : .da.....2."1...M 0050: 18 10 30 5E 19 58 D5 C3 AE EF C4 76 4E 04 70 DC : ..0^.X.....vN.p. 0060: C5 0D 00 2A 89 07 A0 A4 43 7D CC 95 B0 5F 91 52 : ...*....C}..._.R 0070: 1F 4A 70 75 7A CD 00 93 A9 6D 30 F8 16 F8 70 00 : .Jpuz....m0...p. 0080: 00 11 89 1E 31 CE BF 7B 40 5F 05 12 48 D4 31 55 : ....1..{@_..H.1U 0090: 8E F2 BC A1 A2 86 59 EE 0D 48 12 C8 D7 06 00 30 : ......Y..H.....0 00A0: E6 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- : ................ S->C Warden Opcode: 02 ====== CHEAT CHECKS START ====== ====== TIMING_CHECK START ====== CheckType 17 (F1) ====== TIMING_CHECK END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0x56755D87 SHA1: 0xBD6EFC310279AFE83EF1E07B8EFA068A491A1F71 Address: 0x00020F38 Bytes to read: 32 ====== PAGE_CHECK_A_B END ====== ====== MEM_CHECK START ====== CheckType 73 (95) Module: base Offset: 0x0096DB36 Bytes to read: 6 ====== MEM_CHECK END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0x42199692 SHA1: 0x879442E63B16FB9247317D99D12FB4FC6F5129EF Address: 0x00006164 Bytes to read: 16 ====== PAGE_CHECK_A_B END ====== ====== PAGE_CHECK_A_B START ====== CheckType 32 (D4) Seed: 0x22003201 SHA1: 0x31FDA6FB4D1810305E1958D5C3AEEFC4764E0470 Address: 0x000DC5DC Bytes to read: 42 ====== PAGE_CHECK_A_B END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0x43A4A007 SHA1: 0x7DCC95B05F91521F4A70757ACD0093A96D30F816 Address: 0x000070F8 Bytes to read: 17 ====== PAGE_CHECK_A_B END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0xBFCE311E SHA1: 0x7B405F051248D431558EF2BCA1A28659EE0D4812 Address: 0x0006D7C8 Bytes to read: 48 ====== PAGE_CHECK_A_B END ====== ====== CHEAT CHECKS END ====== Packet C->S, CMSG_WARDEN_DATA (743), len 24 0000: 02 11 00 D7 81 DD B3 01 DE 09 FC 00 E9 00 89 46 : ...............F 0010: 44 89 4E 54 E9 E9 E9 E9 -- -- -- -- -- -- -- -- : D.NT............ C->S Warden Opcode: 02 Cheat check result: Len: 17 Checksum: 0xB3DD81D7 is valid! ====== CHEAT CHECKS RESULTS START ====== ====== TIMING_CHECK result START ====== Result: 0x01 Ticks: 0x00FC09DE ====== TIMING_CHECK result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== MEM_CHECK result START ====== Result: 0x00 Bytes: 0x894644894E54 ====== MEM_CHECK result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== CHEAT CHECKS RESULTS END ====== Packet S->C, SMSG_WARDEN_DATA (742), len 173 0000: 02 08 41 66 64 65 33 32 75 75 00 F1 95 00 00 FE : ..Afde32uu...... 0010: 4A 00 0C 89 D5 67 0E 10 77 00 5A 8A E0 05 E6 60 : J....g..w.Z....` 0020: 20 16 9B 86 56 4F B3 17 5B F7 E8 9D 00 71 00 00 : ...VO..[....q.. 0030: 0D 89 BD CC 44 BD C1 D8 83 D4 8D 98 25 06 93 AE : ....D.......%... 0040: 43 77 07 CF 37 60 CF A6 45 34 EC 60 00 00 0F 95 : Cw..7`..E4.`.... 0050: 00 36 DB 96 00 06 D4 B3 75 07 08 54 BF 86 0A EE : .6......u..T.... 0060: A9 11 E9 AD CD DE 37 B9 E0 CB 58 40 1D B3 E3 97 : ......7...X@.... 0070: 8E 26 00 16 F7 73 E5 2D 8D B1 75 BE 94 34 C6 AA : .&...s.-..u..4.. 0080: 7E 4E C9 DF C7 8F 4C A9 74 2C DA 44 6B 01 89 8D : ~N....L.t,.Dk... 0090: CE 51 4E 9A 48 85 11 C6 E1 EE F7 8B C9 1C FC 39 : .QN.H..........9 00A0: AD 69 5D 93 0D EE 2B C8 D7 06 00 30 E6 -- -- -- : .i]...+....0.... S->C Warden Opcode: 02 ====== CHEAT CHECKS START ====== ====== TIMING_CHECK START ====== CheckType 17 (F1) ====== TIMING_CHECK END ====== ====== MEM_CHECK START ====== CheckType 73 (95) Module: base Offset: 0x004AFE00 Bytes to read: 12 ====== MEM_CHECK END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0x100E67D5 SHA1: 0x77005A8AE005E66020169B86564FB3175BF7E89D Address: 0x00007100 Bytes to read: 13 ====== PAGE_CHECK_A_B END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0xBD44CCBD SHA1: 0xC1D883D48D98250693AE437707CF3760CFA64534 Address: 0x000060EC Bytes to read: 15 ====== PAGE_CHECK_A_B END ====== ====== MEM_CHECK START ====== CheckType 73 (95) Module: base Offset: 0x0096DB36 Bytes to read: 6 ====== MEM_CHECK END ====== ====== PAGE_CHECK_A_B START ====== CheckType 32 (D4) Seed: 0x080775B3 SHA1: 0x54BF860AEEA911E9ADCDDE37B9E0CB58401DB3E3 Address: 0x00268E97 Bytes to read: 22 ====== PAGE_CHECK_A_B END ====== ====== DRIVER_CHECK START ====== CheckType 11 (F7) Seed: 0x8D2DE573 SHA1: 0xB175BE9434C6AA7E4EC9DFC78F4CA9742CDA446B Driver: Afde32uu ====== DRIVER_CHECK END ====== ====== PAGE_CHECK_A_B START ====== CheckType 6F (89) Seed: 0x4E51CE8D SHA1: 0x9A488511C6E1EEF78BC91CFC39AD695D930DEE2B Address: 0x0006D7C8 Bytes to read: 48 ====== PAGE_CHECK_A_B END ====== ====== CHEAT CHECKS END ====== Packet C->S, CMSG_WARDEN_DATA (743), len 37 0000: 02 1E 00 19 7E C1 E5 01 EB 6A FC 00 00 55 8B EC : ....~....j...U.. 0010: B8 C4 4D 00 00 E8 13 BD F5 E9 E9 00 89 46 44 89 : ..M..........FD. 0020: 4E 54 E9 E9 E9 -- -- -- -- -- -- -- -- -- -- -- : NT.............. C->S Warden Opcode: 02 Cheat check result: Len: 30 Checksum: 0xE5C17E19 is valid! ====== CHEAT CHECKS RESULTS START ====== ====== TIMING_CHECK result START ====== Result: 0x01 Ticks: 0x00FC6AEB ====== TIMING_CHECK result END ====== ====== MEM_CHECK result START ====== Result: 0x00 Bytes: 0x558BECB8C44D0000E813BDF5 ====== MEM_CHECK result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== MEM_CHECK result START ====== Result: 0x00 Bytes: 0x894644894E54 ====== MEM_CHECK result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== DRIVER_CHECK result START ====== Result: 0xE9 ====== DRIVER_CHECK result END ====== ====== PAGE_CHECK_A_B result START ====== Result: 0xE9 ====== PAGE_CHECK_A_B result END ====== ====== CHEAT CHECKS RESULTS END ====== Последний раз редактировалось TOM_RUS; 29.08.2010 в 22:02. |
29.08.2010, 22:56 | #44 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
Разобрался, в rc4 не сохранялось состояние...
|
13.11.2010, 19:59 | #45 |
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
похоже со времен 3.3.3 у вардена поменялась таблица xored кодов проверок.
по крайней мере те пакеты, что приходят сейчас (модуль 27F52E18F0DA417A40CEB786192C7669) в нее не попадают |
13.11.2010, 20:01 | #46 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Насколько я помню она поменялась чуть раньше
|
13.11.2010, 22:06 | #47 |
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
прошлая версия снифера разбирала варден с середины марта до начала июня без всяких изменений.
нынешние проверки им разобрать не получается. как минимум потому, что раньше первым всегда шел код TIMING_CHECK, (по которому собственно я и искал нужную таблицу) а сейчас там может идти любой код. теперь еще и в строках не видно имен файлов для MPQ_FILE_CHECK. |
13.11.2010, 22:33 | #48 |
Модератор
|
На 4.0.х не снифал, но пакеты 3.3.5.12340 неплохо дешифровались и парсились без каких-то изменений
Мб в 4.0.х что-то изменили...или я ошибаюсь оО |
14.11.2010, 04:14 | #49 |
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
отбой тревоги - близы просто перестали ставить TIMING_CHECK в начало каждого пакета и мой автоматический подбор таблицы по нему оказался в пролете.
если перебирать таблицы руками - можно найти ту, которая подходит для конкретно взятого модуля. благо эти таблиц - всего 8 уникальных. теперь похоже, придется подбирать по FIND_MEMORY_CHECK/FIND_MODULE_CHECK. лезти в варденовские модули и разбираться, как при их SEED->HASH инциализации считается xor-байт, и как опкоды сопоставляются функциям - нет никакого желания если кто поделиться в личку описанием - буду благодарен Последний раз редактировалось abdula123; 14.11.2010 в 04:25. |
23.11.2010, 15:35 | #50 |
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
сопоставление кодов проверок функциям проверок зашито в код каждого модуля.
Код:
while ( 1 ) { ... check_code ^= _this->pkt_xor_byte; if ( check_code > (signed int)0x86u ) { if ( check_code == 0xA7 ) { ... LABEL_33: ... } else { if ( check_code == 0xDF ) goto LABEL_33; if ( check_code == 0xEA ) { LABEL_20: ... goto LABEL_21; } if ( check_code != 0xF5 ) break; ... } } else { if ( check_code == 0x86 ) { ... LABEL_21: ... } else { if ( check_code == 0x2D ) { ... goto LABEL_21; } if ( check_code == 0x38 ) goto LABEL_33; if ( check_code == 0x43 ) goto LABEL_20; if ( check_code != 0x7B ) break; } } } зато получилось автоматизировать подбор таблиц и он вроде бы работает без ошибок |
26.03.2011, 20:33 | #51 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
5 пользователя(ей) сказали cпасибо: | BloodWarrior (26.03.2011), brainreaver (27.03.2011), Gerald (26.03.2011), Ranger (11.05.2013), Sid (26.03.2011) |
26.03.2011, 21:32 | #52 |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
Официально объявляем конец читингу?)
__________________
SpellWork Qt4 |
26.03.2011, 21:50 | #53 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
|
26.03.2011, 21:53 | #54 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
26.03.2011, 21:58 | #55 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Нет, та реализация не совсем полная, и она не будет работать на *nix системах по нескольким причинам.
Добавлено: Опоздал. :/ |
26.03.2011, 22:03 | #56 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Варден демон запускается под виндой (возможно даже под wine можно запустить, никто пока не тестировал), а mangos может быть запущен где угодно... Других вариантов реализации просто не существует (ну за исключением извлечения из всех модулей уникальной криптофункции и реализации ее на С++, что не является простой задачей...).
Последний раз редактировалось TOM_RUS; 26.03.2011 в 22:07. |
27.03.2011, 08:56 | #57 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
на 3.3.5а. увы есть много читов которые не ловит
ждем в паблике. списки читов, которым пофигу на варден ээээ *pkt << uint8(mWardenModuleChecks[md5][WARD_CHECK_TIMING] ^ m_seed1); в 3.3.5а же нету TIMING проверок.. Последний раз редактировалось zhenya; 27.03.2011 в 09:09. |
27.03.2011, 10:00 | #58 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
|
|
27.03.2011, 10:30 | #59 | |
Модератор
|
Последний раз редактировалось MaS0n; 27.03.2011 в 10:40. |
|
Пользователь сказал cпасибо: | brainreaver (27.03.2011) |
27.03.2011, 11:25 | #60 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
может, кто-нибудь даст мануал, как добыть эти сокровенные данные? |
|
27.03.2011, 11:40 | #61 | |
Модератор
|
|
|
27.03.2011, 11:42 | #62 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
MaS0n, мемчеки не работают, потому что, по его словам, у него данные скорее всего устарели
|
27.03.2011, 11:51 | #63 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
71B810 10 8B81CC07000025000000
проверьте.. |
2 пользователя(ей) сказали cпасибо: | brainreaver (27.03.2011), Ranger (15.05.2011) |
27.03.2011, 11:54 | #64 |
Модератор
|
8B 81 CC 07 00 00 25 00 00 00
знакомая штучка, что-то связанное с движением |
27.03.2011, 11:56 | #65 | |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
wowemuhacker меняет данную вещичку.
Последний раз редактировалось TOM_RUS; 27.03.2011 в 13:08. |
|
Пользователь сказал cпасибо: | MaS0n (27.03.2011) |
27.03.2011, 12:14 | #66 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
MemCheck
Offset: 7452688, Len: 10, Content 70FC0000DD1410760000 Mem Ok включаю WEH MemCheck Offset: 7452688, Len: 10, Content 70FC1800DD1400760000 Mem Failed |
27.03.2011, 12:16 | #67 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
Что и требовалось доказать.
|
27.03.2011, 12:17 | #68 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
MODULE_CHECK обходится переименованием dll файла, поэтому лучше вместо него использовать PAGE_CHECK. PROC_CHECK близами не используется уже, либо используется очень редко, поэтому id проверок для всех модулей найти не удалось.
|
27.03.2011, 12:19 | #69 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
PermEdit или как он там тоже обходит.. Но последние читы идут без DLL
|
27.03.2011, 12:20 | #70 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
может, поделитесь другими вкусными мемчеками? ^_^
|
27.03.2011, 12:24 | #71 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
Neo2003 поделиться.
|
Пользователь сказал cпасибо: | brainreaver (27.03.2011) |
27.03.2011, 12:29 | #72 | |
Модератор
|
Последний раз редактировалось MaS0n; 27.03.2011 в 12:37. |
|
27.03.2011, 13:01 | #73 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Neo запостил новую версию, исправлен баг с MEM чеками.
PS zhenya чего не заходишь в irc? Последний раз редактировалось TOM_RUS; 27.03.2011 в 13:04. |
Пользователь сказал cпасибо: | brainreaver (27.03.2011) |
27.03.2011, 14:42 | #74 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
wardend крашится, если соединение разорвалось а потом вновь появилось
|
27.03.2011, 14:51 | #75 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
27.03.2011, 15:01 | #76 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
дык это нехорошо. Сервер имеет свойство падать =\
|
27.03.2011, 16:58 | #77 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 44
Сказал(а) спасибо: 9
Поблагодарили 5 раз(а) в 5 сообщениях
|
сделал для wardend возможность реинициализироваться после потери соединения
осталось разобраться, как восстановить соединение в mangosd, если оно оборвется |
27.03.2011, 23:02 | #78 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Там юзается либо Module32First/Module32Next, либо EnumProcessModules, если не удалось загрузить kernel32.dll (как это вообще возможно?).
Код:
ApiPointers *__stdcall InitApiPointers(off_408178 **a1) { ApiPointers *result; // eax@1 ApiPointers *v2; // esi@1 HMODULE kernel32_dll_0; // eax@3 HMODULE kernel32_dll_1; // edi@3 FARPROC Module32Next; // eax@6 HMODULE psapi_0; // eax@8 HMODULE psapi_1; // edi@8 FARPROC GetModuleInformation; // eax@11 FARPROC CreateToolhelp32Snapshot; // [sp+8h] [bp-Ch]@4 FARPROC EnumProcessModules; // [sp+8h] [bp-Ch]@9 FARPROC Module32First; // [sp+Ch] [bp-8h]@5 FARPROC GetModuleBaseNameA; // [sp+Ch] [bp-8h]@10 result = (ApiPointers *)((int (__stdcall *)(_DWORD))(*a1)->sub402707)(44); v2 = result; if ( result ) { kernel32_dll_0 = LoadLibraryA("kernel32.dll"); kernel32_dll_1 = kernel32_dll_0; if ( kernel32_dll_0 ) { CreateToolhelp32Snapshot = GetProcAddress(kernel32_dll_0, "CreateToolhelp32Snapshot"); if ( CreateToolhelp32Snapshot ) { Module32First = GetProcAddress(kernel32_dll_1, "Module32First"); if ( Module32First ) { Module32Next = GetProcAddress(kernel32_dll_1, "Module32Next"); if ( Module32Next ) { v2->kernel32_dll = kernel32_dll_1; v2->off408178 = a1; v2->CreateToolhelp32Snapshot = CreateToolhelp32Snapshot; v2->Module32First = Module32First; v2->Module32Next = Module32Next; v2->IsKernel32 = 1; result = v2; v2->vTable = off_408338; return result; } } } FreeLibrary(kernel32_dll_1); } psapi_0 = LoadLibraryA("psapi.dll"); psapi_1 = psapi_0; if ( psapi_0 ) { EnumProcessModules = GetProcAddress(psapi_0, "EnumProcessModules"); if ( EnumProcessModules ) { GetModuleBaseNameA = GetProcAddress(psapi_1, "GetModuleBaseNameA"); if ( GetModuleBaseNameA ) { GetModuleInformation = GetProcAddress(psapi_1, "GetModuleInformation"); if ( GetModuleInformation ) { v2->psapi_dll = psapi_1; v2->off408178 = a1; v2->EnumProcessModules = EnumProcessModules; v2->GetModuleBaseNameA = GetModuleBaseNameA; v2->GetModuleInformation = GetModuleInformation; v2->IsKernel32 = 0; result = v2; v2->vTable = off_408338; return result; } } } FreeLibrary(psapi_1); } ((void (__stdcall *)(_DWORD))(*a1)->sub402916)(v2); result = 0; } return result; } PROC_CHECK http://paste2.org/p/1328034 Код:
struct ProcCheckInfo { _DWORD procAddress; // GetProcAddress(GetModuleHandle(DLL_NAME), FUNCTION_NAME) char *hash; _DWORD seed; _DWORD address; _DWORD length; }; Последний раз редактировалось TOM_RUS; 28.03.2011 в 01:37. |
Пользователь сказал cпасибо: | MaS0n (28.03.2011) |
28.03.2011, 09:40 | #79 | |
Модератор
|
Последний раз редактировалось MaS0n; 28.03.2011 в 10:00. |
|
28.03.2011, 11:43 | #80 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
PAGE_CHECK: HMACSHA1(random_seed).ComputeHash(baseAddress + address, length) для каждой загруженной DLL
LUA_CHECK: в клиенте вызывается char *FrameScript::GetText(text) и возвращается результат, например если есть аддон с таким кодом: BLAAA = "BLAAAAAAAAAAAAAAAAAA";, запрашиваете BLAAA, и в ответ должно прийти "BLAAAAAAAAAAAAAAAAAA". Последний раз редактировалось TOM_RUS; 28.03.2011 в 12:05. |
2 пользователя(ей) сказали cпасибо: | MaS0n (28.03.2011) |
|
|