Перейти к содержимому

Сообщений в теме: 167
Фотография

Автоматизация сбора отчетов об ошибках

dev sfall autoit crash reports

#41 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 09 Февраль 2022 - 22:44

OBS (Open Broadcaster Software) как такое не знать то

я не забиваю голову всякой всячиной. :)

 

В общем я сделаю тестовую функцию с созданием скрина. (она у меня уже готова)

тебе просто нужно будет получить адресс функции во время запуска.

и вызвать ее потом во время краша (библиотека в памяти никуда не девается).

сигнатура экспортируемой функции будет void __stdcall SaveScreen(const char* fileName)

т.е. стандартно для WinAPI


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#42 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 09 Февраль 2022 - 22:47

это можно и своим кодом преобразовывать. по такой схеме в цикле: bitmap[N] = palette[gamepixels[N]] bitmap - твой массив под изображение

Да сконвертировать в autoit думаю не сложно, не сложнее чем с однобайтовой кодировкой работать. Вот только с разрешением этого bitmap могут возникнуть сложности.

void __stdcall SaveScreen(const char* fileName)

Ну посмотрим, вроде должно сработать. В дампере расширенный функционал подобное вроде вытворяет, но я его не реализовал, поэтому свелосипежу на autoit отдельный ввзов


#43 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 00:25

Ну посмотрим, вроде должно сработать.

https://yadi.sk/d/_DKDwoG6RMyTQg

Вот потренируйся, работает пока только для режима DX9 встроенного HRP (картинку берет из контекста устройства).

HRESULT __stdcall SaveScreenA(const char* file)

передаешь имя файла и в корне игры получаешь .png (можно вроде и путь указать)

возвращает 1 при ошибке.

(порядковый номер у функции 30, если вдруг понадобится)


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#44 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 00:43

передаешь имя файла и в корне игры получаешь .png (можно вроде и путь указать) возвращает 1 при ошибке.

Так, а что там с указателем/адресом на функцию? Я думаю можно и без него обойтись, но всеже

 

________

 

Ладно отосплюсь и еще попробую

 

_________

 

Кароче разные адресные пространства https://stackoverflo...another-process надо делать Run CrashMonitor.exe а не ShellExecute, тогда сработает, но крашнутся скорей всего оба. Ну или я попробую сделать по Solution 2: пересчет адресов.




#45 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 03:28

ниче непонял какие адреса... ты что неможешь вызвать функцию из dll  - это вроде все языки умеют.

вот это вроде то что тебе надо.

https://www.autoitsc...CallAddress.htm

 

Тут главное чтобы вызов был для текущего процесса игры, а не просто вызов функции в длл.

епт с этим наверное у тебя трудности будут.

 

может сам монитор надо заускать во втором потоке из основного а не как я через простой ShellExecute

тогда наверное у тебя будет доступ к текущему процессу.

короче сложная тема надо разобраться как запустить функцию текущего процесса.

покурить форумы надо.

 

Solution 2 - попробуй но чето есть сомнения, хотя идея верна.

HMODULE sfall я могу тебе передать (обычно базовый адресс у sfall 0x11000000)

 

[pluspost=29 сек.]

Вот только толку? там вместо черного фона должен быть храм испытаний, а его уже снесло. Попробую на вызовы winapi поставить хуки, но я в этом совсем не разбираюсь.

игра очищает, поэтому черный экран.

епт тестируй на каком нибудь-другом баге.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#46 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 03:45

ты что неможешь вызвать функцию из dll

Могу, но ее ведь надо вызывать у dll которая загружена в игру? тут только по адресу ее можно вызвать https://www.autoitsc...CallAddress.htm

____

Кароче суть я понял, просто надо на свежую голову, а то уже туплю по страшном от недосыпа

______
 

HMODULE sfall я могу тебе передать (обычно базовый адресс у sfall 0x11000000)

Я его получил через EnumProcessModules, но GetProcAddress мне ничего внятного не вернула и я полез гуглить, наверное я где-то ошибся + наверное надо пересчитывать адреса. Кстати а чего это sfall для EnumProcessModules капсом представляется DDRAW.DLL, хотя имя файла в нижнем регистре, это какой-то костыль для совместимости со старыми системами? Это неплохо бы пофиксить, либо сам sfall капсом должен быть, либо где-то запатчить под реальное имя файла
 
_________
 
Херня какаято получается
EnumProcessModules возвращает 0x11000000 и это значение не принимается GetProcAddress
LoadLibraryEx возвращает 0x11000000 и это значение принимается GetProcAddress
 
QjSc2.png
 

