Иконка ресурса

Accelerator 2.5.0-cd575aa

gg.cfg

Участник
Сообщения
116
Реакции
10
Есть способ расшифровки данных с Accelerator?
пс а то не чего не понятно
 

Kulchitskiy

Участник
Сообщения
83
Реакции
16
всем привет , acelerator при падении не создает логг. точнее сам лог есть accelerator.log но он пустой. хоть сервер и упал!
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #43
Значит сервер не упал. Его кто-то намеренно выключил мирным путём.
 

Kulchitskiy

Участник
Сообщения
83
Реакции
16
Значит сервер не упал. Его кто-то намеренно выключил мирным путём.
CRASH: Вс июн 21 12:06:36 MSK 2020
CRASH: Вс июн 21 13:02:59 MSK 2020
CRASH: Вс июн 21 14:32:12 MSK 2020
CRASH: Вс июн 21 16:10:55 MSK 2020
CRASH: Вс июн 21 20:48:37 MSK 2020
CRASH: Вс июн 21 22:12:27 MSK 2020
CRASH: Вс июн 21 22:18:19 MSK 2020
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #45
На Арене любой шатдаун не из их панели считается за краш. Ну это так, к сведению.
 

Kulchitskiy

Участник
Сообщения
83
Реакции
16
На Арене любой шатдаун не из их панели считается за краш. Ну это так, к сведению.
подскажи плиз что делать то , на сервачке сервер. падает. создается только файлик в папке oldstart
 

Вложения

  • 21.06.2020_22_18_17.txt
    33.1 КБ · Просмотры: 26

emtra

Участник
Сообщения
44
Реакции
1
Как проверить работает ли он вообще у меня на сервере? Сегодня был краш, но дамп не выгрузился... С чем это может быть связанно? Остальные логи вроде создались
 

mrdiega

Участник
Сообщения
328
Реакции
47
можно гайд, куда смотреть, чтобы понять что вызвало краш?)
 

Young <

Now, finally free
Сообщения
1,263
Реакции
505
@mrdiega, Throttle . Вписываешь ID краша. Или имеешь ввиду как работать с данными?
 
Последнее редактирование:

mrdiega

Участник
Сообщения
328
Реакции
47
Или имеешь ввиду как работать с данными?
да
Сообщения автоматически склеены:

Со вчерашнего дня крашит сразу после завершения минуты разминки Throttle - дамп краша
+app_update 740 validate не помогло

