-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Выход за границу массива #1
Comments
Здравствуйте, информации нет. Я переводил закрытые общие модули содержащие 10000 строк - ошибок не было. С вашим случаем не сталкивался. |
Могу скинуть пример bin файла (260 строк), пока сам не пойму в чем причина, возможно в операторах jmp. |
скидывайте |
Вот пример файла. Есть пару вопросов - писать более некуда пишу сюда.
|
|
Огромное спасибо за такой эпохальный труд - буду копать. |
Посмотрел ваш модуль, его отдельно видимо корректировали, даже возможно через подобную обработку. Используются метки "Перейти" в соседние процедуры, что невозможно ни в одном языке программирования кроме ассемблера :) Там всего 260 строк, это значит что примерно около 100 строк кода. Я бы на вашем месте либо бросил затею, либо попытался бы проследить все прыжки (оператор 42) и переход на заданный шаг(39) и так оследить из каких процедур в какие переместили код. Оператор 39 очень сложный, он является дополнением к проверкам условий ("Если", "Пока" "Для" "Для каждого" "Исключение" и другие, смотрите в модуле к каким операторам он привязан), но он всегда является как бы границей любого условного ветвления, он не используется сам по себе. Если у вас получится вычислить, что он не относится к условному ветвлению - значит он не является частью кода 1С, а просто является указателем на следующий участок кода. Больше я вам посоветовать ничего не могу. Но обязательно прочитайте статью от изначального автора https://habr.com/ru/post/489392/. У меня на написание обратного преобразования кода ушло 3 недели по 8 часов в день. |
Спасибо за развернутый ответ, я думал я что-то не понимаю просто, теперь понятно, что на самом деле именно так. Самый прям такой вопрос который мне неясено от слова совсем - пресловутая инструкция {3,8} - обращение к другой локальной переменной из модуля где этой переменной нет. |
До {3,8} кажется был переход в середину другой процедуры. у 3-й процедуры есть такое количество переменных. |
Да, но мы же находимся в контексте первой процедуры (когда возвращаемся из перехода) или сам переход дает доступ к этим переменным? |
вот тут я вам не отвечу, не знаю. |
Вываливается с out of range - говорят это типовый способ защиты от реврсинга.
Есть где то информация, что с этим делать?
The text was updated successfully, but these errors were encountered: