Сейчас на форуме: jinoweb (+6 невидимых) |
eXeL@B —› Программирование —› Как вызвать _ftol() в C# |
Посл.ответ | Сообщение |
|
Создано: 09 августа 2018 08:36 · Поправил: nmix · Личное сообщение · #1 Всем привет! Изучаю код функции. В IDA Pro получил псевдо-представление кода на C. Смотри картинку. Если на входе функции имеем аргумент 0x53BE28 (5488168). После выполнения цикла for получаем i = 495910.87368 Далее выполняется функция _ftol(); т.е. преобразование вещественного числа в целочисленное. Получаем результат 0x79126 (495910) До этого момента все понятно. Но вот дальше вычисления не ясны. При выходе из функции снова вызывается _ftol(); И в результате мы получаем 0xD54D3 (873683) Как так получилось? Как выполнить _ftol() над целочисленной переменной ? Вероятно, функция выполняется на памятью в которой лежит значение 0x79126 Прошу направить или ткнуть носом где почитать. 2322_09.08.2018_EXELAB.rU.tgz - Reverse.png |
|
Создано: 09 августа 2018 09:02 · Поправил: f13nd · Личное сообщение · #2 Очевидно декомпилятор шляпу выдал. Чисто логически не может эта функция войдом быть. Если он этой функцией не заменил fistp или подобную инструкцию, тогда это хоть как-то логично выглядит. ЗЫ: 873683 это дробная часть переменной i, если верить картинке. Так что с программой все в порядке, это декомпилер так шутит. А 495910 это 0x79126, целая часть этой же i. ----- 2 оттенка серого | Сообщение посчитали полезным: nmix |
|
Создано: 09 августа 2018 10:31 · Личное сообщение · #3 |
|
Создано: 09 августа 2018 11:06 · Поправил: nmix · Личное сообщение · #4 |
|
Создано: 09 августа 2018 12:04 · Личное сообщение · #5 Автор сам может закрыть свою тему, кнопка "Закрыть тему" находится внизу страницы, под кнопкой "Отправить сообщение". | Сообщение посчитали полезным: nmix |
eXeL@B —› Программирование —› Как вызвать _ftol() в C# |
Эта тема закрыта. Ответы больше не принимаются. |