У меня есть программа, как этотзаплат с IDA Pro
#include <stdio.h>
int somma(x,y){
return x+y;
}
int diff(x,y){
return x-y;
}
int main(){
int x=5;
int y=4;
printf("la somma e' %d", somma(x,y));
printf("La differenza e' %d", diff(x,y));
}
Я пытаюсь подключая его заменить вызов функции Сомма с функцией дифференциала. В E8 79 FF FF FF и функция diff имеет op E8 70 FF FF FF, поэтому я попытался сделать так: заменить op функции somma на diff. Поэтому моя сомма op becames E8 70 FF FF FF, но когда я пытаюсь ее выполнить, я получаю ошибку сегментации. Зачем? Какая у меня ошибка?
EDIT Это экран моей работы.
Спасибо за вашу помощь. Я отредактировал свой ответ с экрана моей работы! Можете ли вы показать мне, где я могу найти расположение оп и местоположение somma? Я не могу найти его! –
Местоположение @UsiUsi somma может быть рассчитано как FFFFFF70 = x - 1F1B - 5, а x равно 0x1E90. – JosephH
ОК! поэтому, если я понимаю, что FFFFFF70 (litte endian) является OP, 1F1B - это позиция в тексте. А что такое 0x1E90 ??? почему я должен подчинить 5? вы можете мне объяснить? спасибо –