惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
博客园 - 叶小钗
S
SegmentFault 最新的问题
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
L
Lohrmann on Cybersecurity
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
J
Java Code Geeks
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 三生石上(FineUI控件)
Attack and Defense Labs
Attack and Defense Labs
AI
AI
The Cloudflare Blog
T
Tailwind CSS Blog
S
Schneier on Security
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Stack Overflow Blog
Stack Overflow Blog
S
Secure Thoughts
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
S
Securelist
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Help Net Security
Help Net Security
C
Cisco Blogs
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
K
Kaspersky official blog
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - XiaoHui

windbg tips windbg无法下载pdb调试符号 python连接数据库 unix/linux tips freebsd中xorg 7.4键盘反应迟顿的问题 Django升级到1.0以后的一些变化 ubuntu安装新字体 诡异的修改首页--00333.cn/alei.htm 使用nmap扫描内网在线机器的MAC地址 [转载]HOWTO 使用 vim 的 minibuf 来切换缓冲区 - XiaoHui rtorrent无法完全支持中文的解决办法 EFLAGES寄存器中的系统标志 How to manually create a crash dump file 因网络限制而无法连接MS的symbol服务器的解决办法 Nt*与Zw*的区别 Image与Base64String的互转换 编程实现清除temp1.exe,temp2.exe木马 类似Acdsee的东东,不过是用.NET的。 AIHear 0.1.2
NEG+SBB指令组合的用处
XiaoHui · 2008-03-31 · via 博客园 - XiaoHui

在逆向遇到NEG+SBB指令的组合,不明白原因,上网一查,找到了.嘿嘿!
mov     ebx, eax
neg      ebx
push    esi
sbb      bl, bl

注:Intel处理器的文档中声明NEG指令除了对操作数作符号取反外,它还要根据操作数的值设置CF标志位的值。如果执行NEG指令时操作数为0,则CF将被置为0。如果操作数为非零,则CF将被置为1。

NEG是一个简单的取反指令,用来对操作数的算术符号取反——有时候也称它为2的补码(two’s complement。译注:1的补码与NOT指令对应,是逻辑取反指令)。NEG用C描述的伪代码:

Result = -(Operand);

SBB是一条带借位的减法指令,这就是说SBB将第二个操作数(即右操作数)加上标志位CF,然后将结果用第一个操作数来减。SBB用C描述的伪代码:

Operand1 = Operand1 - (Operand2 + CF);

在上面的指令中NEG的作用应该就是注中的,根据操作数来设置CF标志位的值,如果EBX为0,那么CF将被置为0,如果EBX为非零,则CF将被置为1.然后结合SBB,我们可以将以上4条指令理解为,当EBX等于0时,BL将等于0;EBX大于0时,BL将等于-1.

参考:Reversing:逆向工程揭密-附录A揭密代码结构(4)