吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 777|回复: 3
收起左侧

[求助] 加密与解密上的除法优化问题求助

[复制链接]
音夜醉 发表于 2020-7-21 18:30
就是对除法语句优化,a/b=a*(1/b)
mov ecx,a                 ;a就是上式的a
mov eax,2E8BA2E9
imul ecx
sar edx,1
mov ecx,edx
imul ecx
sar edx,1
mov ecx,edx
shr ecx,1F
add edx,ecx            ;edx就存储着最后结果
以下是我的问题:
1.注释说2E8BA2E9是编译器生成的数,那这个数是固定的吗,还是与a或者b有关?
2.为啥说sar edx,1相当于右移了32+1位
3.最后为啥要再加上商的符号位

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 音夜醉 发表于 2020-7-21 21:26
啊啊啊啊啊,后面的64位除法优化更让人绝望
lthink 发表于 2020-7-26 01:48
本帖最后由 lthink 于 2020-7-26 02:03 编辑

1.M的值取决于除数
2.imul 结果 edx.eax, edx为高32位,eax为低32位,故sar edx,1 为右移33位
3.因为移位是向下取整,如果被除数<0,则结果需要向上取整,故最后结果要+1,如果被除数大于0,则不需要修正

具体参考 <<c++反汇编与逆向分析>> 第四章推导
 楼主| 音夜醉 发表于 2020-7-27 14:54
lthink 发表于 2020-7-26 01:48
1.M的值取决于除数
2.imul 结果 edx.eax, edx为高32位,eax为低32位,故sar edx,1 为右移33位
3.因为移位是 ...

唔,谢谢了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表