Global $targetModule = _WinAPI_EnumProcessModules($iPIDGame, $LIST_MODULES_32BIT)
If (IsArray($targetModule)) Then
	While Not ($targetModule[0][0] == 0)
		If ($targetModule[$targetModule[0][0]][1] = $sDirGame & "\ddraw.dll") Then
			$targetModule = $targetModule[$targetModule[0][0]][0]
			ExitLoop
		EndIf
		$targetModule[0][0] -= 1
	WEnd
EndIf
Global $myModule = _WinAPI_LoadLibraryEx($sDirGame & "\ddraw.dll", $DONT_RESOLVE_DLL_REFERENCES)
Global $myProc = _WinAPI_GetProcAddress($myModule, "SaveScreenA")
_WinAPI_FreeLibrary($myModule)
Global $targetProc = $myProc - $myModule + $targetModule
MsgBox(0, "", $targetProc & " = " & $myProc & " - " & $myModule & " + " & $targetModule)
Global $tSTRUCT = DllStructCreate("CHAR[128]")
DllStructSetData($tSTRUCT, 1, "hzhzhz")
DllCallAddress("HRESULT", $targetProc, "CHAR*", DllStructGetPtr($tSTRUCT))

Дай для тестов функцию без параметров, может гдето мой косяк со структурой char(в autoit надо извращаться с этими структурами)

 

По поводу ShellExecute, его должно хватать, диспетчер переодически показывает что CrashMonitor имеет отшение к игре, типо дочерний процесс




#47 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 16:57

"Херня какаято получается"

Все правильно получается. :-) [pluspost=37 сек.]Правильно ”hzhzhz.png” и чтобы в конце строки невидимый нуль был.[pluspost=52 сек.]Вроде должно быть STRUCT* а не CHAR*
Может просто используй STR* посмотри примеры для автоит как строку передают в winapi[pluspost=54 сек.]Позже сделаю без параметра по сути имя тебе и не важно задавать.

sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#48 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 18:15

Global $tSTRUCT = DllStructCreate("CHAR[128]")
DllStructSetData($tSTRUCT, 1, "hzhzhz.png")
DllCallAddress("LONG", $targetProc, "STRUCT*", $tSTRUCT)
Global $tSTRUCT = DllStructCreate("CHAR[128]")
DllStructSetData($tSTRUCT, 1, "hzhzhz.png")
DllCallAddress("LONG", $targetProc, "STRUCT*", DllStructGetPtr($tSTRUCT))

А так скрипт крашится молча. Видимо проблемы с \0, а как это проверить или поправить хз. Или возможно нет доступа на вызов функции, но это дело можно поправить запросив у системы повышенные привилегии, видел в примерах читеров.

 

имя тебе и не важно задавать

Не, ну имя неплохобы знать, чтоб не насорить в каталоге скринами.




#49 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 19:26

https://yadi.sk/d/_DKDwoG6RMyTQg

без аргумента (имя "CrashScreen.png") при получении такого файла не должно быть в корне игры, т.е получил, переместил.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#50 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 19:36

без аргумента

Скрипт крашится :  ну тогда чуть по позже изучу вопрос с повышением привелегий и попробую еще
 




#51 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 20:57

дааа фиговый этот AutoIt, лучше бы C# освоил он не трудный.

[pluspost=28 сек.]

Скрипт крашится

может крашится из-за того что вызывается не из того же потока/процесса ????

перекачай я проверку поставил что бы убедится что краш не из-за этого.

и добавил преждевременное создание файла (если функция вызывается правильно то создастся файл в корне игры).

[pluspost=36 сек.]

блин а вдруг он ваще в другом месте создастся, там же путь неуказан, тогда наверное создатся в той папке где лежит сам монитор. так наверное. я хз.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#52 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 21:18

может крашится из-за того что вызывается не из того же потока/процесса ????

Ну какбы да, только вот нам не надо из одного потока/процесса, так как игра крашится и следом монитор еще может крашнуться. Суть проблемы в том что все winapi в autoit завернуты со стандартными привилегиями/настройками, чтобы не натворить делов. Вот я их перевелосипежу под свою реализацию и тогда должно будет получиться.
 

перекачай я проверку поставил что бы убедится что краш не из-за этого.


дп также крашнулось, это DllCallAddress крашит, так как адрес явно не правильный или привелегий не хватает


#53 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 10 Февраль 2022 - 21:38

дп также крашнулось, это DllCallAddress крашит, так как адрес явно не правильный или привелегий не хватает

https://autoit-scrip...lladdress.8383/

почитай там что-то про "нельзя таким образом вызывать функцию по адресу чужого процесса"

потом там есть сссылка "на как можно" но для меня там темный лес.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#54 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 10 Февраль 2022 - 22:07

почитай там что-то про "нельзя таким образом вызывать функцию по адресу чужого процесса" потом там есть сссылка "на как можно" но для меня там темный лес.

