Причем тут пригорание, наоборот эта бирка на твоем лбе доставляет немного фана. Да тут не густо людей, чтобы кому-то что-то педалировать, к сожалению мало людей в нашем уютненьком комьюнити.
Ну так коммьюнити-то о том, как решать задачи минимально необходимым набором возможностей, а не как штамповать минимум 10 говноигр для смартфонов в месяц, чтобы хотя бы аренду офиса окупить. Не ошибся ли ты дверью, дружок-пирожок?
Он на какой-то рассейской конфе, типа пхдейз или зиронайтс, говорил, что основной доход его компании сейчас приходит с антивирусных компаний. Так что вполне логично, что парсинг Golang'а был добавлен. Кроме малвари на Golang'е вряд ли кому-то что-то понадобится реверсить, Golang в основном для микросервисов используется.
Кто знает, что в IDA значит off_xxx ? Словом sub_xxx она помечает процедуры, а это что? Вот пример с какой-то софтины, там идет как обертка вокруг CreateFile (если перейти, будет) off_5B85B4 dd offset CreateFileA но не видел раньше такого. Это обфускация какая-то или особенности? Компилятор Rust. И еще, пользуясь случаем - как создать функцию в Ида? Есть дизасм, там код вида push ebp... , но самой функции почему-то автоматически не создало.
Очевидно, переменная, которая хранит адрес. P. Но в графе не должно быть инвалидных инструкций или данных, иначе надо выделять диапазон адресов и потом уже P нажимать.
А что в дизе? По адресу какой-то невалид. Возможно какие-то данные или криво проанализированная функция.
В первый раз что-ли? Чудеса. Пройтись по функции в дизасме руками, посмотреть что не так определилось, переходы, локальные переменные, освобождение стека после вызовов и тому подобное.
да вроде ничего такого нет Код (Text): .text:1001A5F0 xlAutoOpen proc near ; DATA XREF: .rdata:off_100278B8↓o .text:1001A5F0 .text:1001A5F0 var_4 = byte ptr -4 .text:1001A5F0 .text:1001A5F0 000 55 push ebp .text:1001A5F1 004 8B EC mov ebp, esp .text:1001A5F3 004 51 push ecx .text:1001A5F4 008 8D 45 FC lea eax, [ebp+var_4] .text:1001A5F7 008 BA 94 48 03 10 mov edx, offset aCreatethread ; "CreateThread" .text:1001A5FC 008 50 push eax .text:1001A5FD 00C 6A 00 push 0 .text:1001A5FF 010 6A 00 push 0 .text:1001A601 014 68 70 A6 01 10 push offset sub_1001A670 .text:1001A606 018 6A 00 push 0 .text:1001A608 01C 6A 00 push 0 .text:1001A60A 020 B9 01 00 00 00 mov ecx, 1 .text:1001A60F 020 E8 9C FB FF FF call sub_1001A1B0 .text:1001A614 020 FF D0 call eax .text:1001A616 004 6A FF push 0FFFFFFFFh .text:1001A618 008 50 push eax .text:1001A619 00C BA 5C 48 03 10 mov edx, offset aWaitforsingleo ; "WaitForSingleObject" .text:1001A61E 00C B9 01 00 00 00 mov ecx, 1 .text:1001A623 00C E8 88 FB FF FF call sub_1001A1B0 .text:1001A628 00C FF D0 call eax .text:1001A62A 004 33 C0 xor eax, eax .text:1001A62C 004 8B E5 mov esp, ebp .text:1001A62E 004 5D pop ebp .text:1001A62F 000 C3 retn .text:1001A62F xlAutoOpen endp .text:1001A62F
эта процедура декомпилируется нормально. Она очень большая, там какой-то цикл с несколькими return из функции.
Зайди в Options->General->Disassembly, поставь галочку Stack Pointer, посмотри чему значение SP равно после вызова функции. sub_1001A1B0 - это fastcall процедура, аналог GetProcAddress. --- Сообщение объединено, 15 фев 2022 --- После первого call eax, SP должен быть 8, а не 4