George
Anonymous
Понял спасибо
Aiwan \ (•◡•) / _bot
George
... по адресу
mov rax,qword ptr [rax]
квадратные скобки — это указатель
qword ptr — это quad word pointer, указывает на размерность указателя
всё это можно свести к более простой форме:
mov rax, [rax]
Aiwan \ (•◡•) / _bot
George
внимательно перечитай мой комментарий и увидишь слово POINTER
Aiwan \ (•◡•) / _bot
указывает на не размерность укащателя, а на размерность данных которые ты берешь. вроде так должно быть.
mov ax, word ptr[rax]
попробуй это
George
Давай всё-таки вернёмся к твоему первому замечанию )
George
Про адрес
George
Слово pointer это указатель или адрес?
George
В твоём понимании
George
По смыслу:
Явным образом указывать размерность нужно только в том случае, если размерности источника и получателя не совпадают
George
В остальных случаях, когда мы пишем word ptr (как в твоём корректном примере), это означает, что мы в регистр назначения пишем данные другой размеренности, которые получаем по указателю (в квадратных скобках)
Aiwan \ (•◡•) / _bot
просто это слово "указатель" можно явно перепутать с типом пеменной из си, где указатель на память занимает место в памяти, в асме тоже можно создать переменную и называть ее указателем, в которой будет храниться адрес. поэтому я разделяю эти понятия.
Eugene
Если мы переключились в 32-битный Unreal Mode и возникает IRQ или мы вызываем INT, то код переключается на время обработки прерывания в 16-битный режим что ли?
Ковыряю Kelvar (by Tomasz Grysztar), там 32-битный код перемешан с int'ами (10h, 21h, 33h...), и никаких предварительных ласк там нет.
s54820
Eugene
Код int 21h очевидно 16-битный. Если мы делаем вызов из 32-битного кода, то он будет работать только при переключении обратно в 16, иначе никак.
disba1ancer
s54820
Eugene
disba1ancer
Eugene
disba1ancer
call init_error
db 'processor is not able to enter 32-bit real mode',0
прикольный трюк, можно передавать передавать текст без регистров, но с этим надо аккуратно...
Eugene
disba1ancer
s54820
disba1ancer
правда я не пойму есть ли какой смысл в 32ух битном анриле кроме избавления от префиксов
disba1ancer
s54820
Можно, да. Но как-то чересчур уже, тогда уж проще вот это стандартное call @f ... db ... @@: call func.
disba1ancer
disba1ancer
disba1ancer
Anonymous
А можно вкрации для слабослышащих резюме по прерываниям в анрил моде? Что там в итоге получается?
Anonymous
Тред очень длинный а я хлебушек
Anonymous
Благодарю!
Eugene
Вкрацее уже не получится.
Ruslan
ЧЯДНТ?
IDA Pro 7.5
При поиске по последовательности байт, пишет
Search failed.
Command "AskBinaryText" failed
Сталкивался ктонибудь?
Ruslan
Ruslan
в демо версии нет ограничений на поиск?
всё что мне нужно - найти строчку и посмотреть кто на нее смотрит
и так и так пробовал
https://reverseengineering.stackexchange.com/questions/25903/cant-find-sequence-of-bytes-in-ida-while-debugging
Ruslan
Попробуй изменить порядок байт
Разобрался
это просто такой верх "информативности"
чтобы не гадать
взял то что реально есть (Hex-View)
вбил - нашло, изменил - пишет такойже Failed
короче говоря, это типо не найдено, а не крах
Ruslan
Из категории "сами догадаются" или "путь через шишку"))
Ок, почему я не нахожу то что находил через хекс вне IDA?
порядок байт менял
George
Причин может быть несколько:
- сегмент не был загружен идой
- данные в иде не были распознаны или наоборот были распознаны как другой тип данных, по которому ида по какой-то причине не ищет
- при конвертации из little endian в big endian и обратно возникает ошибка
- ты захватываешь "половину байта" (вместо 00 AA BB CC DD указываешь 0A AB BC CD)
Ruslan
Ruslan
тоесть в конце не манифест итп а данные
George
Ида обычно дропает всё, что не код, и всё, что явным образом не связано с кодом.
Таким образом, ида может дропнуть секцию, если у тебя секция не содержит точки входа, не помечена как исполняемая, не содержит TLS (в случае с виндовым PE), не содержит импорта (и то импорт может быть прочитан строками и выгружен) и т.п.
Ruslan
Ruslan
судя по всему
раз оно отбросило и ссылки статикой я не найду
Ruslan
я просто ищу место в котором записано смещение
спасибо за уточнение про SizeOfImage
есть ли инструменты которые могут перебором найти возможные ссылки
тоесть берем начало смещения
1) ищем само смещение в разных представляениях
далее поиск возможных относительных значений
2) ищем но отнимаем длину хедера
3) длину каждой секции
итд...
George
hiew
George
но оверлей программно ищется иначе
George
пробег по всем секциям, получение и выравнивание указателей на сырые данные, выравнивание и прибавление размера данных, а потом находим максимальное из полученных значений, сравниваем его с размером файла, дельта — положительный результат — это размер оверлея
после чего проверяем директорию сертификатов и вычитаем её размер
Ruslan
hiew
что случилось с официальным сайтом?)) по веб архиву - еще 7го числа был доступен)
George
Ruslan
Ruslan
и что оно мне даст
George
это TLS, а не сертификаты
Ruslan
больше ничего подходящего под сертификаты не вижу
George
George
George
С питоном знаком?
Если знаком, то можешь поиграться с этим модулем:
Ruslan
аа, вспомнил про выравнивание
это просто забивка чтоб "четко" было
т.е. фиксированная длина
George
pefile is a Python module to read and work with PE (Portable Executable) files