逆向还原除法有符号非2的幂的第二种优化
从代码上来看,基本和有符号非2的幂的第一种优化一样,可是0x003F103F
处的加法却很奇怪,请注意0x003F1036
的乘法是否符号乘法,而它的操作数是一个负数,但是实际上我想要的是一个无符号数,所以0x003F103F
处的加法是为了把这个负数变成无符号数。
接下来我们看看它是如何完成这个操作的
0x003F1036
处的88888889实际是FFFFFFFF88888889,它等于88888889-
然后乘以被除数x等于
要想实现就的在0x003F1036
代码的基础上加上(你减了多少份就要加多少份,比如你要+5,但你只能-3,这时候你只需加上个8就行了,减了多少个3就加几个8)
后面就和有符号非2的幂的第一种优化一样了,
实际上这个汇编代码表示的含义是:
从scanf中获取被除数的值,然后除以一个数再打印输出,而这个数等于
而
本文作者:乘舟凉
本文链接:https://www.cnblogs.com/czlnb/p/15711749.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
c++反汇编与逆向分析技术揭秘
, 逆向
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步