SourceMod Version: 1.10.0.6502
Metamod:Source version 1.11.0-dev+1144
C-подобный:
CRASH: Пт фев 26 12:13:39 MSK 2021
Start Line: ./srcds_linux -game csgo -console -debug -usercon -secure -autoupdate -steam_dir /home/server2000/steamcmd -steamcmd_script /home/server2000/steamcmd/runscript_server2000 -maxplayers_override 25 -tickrate 128 +ip 192.168.1.136 +net_public_adr ***.**.**.** -port 27015 +tv_port 37015 +sv_pure 0 +game_type 0 +game_mode 0 +map 000
[New LWP 12628]
[New LWP 12639]
[New LWP 12644]
[New LWP 12645]
[New LWP 12648]
[New LWP 12636]
[New LWP 12633]
[New LWP 12658]
[New LWP 12656]
[New LWP 12655]
[New LWP 12649]
[New LWP 12659]
[New LWP 12657]
[New LWP 12651]
[New LWP 12660]
[New LWP 12637]
[New LWP 12661]
Core was generated by `./srcds_linux -game csgo -console -debug -usercon -secure -autoupdate -steam_di'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xf7d49a0f in ?? ()
[Current thread is 1 (LWP 12628)]
#0  0xf7d49a0f in ?? ()
Backtrace stopped: Cannot access memory at address 0xfff312dc
No symbol table info available.
eax            0x1                 1
ecx            0x70616577          1885431159
edx            0xbe9f9c8           199883208
ebx            0xec1dcff4          -333590540
esp            0xfff312dc          0xfff312dc
ebp            0x4                 0x4
esi            0x0                 0
edi            0x9a4e100           161800448
eip            0xf7d49a0f          0xf7d49a0f
eflags         0x210287            [ CF PF SF IF RF ID ]
cs             0x23                35
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x63                99
No shared libraries loaded at this time.
End of Source crash report
----------------------------------------------
----------------------------------------------
CRASH: Пт фев 26 12:28:28 MSK 2021
Start Line: ./srcds_linux -game csgo -console -debug -usercon -secure -autoupdate -steam_dir /home/server2000/steamcmd -steamcmd_script /home/server2000/steamcmd/runscript_server2000 -maxplayers_override 25 -tickrate 128 +ip 192.168.1.136 +net_public_adr 212.12.15.54 -port 27015 +tv_port 37015 +sv_pure 0 +game_type 0 +game_mode 0 +map 000
[New LWP 13151]
[New LWP 13165]
[New LWP 13161]
[New LWP 13172]
[New LWP 13166]
[New LWP 13168]
[New LWP 13176]
[New LWP 13173]
[New LWP 13177]
[New LWP 13178]
[New LWP 13162]
[New LWP 13155]
[New LWP 13157]
[New LWP 13154]
[New LWP 13152]
[New LWP 13174]
[New LWP 13175]
Core was generated by `./srcds_linux -game csgo -console -debug -usercon -secure -autoupdate -steam_di'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xf7d7da0f in ?? ()
[Current thread is 1 (LWP 13151)]
#0  0xf7d7da0f in ?? ()
Backtrace stopped: Cannot access memory at address 0xffd093ac
No symbol table info available.
eax            0x1                 1
ecx            0x70616577          1885431159
edx            0xbd3a7c8           198420424
ebx            0xec1dcff4          -333590540
esp            0xffd093ac          0xffd093ac
ebp            0x4                 0x4
esi            0x0                 0
edi            0x98e0100           160301312
eip            0xf7d7da0f          0xf7d7da0f
eflags         0x210287            [ CF PF SF IF RF ID ]
cs             0x23                35
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x63                99
No shared libraries loaded at this time.
End of Source crash report
----------------------------------------------

