【发布时间】:2019-06-09 17:06:44
【问题描述】:
我正在尝试对一个游戏函数进行逆向工程,该函数接受一个整数并返回一个 64 位整数,方法是编写一个返回原始值的函数,然后再将其放入游戏函数。我如何做到这一点?
我只是设法扭转了这些步骤:
x = ((1 - x) << 16)
我不确定如何在没有原始值的情况下反转加法。
这里是游戏功能:
int64_t convert(int x) {
if (x <= 0)
return (1 - ((((x + 1) >> 31) + x + 1) >> 16));
else
return 0;
}
例如,如果原始值为-5175633,则转换后的值为80,我需要从80中获取原始值。
【问题讨论】:
-
sizeof(int) 的值是多少?
-
使用像Z3这样的SMT求解器来解决此类问题。
标签: c++ reverse-engineering bit-shift