Да видел этот велосипед, но ссылку потерял на него, щас распотрошу его и гляну как реализовано там.

 

________

 

Это несколько не то, там загрузка dll из чужого процесса и куча всяких странных трюков. Я видел урезаные примеры читаков, там примерно было как в Solution 2, но winapi обертки переписаны и эти негодяи не выкладывали эти переписанные функции.

 

________

 

Кароче не парься, может потом не спеша разберусь с этим почитав форумы читаков

 

___________

 

Нашел готовые реализации велосипеда https://www.autoitsc...esscallau3-udf/ но код от 2011 года и современный autoit ругается на каждую десятую строку, кароче на выходных буду сидеть и переписывать




#55 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 11 Февраль 2022 - 22:01

Поэтому перед обновлением сборок/sfall пишите, я буду бампать версию, чтобы везде были разные версии монитора, так будет проще отключать прием устаревшей и не актуальной инфы.

ни понятно. скоро будет версия с исправлениями.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#56 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 11 Февраль 2022 - 22:26

ни понятно


Просто v2.7 берите с Фоксом, но для разных сборок мне желательно сделать инкремент версии 2.8 для rp, 2.9 для Невады итд, это позволит мне отключить прием крашей с какой-то определенной сборки в случае чего. Например Фокс не захочет обновлять сборку в этом году, а нам краши будут идти со старой версии sfall, хотя и они имеют некую пользу.




#57 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 11 Февраль 2022 - 23:40

Просто v2.7 берите

А че она такая тормозная стала, окно уже 5мин висит, жду... зависла чтоли....

и скриншот кривой получается (половина его нет).

 

короче походу зависло. дропнул.

убирай нафиг эту .MDщятену она на кой-то фиг копирует все файлы.


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#58 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 12 Февраль 2022 - 00:17

А че она такая тормозная стала, окно уже 5мин висит, жду... зависла чтоли...

Эм, на каком этапе тормозит? Если после краша то она рекурсино по всему каталогу игры копирует файлы с расширением "*.cfg;*.inf;*.ini;*.log;*.txt" полностью игнорируя каталоги ^crashreport\\|^data\\savegame\\|^data\\text\\ ты там в каталоге с игрой решил файлопомойку устроить? Сколько тысяч файлов попадают под маску "*.cfg;*.inf;*.ini;*.log;*.txt" во всем каталоге игры? md5 также игнорирует каталоги ^crashreport\\|^data\\savegame\\|^data\\text\\ но маска там *

 


окно уже 5мин висит,


Please wait? или какое? shellexecute я надеюсь не менял на чтото другое?

и скриншот кривой получается (половина его нет).

Эм. Скриншотилку могу отключить, отключать? Хотя она и не тормозит вроде.

 

_______

 

Немного поправил исключение каталогов, теперь каталоги с именами crashreport;savegame;text полностью будут игнорироваться в версии 2.8+




#59 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 518 сообщений

Отправлено 12 Февраль 2022 - 01:35

Убирай md5 - это все очень долго, и к тому-же оно нафиг не надо проверять целостность файлов,

я не буду этим(проверкой) заниматься, мне достаточно самой ошибки/сохранения/скриншота, даже дамп не нужен ибо я так и непонял как его правильно использовать.

[pluspost=57 сек.]

Эм, на каком этапе тормозит?

не тормозит, а начинает долго нудить, при копировании всех файлов в каталоге игры еше и копируюся файлы не относящиеся к игре мануалы всякие редакторы. и пр. O_O

хотя обычным бы копированием скопировалось бы быстрее.

или убирай это копирование и так делай этот не нужный для меня MD

[pluspost=36 сек.]

Сколько тысяч файлов попадают под маску "*.cfg;*.inf;*.ini;*.log;*.txt"

там любые файлы копируются. например .mve 150метров

 

перенесите эти посты в sfall


sFall 5.0 - Официальная и расширенная версия для Fallout 2.

Fallout Proto Manager v1.4.0 - Создание и редактирования прототипов файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для моддинга Fallout.



#60 Nobi

Nobi

    Местный

  • автор темы
  • Desert Rangers
  • PipPipPip
  • 460 сообщений

Отправлено 12 Февраль 2022 - 01:35

это все очень долго

0.5 сек на проце 2010 года это долго? Ты превратил каталог с игрой в непонятно что, файл md5 это прекрасно отобразит, он и нужен то по сути чтобы показать что там происходит в каталоге с игрой и стоит ли вообще с этим репортом связываться.

.mve 150метров


ШТА? да не может этого быть, md5 высчитывает для него, но вот копировать не должно

Авторизуйтесь для ответа в теме
Новых тем нет

Похожие темы


Количество пользователей, читающих эту тему: 0

0 members, 0 guests, 0 anonymous users