upd. Методом исключения выяснилось, что краш вызывает Ограничение оружия" (1.2.0) by Phoenix (˙·٠●Феникс●٠·˙), причём сервер крашится до завершения разминки, если зайти в меню покупки и что-то купить
01 "HideMe[Lite]" (3.6) by blodia, LordMarqus, Chocolate and Cheese, Vladislav Dolgov(Elistor), Ws, Indarello
02 "Fun Commands" (1.10.0.6502) by AlliedModders LLC
03 "Token Auto Updater" (1.4) by Phoenix (˙·٠●Феникс●٠·˙)
04 "VoteBKM" (1.0.6) by Drumanid
05 "[CR] Weapons" (2.0) by Someone
06 "Weapons & Knives" (1.7.1) by kgns | oyunhost.net
07 "[CR] Server Commands" (2.0) by Someone
08 "[LR] Module - Boost(Vip)" (v3.1.2) by Designed (Discord: .Designed#7985)
09 "[VIP] Skins" (1.0.5) by R1KO (skype: vova.andrienko1)
10 "[VIP] Kill Screen" (1.0.2) by R1KO (skype: vova.andrienko1)
11 "[VIP]Hitmarker" (1.0) by iEx (rework by SHKIPPERBEAST)
12 "[VIP] Healthshot" (1.3) by R1KO (skype: vova.andrienko1) feat. Eneanuch
13 "[VIP] No Self Damage" (1.1.0) by R1KO, vadrozh aka NaN
14 "[VIP] Admin Privileges" (1.1.1) by R1KO, vadrozh, CrazyHackGUT aka Kruzya
15 "[VIP] CHAT (+scp)" (3.1.1) by R1KO
16 "[VIP] Test" (1.0.3) by R1KO (skype: vova.andrienko1)
17 "[VIP] Spawn Effects" (1.2) by Mr.ToNik
18 "[VIP] HP" (1.1) by R1KO (skype: vova.andrienko1)
19 "[VIP] Tracers" (1.1) by R1KO
20 "[VIP] Core" (3.0.1 R) by R1KO
21 "[VIP] COIN" (2.0.1) by Pheonix (˙·٠●Феникс●٠·˙) & R1KO, pracc
22 "[VIP] FastReload" (1.0) by BaFeR
23 "[VIP] Electro Effects" (1.0.3) by R1KO
24 "[VIP] Armor" (1.1) by R1KO (skype: vova.andrienko1)
25 "[VIP] Покупка оружия команды" (1.5.1) by Planes (ReWork by PSIH)
26 "[VIP] Money" (1.1) by R1KO (skype: vova.andrienko1)
27 "[VIP] Client Spawn Hook Fix" (1.0.1) by CrazyHackGUT aka Kruzya
28 "[VIP] Regen HP" (1.1) by R1KO
29 "[VIP] GrenadeTrails" (1.0.2) by R1KO
30 "[LK MODULE] Покупка опыта Levels Ranks" (1.0) by Narkus
31 "[VIP] Иммунитет от ограничения оружия" (1.0.0) by Phoenix (˙·٠●Феникс●٠·˙)
32 "Official DS Status" (1.1) by SM9 & karb0n1266
33 "[VIP] Dissolve Body" (1.2.2) by KOROVKA, R1KO
34 "[LK MODULE] ТОП10 Донатеров" (4.0.1) by 1mpulse (skype:potapovdima1)
35 "[LK MODULE] Админ Меню" (4.0.0) by 1mpulse (skype:potapovdima1)
36 "[Личный Кабинет] Core" (4.0.2) by 1mpulse
37 "[LK MODULE] Управление доступом (VIP R1KO)" (4.0.0) by 1mpulse (skype:potapovdima1)
38 "[LK MODULE] Покупка VIP (VIP R1KO 3.0)" (4.0.0) by 1mpulse (skype:potapovdima1)
39 "[LK MODULE] Command Module" (4.0.0) by 1mpulse (skype:potapovdima1)
40 "[LK MODULE] Info Menu" (4.0.0) by 1mpulse (skype:potapovdima1)
41 "[LK MODULE] Перевод Денег" (4.0.0) by 1mpulse (skype:potapovdima1)
42 "Material Admin" (0.8.2) by Material Admin Dev Team
43 "[CS:GO] KnifeAlert" (1.2) by xstage
44 "Admin Communication" (1.1) by Nico Yazawa
45 "[CS:GO] Remove Messages" (2.6) by Fox1qqq
46 "Kicked by Rename" (1.1) by Felya
47 "Anti-afk lite" (2.0) by Krabos
48 "Menu.smx"
49 "[CR] Only HeadShot" (2.0) by FIVE
50 "Simple Chat Processor (Redux)" (1.1.5) by Simple Plugins, Mini
51 "Sound Commands" (1.10.0.6502) by AlliedModders LLC
52 "Admin Help" (1.10.0.6502) by AlliedModders LLC
53 "Anti-Flood" (1.10.0.6502) by AlliedModders LLC
54 "CS:GO Easy Esl Admin ESP (mmcs.pro)" (1.3) by SAZONISCHE
55 "[VIP] RoundEndBhop" (1.0.0) by HolyHender
56 "Ограничение оружия" (1.2.0) by Phoenix (˙·٠●Феникс●٠·˙)
57 "Basic Votes" (1.10.0.6502) by AlliedModders LLC
58 "Реклама" (1.4.1) by Pheonix (˙·٠●Феникс●٠·˙)
59 "Faceit Level" (1.0.3) by Phoenix (˙·٠●Феникс●٠·˙)
60 "[VIP] Bhop" (1.0.2) by KOROVKA
61 "Client Preferences" (1.10.0.6502) by AlliedModders LLC
62 "[VIP] Fists" (1.1) by Hideki
63 "Basic Commands" (1.10.0.6502) by AlliedModders LLC
64 "BLOCK sm plugins" (1.2) by Pheonix (˙·٠●Феникс●٠·˙)
65 "[VIP/SHOP/ANY] Shower of Damage" (1.0.1) by iLoco
66 "VIP_Crosshair.smx"
67 "Basic Info Triggers" (1.10.0.6502) by AlliedModders LLC
68 "Fix Hint Color Messages" (1.1.0) by Phoenix (˙·٠●Феникс●٠·˙)
69 "[LR] Module - ExStats Weapons" (v3.1.2) by RoadSide Romeo & Wend4r
70 "[LR] Module - Unusual Kills" (v3.1.2 SR1) by Wend4r
71 "[LR] Module - ExStats GeoIP" (v3.1.2) by RoadSide Romeo
72 "[LR] Module - ExStats Maps" (v3.1 F1) by RoadSide Romeo
73 "[LR] Module - FakeRank" (v3.1.2) by RoadSide Romeo & Wend4r
74 "[LR] Module - ExStats Hits" (v3.1.2) by Wend4r
75 "Round End Sound" (1.2.2) by d4Ck(vk.com/geliydaun)
76 "Custom Rounds" (2.0) by Someone
77 "Terrible Enable Full Alltalk" (0.02) by Sheepdude
78 "Admin Menu" (1.10.0.6502) by AlliedModders LLC
79 "Fun Votes" (1.10.0.6502) by AlliedModders LLC
80 "[CR] No Zoom" (2.0) by Someone
81 "ResetScore Lite" (1.2) by AlmazON
82 "[CR] Menu" (2.0) by Someone
83 "Reserved Slots" (1.10.0.6502) by AlliedModders LLC
84 "Admin File Reader" (1.10.0.6502) by AlliedModders LLC
85 "[CR] Chat" (2.0) by Someone
86 "[CR] Messages" (2.0) by Someone
87 "Basic Chat" (1.10.0.6502) by AlliedModders LLC
88 "[VIP] JoinMessage - HUD" (2.1.2) by nullent?
89 "Material Admin Checker" (0.8.2) by psychonic, Ca$h Munny, Sarabveer(VEER™)
90 "VIP_Parachute.smx"
91 "Player Commands" (1.10.0.6502) by AlliedModders LLC
92 "AdminList" (1.2.3) by Bristwex (IMPERIA-CSS.RU)
93 "Gloves" (1.0.5) by kgns | oyunhost.net
94 "Nextmap" (1.10.0.6502) by AlliedModders LLC
95 "[Levels Ranks] Core" (v3.1.2) by RoadSide Romeo & Wend4r
96 "autodemo" (2.2.6) by mukunda
97 "CS:GO Sound" (1.0) by Team-Secretforce.com
[01] SourceMod (1.10.0.6502) by AlliedModders LLC
[02] BanId Fix (1.0) by Phoenix (˙·٠●Феникс●٠·˙)
[03] SDK Tools (1.10.0.6502) by AlliedModders LLC
[04] CS Tools (1.10.0.6502) by AlliedModders LLC
[05] SDK Hooks (1.10.0.6502) by AlliedModders LLC
[06] SteamWorks Extension (1.2.3 FORK 1.0.0) by Kyle Sanderson
[07] PTaH (1.1.3) by Phoenix (˙·٠●Феникс●٠·˙)
[01] Automatic Updater (1.10.0.6502): Updates SourceMod gamedata files
[02] Webternet (1.10.0.6502): Extension for interacting with URLs
[03] BanId Fix (1.0): Correcting 'Ghost players' error
[04] SDK Tools (1.10.0.6502): Source SDK Tools
[05] BinTools (1.10.0.6502): Low-level C/C++ Calling API
[06] Accelerator (2.5.0): SRCDS Crash Handler
[07] CS Tools (1.10.0.6502): CS extended functionality
[08] SDK Hooks (1.10.0.6502): Source SDK Hooks
[09] Top Menus (1.10.0.6502): Creates sorted nested menus
[10] SteamWorks Extension (1.2.3 FORK 1.0.0): Exposes SteamWorks functions to Developers
[11] TAU LIB (1.4):
[12] PTaH (1.1.3): Additional CS:GO Hooks and Natives
[13] Client Preferences (1.10.0.6502): Saves client preference settings
[14] SQLite (1.10.0.6502): SQLite Driver
[15] Regex (1.10.0.6502): Provides regex natives for plugins
[16] GeoIP2 (1.1.2): Geographical IP information
[17] cURL Extension (7.69.1): Made by lazy peoples for lazy peoples... From lazy peoples...
[18] MySQL-DBI (1.10.0.6502): MySQL driver implementation for DBI
upd2. Решение. Перезаписал все файлы в /sourcemod/extensions на новые, переустановил ptah, перекомпилировал плагин. Вроде перестало крашить
 
Последнее редактирование:

DJser

Участник
Сообщения
278
Реакции
15
Кто понимает, что это означает?

1615200756233.png
 

iGreen

Участник
Сообщения
351
Реакции
26
SourceMod Version: 1.10.0.6502
Metamod:Source version 1.11.0-dev+1144
падает на MIRAGE тольки когда +10 игроков, пару раз в день
 

Вложения

  • xxc.png
    xxc.png
    13.5 КБ · Просмотры: 44

Mr_panica

XenForo one 💖
Сообщения
921
Реакции
435
SourceMod Version: 1.10.0.6502
Metamod:Source version 1.11.0-dev+1144
падает на MIRAGE тольки когда +10 игроков, пару раз в день
Очень схожи: (первые 3 строки)

P.S
В следующий раз кидай лог в текстовом виде + ссылку на крашлог акселератора, там есть защита и лишние данные он не покажет другим.
Да и плагин лист бы не помешал.
 

D1fox

Просто люблю чай
Сообщения
902
Реакции
212
Найдутся добрые люди, кто подскажет в чем прикол? Первый раз с accelator вообще работаю - Throttle
 

Ivan97

Участник
Сообщения
5
Реакции
7
Кто работает с CSGO и видит краши в server.so и engine.so
Надо выкачать IDA 7+ и утекшие исходники ксго 17-ого года.
Далее:
1) загрузить сошку в IDA (займет минут 5)
2) После загрузки переключить в text view (правой кнопкой по дереву -> text view)
3) Выполнить Jump -> Jump to address и указать адрес из крашстека (к примеру такой 0x68ffbf)
4) Окно переместится в subroutine (функцию) где случился краш
5) Дальнейшая задача сводится к определению названия этой функции
для этого надо найти уникальный идентификатор, по которому можно найти эту функцию в исходниках.
Обычно, такой идентификатор - текстовая строка (к примеру "target") или какая-то уникальная константа.
Если в самой функции ничего такого нет, можно:
- посмотреть такие идентификаторы в функциях, которые ссылаются на эту функцию. Они перечислены в "CODE XREF" под заголовком "S U B R O U T I N E".
- посмотреть такие идентификаторы в функциях, которые вызываются из нашей функции.
Так-же в поиске может помочь псевдокод. его можно включить нажатием F5 (работает только в IDA 32bit)

