<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>《CALL指令有多少种写法》的评论</title>
	<atom:link href="http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
	<description>A Newbie on the Way</description>
	<lastBuildDate>Wed, 01 Feb 2012 05:34:30 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>作者：user</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-928</link>
		<dc:creator>user</dc:creator>
		<pubDate>Fri, 28 Oct 2011 05:39:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-928</guid>
		<description>好问，解决了我的很多困惑</description>
		<content:encoded><![CDATA[<p>好问，解决了我的很多困惑</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：bombless</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-822</link>
		<dc:creator>bombless</dc:creator>
		<pubDate>Sun, 12 Dec 2010 02:52:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-822</guid>
		<description>&lt;a href=&quot;#comment-821&quot; rel=&quot;nofollow&quot;&gt;@Zhang Cong &lt;/a&gt; 
呵呵，谢谢大虾解答~

另外，在看到章章的这种说法之前，我想到的一种情况其实就是，
这些“可疑的地址”之前可能根本就不是有效的指令。
也就是说某些字节是跟在return或是jmp这一类指令的后面，完全没有执行的机会，因此有垃圾数据也不奇怪。</description>
		<content:encoded><![CDATA[<p><a href="#comment-821" rel="nofollow">@Zhang Cong </a><br />
呵呵，谢谢大虾解答~</p>
<p>另外，在看到章章的这种说法之前，我想到的一种情况其实就是，<br />
这些“可疑的地址”之前可能根本就不是有效的指令。<br />
也就是说某些字节是跟在return或是jmp这一类指令的后面，完全没有执行的机会，因此有垃圾数据也不奇怪。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：Zhang Cong</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-821</link>
		<dc:creator>Zhang Cong</dc:creator>
		<pubDate>Sat, 11 Dec 2010 18:07:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-821</guid>
		<description>你的这种搜法当然会有大量的误报，因为是完全基于静态的匹配。
静态分析还是使用CPU的方式，按指令执行顺序从前向后扫描更靠谱一些。

实际的应用当中这段小代码是用来在动态执行当中中断下面，并且进行反向推断使用的。
一个常用的场景是shellcode检测。在这种情况下面，检测的时候，无法获取之前的调用序列，因此需要通过反推的方式进行。
而去误报的话，可以通过二次校验，即根据指令计算该call指令的目标，看该目标是否是一段合理的可执行内存。</description>
		<content:encoded><![CDATA[<p>你的这种搜法当然会有大量的误报，因为是完全基于静态的匹配。<br />
静态分析还是使用CPU的方式，按指令执行顺序从前向后扫描更靠谱一些。</p>
<p>实际的应用当中这段小代码是用来在动态执行当中中断下面，并且进行反向推断使用的。<br />
一个常用的场景是shellcode检测。在这种情况下面，检测的时候，无法获取之前的调用序列，因此需要通过反推的方式进行。<br />
而去误报的话，可以通过二次校验，即根据指令计算该call指令的目标，看该目标是否是一段合理的可执行内存。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：bombless</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-820</link>
		<dc:creator>bombless</dc:creator>
		<pubDate>Sat, 11 Dec 2010 17:15:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-820</guid>
		<description>哇，楼主你真的好厉害~光是研究文档就很需要耐心和毅力了，你居然把英文手册给研究清楚了……

intel的指令集手册我也有收集，但是光看目录的规模就头大……

这个Mod R\M我以前看一本x86教程的时候就有学，当时就是看到这里，实在没看懂就放弃了后来没再碰，今天看到博主的文章，感到博主真的相当的niubility！讲的太清楚了！

今天真的收获很大！我本来是发觉windows里默认情况下，栈上的数据可以畅通无阻的执行，于是后面实验的时候搜“call 指令编码 e8”找到这里的。

对了，关于楼上章章童鞋说的这个情况，我特意做了个实验，小改了一下博主你的程序，
在内存中从IsAddressAfterCallInstruction这个函数一路搜索到main函数后面一段，
发觉还真是很多章章童鞋说的这个情况。
代码在：http://codepad.org/J8gKdO8B
（似乎有听说某些系统里的可执行内存区域是不可读的，这样的话我这种做法肯定不行，不过windows里没有这种情况）。

也就是说，有一半以上的call指令都是由于指令中的立即数产生的误报~感觉如果自己再探索一下这个方面，过滤掉一些误报也会很有趣的~~

祝博主一切顺利~~</description>
		<content:encoded><![CDATA[<p>哇，楼主你真的好厉害~光是研究文档就很需要耐心和毅力了，你居然把英文手册给研究清楚了……</p>
<p>intel的指令集手册我也有收集，但是光看目录的规模就头大……</p>
<p>这个Mod R\M我以前看一本x86教程的时候就有学，当时就是看到这里，实在没看懂就放弃了后来没再碰，今天看到博主的文章，感到博主真的相当的niubility！讲的太清楚了！</p>
<p>今天真的收获很大！我本来是发觉windows里默认情况下，栈上的数据可以畅通无阻的执行，于是后面实验的时候搜“call 指令编码 e8”找到这里的。</p>
<p>对了，关于楼上章章童鞋说的这个情况，我特意做了个实验，小改了一下博主你的程序，<br />
在内存中从IsAddressAfterCallInstruction这个函数一路搜索到main函数后面一段，<br />
发觉还真是很多章章童鞋说的这个情况。<br />
代码在：http://codepad.org/J8gKdO8B<br />
（似乎有听说某些系统里的可执行内存区域是不可读的，这样的话我这种做法肯定不行，不过windows里没有这种情况）。</p>
<p>也就是说，有一半以上的call指令都是由于指令中的立即数产生的误报~感觉如果自己再探索一下这个方面，过滤掉一些误报也会很有趣的~~</p>
<p>祝博主一切顺利~~</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：Zhang Cong</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-761</link>
		<dc:creator>Zhang Cong</dc:creator>
		<pubDate>Tue, 18 May 2010 16:33:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-761</guid>
		<description>&lt;a href=&quot;#comment-760&quot; rel=&quot;nofollow&quot;&gt;@章章 &lt;/a&gt; 
你说的这个问题的确存在，例如前面一个指令正好是 mov eax, ffffff10，则也会被认为是一个call指令，因为代码检查到前面是 ff 10 就直接认为是一个call [eax] 了。

这种是没有办法的，因为CPU执行是自上而下解析，指令集只要保证正向解析的时候没有歧义即可；而这边的代码是自下而上的推算，是无法避免歧义的。因此这种手段只是启发式规则的当中的一部分，必须和其他的规则合并考虑才行。</description>
		<content:encoded><![CDATA[<p><a href="#comment-760" rel="nofollow">@章章 </a><br />
你说的这个问题的确存在，例如前面一个指令正好是 mov eax, ffffff10，则也会被认为是一个call指令，因为代码检查到前面是 ff 10 就直接认为是一个call [eax] 了。</p>
<p>这种是没有办法的，因为CPU执行是自上而下解析，指令集只要保证正向解析的时候没有歧义即可；而这边的代码是自下而上的推算，是无法避免歧义的。因此这种手段只是启发式规则的当中的一部分，必须和其他的规则合并考虑才行。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：章章</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-760</link>
		<dc:creator>章章</dc:creator>
		<pubDate>Tue, 18 May 2010 07:52:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-760</guid>
		<description>请教一下，如果CALL指令是其他指令的操作数或操作数的一部分，如add指令，然后这个add指令和前一条add指令的操作数可能组成一个新的可识别的指令，像这种情况，如何识别某个地址的前一条指令到底是一个call指令或者是其他的指令，谢谢。。。</description>
		<content:encoded><![CDATA[<p>请教一下，如果CALL指令是其他指令的操作数或操作数的一部分，如add指令，然后这个add指令和前一条add指令的操作数可能组成一个新的可识别的指令，像这种情况，如何识别某个地址的前一条指令到底是一个call指令或者是其他的指令，谢谢。。。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：Tweets that mention ftofficer&#124;张聪的blog » CALL指令有多少种写法 -- Topsy.com</title>
		<link>http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/comment-page-1/#comment-743</link>
		<dc:creator>Tweets that mention ftofficer&#124;张聪的blog » CALL指令有多少种写法 -- Topsy.com</dc:creator>
		<pubDate>Sun, 04 Apr 2010 19:37:18 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ftofficer.com/?p=10407#comment-743</guid>
		<description>[...] This post was mentioned on Twitter by Zhang Cong &#124; 张聪. Zhang Cong &#124; 张聪 said: 新blog文章： CALL指令有多少种写法 - http://icer.ws/9u [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Zhang Cong | 张聪. Zhang Cong | 张聪 said: 新blog文章： CALL指令有多少种写法 &#8211; <a href="http://icer.ws/9u" rel="nofollow">http://icer.ws/9u</a> [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

