Size: a a a

Ассемблер

2021 September 12

E

Entusiast in Ассемблер
Ну введи pdf?

| pdf   disassemble function
| pdfs  disassemble function summary
источник

[

[BRM]White Rabbit in Ассемблер
какую функцию оно выберает?
потому что у меня их там штуки 3 вроде
источник

E

Entusiast in Ассемблер
Выбирает ту, в которой ты сейчас
s? - перемещаться
Есть ещё граф. режим, секунду
источник

[

[BRM]White Rabbit in Ассемблер
ок
источник

E

Entusiast in Ассемблер
v - граф. режим, там чуть поудобнее
Стрелочками листать
Клавиша q - выйти из граф. режима

Но вообще - если будешь дизассемблировать программу по-серьёзному, советую использовать cutter
Лично я r2 использую, когда нужно что-то быстренько узнать
источник

[

[BRM]White Rabbit in Ассемблер
граф режим чёт совсем печальный по скорости
источник

E

Entusiast in Ассемблер
Всмысле?
На s - step, кстати
источник

[

[BRM]White Rabbit in Ассемблер
возможно, это у меня из-за того, что я в вижле это всё смотрю, проблемы, но оно у меня начало лагать, проседать по фпс, исполнять одно движение в секунду, когда я отпустил стрелочки, пошло дальше спускаться и решило, что не хочет убиваться
источник

[

[BRM]White Rabbit in Ассемблер
так, меня тут немного интересует tco в ЯВУ
можно ли безболезненно заменять
call foo
ret

на
jmp foo
если у нас есть инвариант, что foo потом вызовет ret ?
источник

E

Entusiast in Ассемблер
Если для дизассемблера - в r2 как раз есть такая функция (в cutter ещё легче - чекбокс)

Если вообще для функционала - нет
Нужно тогда заменять:
push ret_addr
jmp foo
ret_addr:
источник

[

[BRM]White Rabbit in Ассемблер
а смысл от ret_addr ?
источник

E

Entusiast in Ассемблер
call пушит адрес возврата в стек
ret берёт адрес возврата из стека
источник

БЗ

Богдан Зараник... in Ассемблер
Такой вопрос, а на TASM можно запускать функции из C? Такие, как scanf, printf.
источник

E

Entusiast in Ассемблер
Да
источник

[

[BRM]White Rabbit in Ассемблер
смотри, когда мы делаем
call foo
ret
мы сразу по выходу берём адрес возврата той функции, которая нас вызвала извне и идём по нет
если мы делаем goto foo, то ret у foo пойдёт на ту функцию, которая выше на 1 по стеку вызовов
источник

E

Entusiast in Ассемблер
Нет
call делает push + jmp
ret
берёт адрес, который был запушен, и делает на него jmp. Адрес этот - следующая инструкция после call
источник

[

[BRM]White Rabbit in Ассемблер
допустим, у нас есть
foo:
 call bar
 ; do some stuff
 ret

bar:
 ; do some stuff
 call buz
 ret

baz:
; do some stuff
ret
если мы в bar заменим call-ret на jmp, то в стеке вместо адреса конца bar будет адрес foo, на который вернётся baz
источник

E

Entusiast in Ассемблер
А, понял. Да, так можешь сделать
источник

[

[BRM]White Rabbit in Ассемблер
ну тогда я понял, как делают tco в яву
источник

E

Entusiast in Ассемблер
@sand_witch Насчёт лагов в r2
источник