6) Как только найдена уникальная текстовая строка или константа - надо ее найти в исходниках, это можно сделать через Total Commander или WordPad.

К примеру, из стека выше - есть функция server.so + 0x736e53 В ней есть строка "%s(%s) thinking for %.02f ms!!!\n", которая через исходники выводит на функцию CBaseEntity::PhysicsDispatchThink. Через сравнение исходного кода и псевдокода каждой из оставшихся функций в стеке можно добраться до функции где случился краш и выяснить что могло пойти не так.

Примечание: по умолчанию IDA выводит только 2 xrefs, лучше это число поменять на 50 в Options->General->Cross-references

Если краш случился в коде, который был добавлен после 17-ого кода, то этот способ не будет работать (разве что получится разобрать псевдокод, ну или можно сдетоурить функцию, об этом ниже).
Если в стеке функция без уникальных идентификаторов и идентификаторов нет в зависимых функциях, то можно попробовать найти их в функциях ниже и выше, часто компилятор добавляет сабрутины в порядке в каком они идут в исходниках.

От себя советую использовать версию акселератора без привязки к Throttle (была выложена в этой теме чуть раньше), она отображает не только стек функций но и тип краша, содержимое памяти, регистров. Там можно увидеть делати краша, название плагина, который работал в момент краша, ассерт сообщения и т.д.
К примеру, для стека #54 мы бы с большой вероятностью увидели работу вочдога, но throttle не показывает что стало причиной завершение процесса. Я бы посоветовал автору проверить все плагины на наличие синхронных SQL запросов.

