<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Freeware Modding Tools &#187; Security</title>
	<atom:link href="http://mods.guidtech.net/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://mods.guidtech.net</link>
	<description>modding tools by guidtech</description>
	<lastBuildDate>Wed, 25 Aug 2010 23:24:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Scan Virtual Table for Abnormalities</title>
		<link>http://mods.guidtech.net/2009/scan-virtual-table-for-abnormalities/</link>
		<comments>http://mods.guidtech.net/2009/scan-virtual-table-for-abnormalities/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 08:20:55 +0000</pubDate>
		<dc:creator>s0beit</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[anti]]></category>
		<category><![CDATA[anticheat]]></category>
		<category><![CDATA[avoid]]></category>
		<category><![CDATA[cheat]]></category>
		<category><![CDATA[detect]]></category>
		<category><![CDATA[hooking]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://mods.guidtech.net/?p=50</guid>
		<description><![CDATA[struct FCodeSize int int FCodeSize codeReturn; return codeReturn; return codeReturn; return codeReturn; return codeReturn; return codeReturn; codeReturn codeReturn = (codeReturn return codeReturn; able &#124;&#124; !*Table ) ]]></description>
			<content:encoded><![CDATA[<p>This is a simple function i wrote to make sure that no functions in your virtual table are outside the .code section of the module you specify.</p>
<div class="geshi no cpp">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">struct</span> FCodeSize</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> &nbsp;Begin;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> &nbsp;End;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">FCodeSize GetModuleCodeSectionInfo<span class="br0">&#40;</span> HMODULE hmModule <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;FCodeSize codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">memset</span><span class="br0">&#40;</span> <span class="sy3">&amp;</span>codeReturn, <span class="nu0">0</span>, <span class="kw3">sizeof</span><span class="br0">&#40;</span> FCodeSize <span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">unsigned</span> <span class="kw4">long</span> moduleLong <span class="sy1">=</span> <span class="kw2">reinterpret_cast</span><span class="sy1">&lt;</span><span class="kw4">unsigned</span> <span class="kw4">long</span><span class="sy1">&gt;</span><span class="br0">&#40;</span> hmModule <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;IMAGE_DOS_HEADER <span class="sy2">*</span>pDos <span class="sy1">=</span> <span class="kw2">static_cast</span><span class="sy1">&lt;</span>IMAGE_DOS_HEADER <span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>LPVOID<span class="br0">&#41;</span>hmModule<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>pDos <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> pDos<span class="sy2">-</span><span class="sy1">&gt;</span>e_magic <span class="sy3">!</span><span class="sy1">=</span> IMAGE_DOS_SIGNATURE <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;IMAGE_NT_HEADERS <span class="sy2">*</span>pNTHead <span class="sy1">=</span> <span class="kw2">reinterpret_cast</span><span class="sy1">&lt;</span>IMAGE_NT_HEADERS <span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">&#40;</span> moduleLong <span class="sy2">+</span> pDos<span class="sy2">-</span><span class="sy1">&gt;</span>e_lfanew<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>pNTHead <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> pNTHead<span class="sy2">-</span><span class="sy1">&gt;</span>Signature <span class="sy3">!</span><span class="sy1">=</span> IMAGE_NT_SIGNATURE <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;IMAGE_OPTIONAL_HEADER <span class="sy2">*</span>pOptionalHead <span class="sy1">=</span> <span class="kw2">reinterpret_cast</span><span class="sy1">&lt;</span>IMAGE_OPTIONAL_HEADER <span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">&#40;</span> <span class="sy3">&amp;</span>pNTHead<span class="sy2">-</span><span class="sy1">&gt;</span>OptionalHeader <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>pOptionalHead <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;codeReturn.<span class="me1">Begin</span> &nbsp;<span class="sy1">=</span> <span class="br0">&#40;</span>moduleLong <span class="sy2">+</span> pOptionalHead<span class="sy2">-</span><span class="sy1">&gt;</span>BaseOfCode<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;codeReturn.<span class="me1">End</span> &nbsp;<span class="sy1">=</span> <span class="br0">&#40;</span>codeReturn.<span class="me1">Begin</span> <span class="sy2">+</span> pOptionalHead<span class="sy2">-</span><span class="sy1">&gt;</span>SizeOfCode<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> codeReturn;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">bool</span> CheckTableReferences<span class="br0">&#40;</span> HMODULE hModule, <span class="kw4">void</span> <span class="sy2">*</span>pTable, <span class="kw4">int</span> SizeOfTable <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;FCodeSize moduleCodeSize <span class="sy1">=</span> GetModuleCodeSectionInfo<span class="br0">&#40;</span> hModule <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>moduleCodeSize.<span class="me1">Begin</span> <span class="sy3">||</span> <span class="sy3">!</span>moduleCodeSize.<span class="me1">End</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="kw2">true</span>; <span class="co1">//error, return true to avoid false-positives</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="sy2">*</span>Table <span class="sy1">=</span> <span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="sy2">*</span><span class="br0">&#41;</span>pTable;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>Table <span class="sy3">||</span> <span class="sy3">!</span><span class="sy2">*</span>Table <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="kw2">true</span>; <span class="co1">//error, return true to avoid false-positives</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="sy2">*</span>Internal <span class="sy1">=</span> <span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="sy2">*</span><span class="br0">&#41;</span><span class="sy2">*</span>Table;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span><span class="br0">&#40;</span> <span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span>; i <span class="sy1">&lt;</span> SizeOfTable; i<span class="sy2">++</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">unsigned</span> <span class="kw4">long</span> TableFunctionAddress <span class="sy1">=</span> <span class="kw2">static_cast</span><span class="sy1">&lt;</span><span class="kw4">unsigned</span> <span class="kw4">long</span><span class="sy1">&gt;</span><span class="br0">&#40;</span> Internal<span class="br0">&#91;</span> i <span class="br0">&#93;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="sy3">!</span>TableFunctionAddress <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">continue</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> TableFunctionAddress <span class="sy1">&gt;=</span> moduleCodeSize.<span class="me1">Begin</span> <span class="sy3">&amp;&amp;</span> TableFunctionAddress <span class="sy1">&lt;=</span> moduleCodeSize.<span class="me1">End</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//success</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">continue</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//failure, outside of range</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mods.guidtech.net/2009/scan-virtual-table-for-abnormalities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
