(24.07.2020 13:32)Zur13 Wrote: я просто прочитал описанный способ поиска проблемы без использования псевдокода, и это для меня оказалось сложным, при том что я в этом месте довольно много провел времени в ИДА, думаю для человека совсем без опыта боюсь это окажется совершенно непонятно.
Опыт приходит со временем. Например у меня по-другому: не могу прочитать псевдокод, он мне просто не понятен (мозг уже подсажен на Ассемблер, а кучи Си-шных символов заводят меня в тупик), поэтому работаю только с чистым диассемблированным кодом. Да и самой IDA я пользуюсь только когда нужно посмотреть код в именованном виде, а не в совсем сыром. Все работы - только в Ollydbg (то же добавление новых городов было сделано чисто через Ollydbg+исходники WoG 3.59, без использования IDA).
(24.07.2020 13:32)Zur13 Wrote: Может стоит привести какую-то ссылку где можно больше про это почитать?
Если кратко, то eax, ecx - "горячие" регистры, которые компилятор в коде пытается перезаписывать в первую очередь (т.е. долго в них ничего не хранится, а если стоит вызов функции, то после него там уже в 99% случаев или мусор, или данные, возвращаемые функцией).
Ну а ebx, edi, esi - для более длительного хранения, обычно компилятор после вызова функции сохраняет их в стеке (если нужно) и восстанавливает после выполнения функции в её самом конце.
Естественно, что сторонний код может быть написан по-всякому (например в воговском коде может быть всё что попало - там компилятор уже собирает код наиболее безопасно, сохраняя все регистры по 100 раз, ну а в MoP-коде обычно ищутся свободные регистры, там не любят сохранять всё подряд).
(24.07.2020 13:32)Zur13 Wrote: тут я не совсем понял как можно перейти к структуре из приведеного участка кода, куда нужно смотреть или нажимать?
Никуда не нажимать, тут чисто ручная работа (да простят меня лентяи). Блокнотом открываем структуру и сравниваем её со значениями из кода.