Что делать если нашли функцию, в которой часто происходит краш, но не понятно что в ней не так:
Адрес краша указывает на место краша и при переходе в псевдокод IDA показывает место краша (иногда ошибается на 1-2 строчки).
Если это не помогает, можно сдетоурить функцию и посмотреть содержимое аргументов функции.
За основу можно взять этот экстеншин: [CS:S] Flashbang Tools - AlliedModders
В экстеншине есть несколько примеров детоуринга фнкций по сигнатурам.
Для детоуринга функции нужно знать ее описание (возвращаемый тип, количество и типы аргументов) и сигнатуру.
Описание функции можно подсмотреть в псевдокоде (F5).
Для получения сигнатуры функции:
1) проматываем функцию в IDA вверх к надписи = S U B R O U T I N E ==
2) Options -> Disasembly -> Number of opcode bytes -> 12
->Видим байты сигнатуры (пример в красной рамке на скриншоте).
3) Если просто скопировать байты, сигнатура с большой вероятностью не заработает. Всё из-за wild-cards - байтов, которые в рантайме меняются.
Такие байты в сигнатуре надо заменить на 2A. Есть несколько способов получения рабочей сигнатуры:
- Изучить каждую инструкцию и заменить все wild-card байты на 2A.
- Взять предыдущую версию сошки, найти в ней эту функцию и все байты, который отличаются, заменить на 2A.
- Заменить все кроме первых байтов в строке на 2A. Не самый красивый способ т.к. получается большая и менее надёжная сигнатура, но способ рабочий. Для примера из скриншота получается: \x6A\x2A\x68\x2A\x2A\x2A\x2A\x64\x2A\x2A\x2A\x2A\x2A\x50\x83\x2A\x2A....
Длину сигнатуры следует уменьшать до момента, когда в ALT+B по сигнатуре начнут находиться другие функции.
В поиске нужно вписывать так: 6A ? 68 ? ? ? ? 64
 

Вложения

  • sig.png
    sig.png
    23.2 КБ · Просмотры: 55
Последнее редактирование:

D1fox

Просто люблю чай
Сообщения
902
Реакции
212
Найдутся добрые люди, кто подскажет в чем прикол? Первый раз с accelator вообще работаю - Throttle
Кто работает с CSGO и видит краши в server.so и engine.so
Надо выкачать IDA 7+ и утекшие исходники ксго 17-ого года.
Далее:
1) загрузить сошку в IDA (займет минут 5)
2) После загрузки переключить в text view (правой кнопкой по дереву -> text view)
3) Выполнить Jump -> Jump to address и указать адрес из крашстека (к примеру такой 0x68ffbf)
4) Окно переместится в subroutine (функцию) где случился краш
5) Дальнейшая задача сводится к определению названия этой функции
для этого надо найти уникальный идентификатор, по которому можно найти эту функцию в исходниках.
Обычно, такой идентификатор - текстовая строка (к примеру "target") или какая-то уникальная константа.
Если в самой функции ничего такого нет, можно:
- посмотреть такие идентификаторы в функциях, которые ссылаются на эту функцию. Они перечислены в "CODE XREF" под заголовком "S U B R O U T I N E".
- посмотреть такие идентификаторы в функциях, которые вызываются из нашей функции.
Так-же в поиске может помочь псевдокод. его можно включить нажатием F5 (работает только в IDA 32bit)

6) Как только найдена уникальная текстовая строка или константа - надо ее найти в исходниках, это можно сделать через Total Commander или WordPad.

К примеру, из стека выше - есть функция server.so + 0x736e53 В ней есть строка "%s(%s) thinking for %.02f ms!!!\n", которая через исходники выводит на функцию CBaseEntity::PhysicsDispatchThink. Через сравнение исходного кода и псевдокода каждой из оставшихся функций в стеке можно добраться до функции где случился краш и выяснить что могло пойти не так.

Примечание: по умолчанию IDA выводит только 2 xrefs, лучше это число поменять на 50 в Options->General->Cross-references

Если краш случился в коде, который был добавлен после 17-ого кода, то этот способ не будет работать (разве что получится разобрать псевдокод, ну или можно сдетоурить функцию, об этом ниже).
Если в стеке функция без уникальных идентификаторов и идентификаторов нет в зависимых функциях, то можно попробовать найти их в функциях ниже и выше, часто компилятор добавляет сабрутины в порядке в каком они идут в исходниках.

От себя советую использовать версию акселератора без привязки к Throttle (была выложена в этой теме чуть раньше), она отображает не только стек функций но и тип краша, содержимое памяти, регистров. Там можно увидеть делати краша, название плагина, который работал в момент краша, ассерт сообщения и т.д.
К примеру, для стека #54 мы бы с большой вероятностью увидели работу вочдога, но throttle не показывает что стало причиной завершение процесса. Я бы посоветовал автору проверить все плагины на наличие синхронных SQL запросов.

Что делать если нашли функцию, в которой часто происходит краш, но не понятно что в ней не так:
Адрес краша указывает на место краша и при переходе в псевдокод IDA показывает место краша (иногда ошибается на 1-2 строчки).
Если это не помогает, можно сдетоурить функцию и посмотреть содержимое аргументов функции.
За основу можно взять этот экстеншин: [CS:S] Flashbang Tools - AlliedModders
В экстеншине есть несколько примеров детоуринга фнкций по сигнатурам.
Для детоуринга функции нужно знать ее описание (возвращаемый тип, количество и типы аргументов) и сигнатуру.
Описание функции можно подсмотреть в псевдокоде (F5).
Для получения сигнатуры функции:
1) проматываем функцию в IDA вверх к надписи = S U B R O U T I N E ==
2) Options -> Disasembly -> Number of opcode bytes -> 12
->Видим байты сигнатуры (пример в красной рамке на скриншоте).
3) Если просто скопировать байты, сигнатура с большой вероятностью не заработает. Всё из-за wild-cards - байтов, которые в рантайме меняются.
Такие байты в сигнатуре надо заменить на 2A. Есть несколько способов получения рабочей сигнатуры:
- Изучить каждую инструкцию и заменить все wild-card байты на 2A.
- Взять предыдущую версию сошки, найти в ней эту функцию и все байты, который отличаются, заменить на 2A.
- Заменить все кроме первых байтов в строке на 2A. Не самый красивый способ т.к. получается большая и менее надёжная сигнатура, но способ рабочий. Для примера из скриншота получается: \x6A\x2A\x68\x2A\x2A\x2A\x2A\x64\x2A\x2A\x2A\x2A\x2A\x50\x83\x2A\x2A....
Длину сигнатуры следует уменьшать до момента, когда в ALT+B по сигнатуре начнут находиться другие функции.
В поиске нужно вписывать так: 6A ? 68 ? ? ? ? 64
2 одинаковых сервера, второй крашит, первый нет)
 

Deraxus

Участник
Сообщения
190
Реакции
24
Что может означать такая ошибка: This crash was likely caused by incorrect gamedata being used with an SDKCall?
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Кто работает с CSGO и видит краши в server.so и engine.so
Надо выкачать IDA 7+ и утекшие исходники ксго 17-ого года.
Далее:
1) загрузить сошку в IDA (займет минут 5)
2) После загрузки переключить в text view (правой кнопкой по дереву -> text view)
3) Выполнить Jump -> Jump to address и указать адрес из крашстека (к примеру такой 0x68ffbf)
4) Окно переместится в subroutine (функцию) где случился краш
5) Дальнейшая задача сводится к определению названия этой функции
для этого надо найти уникальный идентификатор, по которому можно найти эту функцию в исходниках.
Обычно, такой идентификатор - текстовая строка (к примеру "target") или какая-то уникальная константа.
Если в самой функции ничего такого нет, можно:
- посмотреть такие идентификаторы в функциях, которые ссылаются на эту функцию. Они перечислены в "CODE XREF" под заголовком "S U B R O U T I N E".
- посмотреть такие идентификаторы в функциях, которые вызываются из нашей функции.
Так-же в поиске может помочь псевдокод. его можно включить нажатием F5 (работает только в IDA 32bit)

6) Как только найдена уникальная текстовая строка или константа - надо ее найти в исходниках, это можно сделать через Total Commander или WordPad.

К примеру, из стека выше - есть функция server.so + 0x736e53 В ней есть строка "%s(%s) thinking for %.02f ms!!!\n", которая через исходники выводит на функцию CBaseEntity::PhysicsDispatchThink. Через сравнение исходного кода и псевдокода каждой из оставшихся функций в стеке можно добраться до функции где случился краш и выяснить что могло пойти не так.

Примечание: по умолчанию IDA выводит только 2 xrefs, лучше это число поменять на 50 в Options->General->Cross-references

Если краш случился в коде, который был добавлен после 17-ого кода, то этот способ не будет работать (разве что получится разобрать псевдокод, ну или можно сдетоурить функцию, об этом ниже).
Если в стеке функция без уникальных идентификаторов и идентификаторов нет в зависимых функциях, то можно попробовать найти их в функциях ниже и выше, часто компилятор добавляет сабрутины в порядке в каком они идут в исходниках.

От себя советую использовать версию акселератора без привязки к Throttle (была выложена в этой теме чуть раньше), она отображает не только стек функций но и тип краша, содержимое памяти, регистров. Там можно увидеть делати краша, название плагина, который работал в момент краша, ассерт сообщения и т.д.
К примеру, для стека #54 мы бы с большой вероятностью увидели работу вочдога, но throttle не показывает что стало причиной завершение процесса. Я бы посоветовал автору проверить все плагины на наличие синхронных SQL запросов.

Что делать если нашли функцию, в которой часто происходит краш, но не понятно что в ней не так:
Адрес краша указывает на место краша и при переходе в псевдокод IDA показывает место краша (иногда ошибается на 1-2 строчки).
Если это не помогает, можно сдетоурить функцию и посмотреть содержимое аргументов функции.
За основу можно взять этот экстеншин: [CS:S] Flashbang Tools - AlliedModders
В экстеншине есть несколько примеров детоуринга фнкций по сигнатурам.
Для детоуринга функции нужно знать ее описание (возвращаемый тип, количество и типы аргументов) и сигнатуру.
Описание функции можно подсмотреть в псевдокоде (F5).
Для получения сигнатуры функции:
1) проматываем функцию в IDA вверх к надписи = S U B R O U T I N E ==
2) Options -> Disasembly -> Number of opcode bytes -> 12
->Видим байты сигнатуры (пример в красной рамке на скриншоте).
3) Если просто скопировать байты, сигнатура с большой вероятностью не заработает. Всё из-за wild-cards - байтов, которые в рантайме меняются.
Такие байты в сигнатуре надо заменить на 2A. Есть несколько способов получения рабочей сигнатуры:
- Изучить каждую инструкцию и заменить все wild-card байты на 2A.
- Взять предыдущую версию сошки, найти в ней эту функцию и все байты, который отличаются, заменить на 2A.
- Заменить все кроме первых байтов в строке на 2A. Не самый красивый способ т.к. получается большая и менее надёжная сигнатура, но способ рабочий. Для примера из скриншота получается: \x6A\x2A\x68\x2A\x2A\x2A\x2A\x64\x2A\x2A\x2A\x2A\x2A\x50\x83\x2A\x2A....
Длину сигнатуры следует уменьшать до момента, когда в ALT+B по сигнатуре начнут находиться другие функции.
В поиске нужно вписывать так: 6A ? 68 ? ? ? ? 64
Небольша поправка, если необходимо сделать Detour функции то необходимо определить ей так называемое "соглашение функции" (cdecl, thiscall, fastcall и другие), бывает так, что IDA не всегда правильно генерирует соглашение через псевдо-код, поэтому придётся подставлять разные варианты, также, если же в краш логе явно видно, что происходит null point dereference (самая частая ошибка, ввиду невнимательности программиста, который писал код), то исправить это можно добавив патч-код на ассемблере, предварительно выделив память под написание ассемблерныне инструкций, чтобы исключить нулевой указатель и сделать выход из функции. Пример, где с помощью ассемблера исправляли null point dereference
 

БлагоЯр

Участник
Сообщения
898
Реакции
86
А есть ли способ сделать, как на майарене папка CRASH, а в ней доступным и понятным языком от чего случился краш?
 
Сверху Снизу