<?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>swigger's BLOG &#187; 破解狂</title>
	<atom:link href="http://www.swigger.net/archives/category/crack/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swigger.net</link>
	<description>醉卧沙场君莫笑 古来征战几人回</description>
	<lastBuildDate>Tue, 24 Jan 2012 05:34:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>patch mindmanager to avoid fuzzy text.</title>
		<link>http://www.swigger.net/archives/321.html</link>
		<comments>http://www.swigger.net/archives/321.html#comments</comments>
		<pubDate>Wed, 28 Dec 2011 11:21:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[破解狂]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=321</guid>
		<description><![CDATA[mindmanager is a great tool, but it has a bug (or they the devlopers may think it&#8217;s a feature) not fixed for years. That is, the fuzzy text problem. Just search mindmanager fuzzy text , there are many results about this bug and some patches for the old versions of mindmanager. Just as what is [...]]]></description>
			<content:encoded><![CDATA[<p>mindmanager is a great tool, but it has a bug (or they the devlopers may think it&#8217;s a feature) not fixed for years. That is, the fuzzy text problem. Just search mindmanager fuzzy text , there are many results about this bug and some patches for the old versions of mindmanager. Just as what is said from http://forum.us.mindjet.com/viewtopic.php?f=16&#038;t=3060 ，disabling the call to GdipSetTextRenderingHint fixes this bug.</p>
<p>steps to make a patch<br />
1. open a debugger, ex: ollydbg, load mindmanager.<br />
2. break at GdipSetTextRenderingHint  (gdiplus.dll!_GdipSetTextRenderingHint@8)<br />
3. when it break down, track the call to it. It&#8217;s something like:</p>

<div class="wp_syntax"><div class="code"><pre class="outline" style="font-family:monospace;">00688A2D  call        00CC8792</pre></div></div>

<p>goto 00CC8792 , it is something like:</p>

<div class="wp_syntax"><div class="code"><pre class="outline" style="font-family:monospace;">00CC8792  jmp         dword ptr ds:[0E5A758h]</pre></div></div>

<p>change it to :<br />
retn 8<br />
code bytes: c2 08 00 90 90 90<br />
4. save the modification to mindmanager.exe<br />
5. done, enjoy clear text.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/321.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>修改 vs2010 编译器使之支持u8&#8243;字符串”的形式</title>
		<link>http://www.swigger.net/archives/214.html</link>
		<comments>http://www.swigger.net/archives/214.html#comments</comments>
		<pubDate>Mon, 03 Jan 2011 07:28:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[破解狂]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=214</guid>
		<description><![CDATA[vs有比较完善的unicode支持，从2005(或更早？)开始就支持源文件是utf-8，并且可以用中文做变量名函数名。（可以是可以，不推荐） 不过，也有一点很让人生气，就算源文件是utf-8编码的，编译时，他也会把utf-8转成主机的编码。所以，对于中文编码而言，如果源文件是 utf-8的并且有这样的内容，编译还是一样出问题： const char * test = "®"; tt.cpp(10) : warning C4566: character represented by universal-character-name '\u00AE' cannot be represented in the current code page (936) c++0x草案中有 u8&#8243;string literal” 形式的字符串，如果可以用这个，则问题解决，可惜的是，vs2010并不支持 u8-prefix string literal。当然，u和U也不支持。不过由于windows本身所说的unicode是utf-16 le，所以vc里L”string”就是u”string”。 如果才能让vc以持u8呢？写一个宏和字符串转化的类，在运行期转化是一个可行但比较折中的办法，这个办法最大的问题是依然不能在代码里写”®”这样的字串，因为编译期转成中文编码失败成?号，运行期转成utf-8还是问号。 当然，可以写 L”®”，这样这个u8类可以这样写： string to_utf8(const wchar_t*); #define U8(string)  to_utf8(string).c_str() 然后在用的地方写： U8(L”®”); 这样基本能用，但带来了一些运行期消耗。并且L的字符串也比较大。当然宏本身还可以改改，使得不需要写L，而是在预处理后加入L，但会带来额外的限制（想想U8(“hello” “world”)）。 能不能hack编译器加入u8的支持呢？经过一番研究，发现了点眉目。 首先，vc编译器编译的主要功能代码在c1xx.dll中。这个dll的x86版本位于 C:\Program Files (x86)\Microsoft Visual Studio [...]]]></description>
			<content:encoded><![CDATA[<p>vs有比较完善的unicode支持，从2005(或更早？)开始就支持源文件是utf-8，并且可以用中文做变量名函数名。（可以是可以，不推荐）</p>
<p>不过，也有一点很让人生气，就算源文件是utf-8编码的，编译时，他也会把utf-8转成主机的编码。所以，对于中文编码而言，如果源文件是</p>
<p>utf-8的并且有这样的内容，编译还是一样出问题：</p>
<pre>const char * test = "®";
tt.cpp(10) : warning C4566: character represented by universal-character-name '\u00AE' cannot be represented in the current code page (936)</pre>
<p>c++0x草案中有 u8&#8243;string literal” 形式的字符串，如果可以用这个，则问题解决，可惜的是，vs2010并不支持 u8-prefix string literal。当然，u和U也不支持。不过由于windows本身所说的unicode是utf-16 le，所以vc里L”string”就是u”string”。</p>
<p>如果才能让vc以持u8呢？写一个宏和字符串转化的类，在运行期转化是一个可行但比较折中的办法，这个办法最大的问题是依然不能在代码里写”®”这样的字串，因为编译期转成中文编码失败成?号，运行期转成utf-8还是问号。</p>
<p>当然，可以写 L”®”，这样这个u8类可以这样写：</p>
<pre>string to_utf8(const wchar_t*);
#define U8(string)  to_utf8(string).c_str()</pre>
<p>然后在用的地方写：</p>
<p>U8(L”®”);</p>
<p>这样基本能用，但带来了一些运行期消耗。并且L的字符串也比较大。当然宏本身还可以改改，使得不需要写L，而是在预处理后加入L，但会带来额外的限制（想想U8(“hello” “world”)）。</p>
<p>能不能hack编译器加入u8的支持呢？经过一番研究，发现了点眉目。</p>
<p>首先，vc编译器编译的主要功能代码在c1xx.dll中。这个dll的x86版本位于 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\c1xx.dll。惊喜的是微软提供了它的pdb，这样分析它的行为就大大简化了。</p>
<p>经过研究发现，vc基本上函展开，获取token生成语法树是一次过的。</p>
<p>在关键函数</p>
<p>4F4C9430 GetTokenFromCurrentChar</p>
<p>处，会有一个循环，从一个全局变量中读取解析到的内容，然后构造出一个token。我们要做的就是hack这个过程，如果当前token符合 u8&#8243;string”的形式，则处理一遍字符串，转成8进制的串表示方法。</p>
<p>经过一番苦战成功后，结果如下：</p>

<div class="wp_syntax"><div class="code"><pre class="outline" style="font-family:monospace;">&nbsp;
tt.cpp:
&nbsp;
#define U8(str) u8##str
#define U16(str) L##str
&nbsp;
int main()
{
&nbsp;
U8(&quot;哈&quot;);
u8&quot;哈&quot;;
return 0;
}
&nbsp;
D:\temp&gt;cl /E tt.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
&nbsp;
tt.cpp
#line 1 &quot;tt.cpp&quot;
int main()
{
&nbsp;
&quot;\345\223\210&quot;;
&quot;\345\223\210&quot;;
return 0;
}</pre></div></div>

<p>使用的办法是：</p>
<p>把原始的c1xx.dll重命名为c1xx_.dll，写了一个假的c1xx.dll，把导出函数的调用都重定位到c1xx_.dll。然后在GetTokenFromCurrentChar的循环开始处：</p>
<p>4F4C943E                                             8B3D 046C644F    MOV EDI,DWORD PTR DS:[Current_char]</p>
<p>写入一个跳转，跳转到自己的函数中检查是否需要替换字串。写完后变成：</p>
<p>4F4C943E                                             E8 4D7EB60E      CALL c1xx.asmReplCurCode<br />
4F4C9443                                             90               NOP</p>
<p>这个被调用的函数是这样的：<br />
__declspec(naked) void asmReplCurCode()<br />
{<br />
__asm<br />
{<br />
pushad;<br />
call ReplCurCode;<br />
popad;<br />
mov edi, [ptrCurChar];<br />
mov edi, [edi];<br />
ret;<br />
}<br />
}<br />
即用汇编做一个简单的包装，调用C++函数，然后完成被覆盖的代码要完成的事，然后ret回去。</p>
<p>ReplCurCode是这样的：</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> ReplCurCode<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>g_pred <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
g_pred <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> ch <span style="color: #000080;">=</span> <span style="color: #000040;">**</span> ptrCurChar<span style="color: #008080;">;</span>
<span style="color: #666666;">//note: in creating/using precompiled header mode, don't insert this code since it had done before.</span>
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ch <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\r</span>'</span> <span style="color: #000040;">||</span> ch <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
replace <span style="color: #000080;">=</span> <span style="color: #000040;">*</span>ptrCurChar<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span> scode <span style="color: #000080;">=</span> <span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>#define __bultin_u8 1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008080;">;</span>
match <span style="color: #000080;">=</span> scode <span style="color: #000040;">+</span> <span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>scode<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>
<span style="color: #000040;">*</span>ptrCurChar <span style="color: #000080;">=</span> scode<span style="color: #008080;">;</span>
<span style="color: #0000ff;">return</span> <span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>ptrCurChar <span style="color: #000080;">==</span> match<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #000040;">*</span>ptrCurChar <span style="color: #000080;">=</span> replace<span style="color: #008080;">;</span>
match <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
replace <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span> src <span style="color: #000080;">=</span> <span style="color: #000040;">*</span>ptrCurChar<span style="color: #008080;">;</span>
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'#'</span> <span style="color: #000040;">&amp;&amp;</span> src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'d'</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">int</span> ff <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
string prefix<span style="color: #008080;">;</span>
<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">isspace</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
prefix <span style="color: #000040;">+</span><span style="color: #000080;">=</span> src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #000040;">++</span> src<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'u'</span> <span style="color: #000040;">&amp;&amp;</span>  src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'8'</span> <span style="color: #000040;">&amp;&amp;</span> src<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'&quot;'</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #666666;">//so this is a U8 str.</span>
string sb<span style="color: #008080;">;</span>
<span style="color: #0000ff;">size_t</span> sz <span style="color: #000080;">=</span> TextProcess<span style="color: #008080;">::</span><span style="color: #007788;">unescape</span><span style="color: #008000;">&#40;</span>src<span style="color: #000040;">+</span><span style="color: #0000dd;">3</span>, MAXLONG, sb<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>src<span style="color: #008000;">&#91;</span>sz<span style="color: #000040;">+</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #FF0000;">'&quot;'</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
string st <span style="color: #000080;">=</span> TextProcess<span style="color: #008080;">::</span><span style="color: #007788;">escape</span><span style="color: #008000;">&#40;</span>sb.<span style="color: #007788;">c_str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, sb.<span style="color: #007788;">length</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
string <span style="color: #000040;">&amp;</span> codestr <span style="color: #000080;">=</span> getPool<span style="color: #008000;">&#40;</span>prefix <span style="color: #000040;">+</span> st, src<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
match   <span style="color: #000080;">=</span> codestr.<span style="color: #007788;">c_str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> codestr.<span style="color: #007788;">length</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
replace <span style="color: #000080;">=</span> src<span style="color: #000040;">+</span>sz<span style="color: #000040;">+</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
<span style="color: #000040;">*</span>ptrCurChar <span style="color: #000080;">=</span> codestr.<span style="color: #007788;">c_str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>在首次处理的时候插入一个宏定义，这样代码中就可以知道编译器是不是修改支持了u8的功能。ptrCurChar是微软的c1xx.dll中的全局变量的地址，通过它知道当前要解析什么样的代码，解析完之后替换掉它，使得</p>
<p>u8&#8243;哈”</p>
<p>交给微软cl.exe解释的时候变成  ”\345\223\210&#8243; 当然下一次再跑到这里的时候，比较是不是解释完我设置的替换串了，是的话换回原始要解释的内容，当然是跳过了u8&#8243;哈”这个串的。</p>
<p>即： if(*ptrCurChar == match) *ptrCurChar = replace;</p>
<p>这样处理完了之后，vs2010就完美的支持u8&#8243;string”了。不过只能小范围内使用或写一些自己用的工具，对于大的团队而言，还是等微软下一个vs吧，也许那时就真正支持u8&#8243;literal string”了。</p>
<p>其实不只是 u8 literal string，这样改编译器，还能实现一些更有意思的东西。</p>
<p>dowload:  <a class="wpGallery" href="/soft/hack_c1xx.dll">hack_c1xx.dll </a></p>
<p>仅适用于原始md5为D05630986B03CBB28CD4D8E1BDD65831的c1xx.dll。</p>
<p>把原始c1xx.dll改名为c1xx_.dll，把hack_c1xx.dll改名为c1xx.dll</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/214.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>使hdtune扫硬盘时可以从某个位置开始</title>
		<link>http://www.swigger.net/archives/87.html</link>
		<comments>http://www.swigger.net/archives/87.html#comments</comments>
		<pubDate>Sat, 04 Apr 2009 15:49:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[破解狂]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=87</guid>
		<description><![CDATA[hdtune扫硬盘坏道，很慢。为了让它可以从某个位置开始，调了一下： 004089F5                            . 57                      PUSH EDI                                 ; /lParam 004089F6 &#60;blockpos&#62;                 . 8B7C24 1C               MOV EDI,DWORD PTR SS:[ESP+1C]            ; &#124; 004089FA                            . 8946 1A                 MOV DWORD PTR DS:[ESI+1A],EAX            ; &#124; 004089FD                            . 57                      PUSH EDI                                 ; &#124;wParam 004089FE                            . 68 0E040000             PUSH 40E                                 ; &#124;Message = WM_USER+14. 00408A03                            . 51                      PUSH ECX                                 ; &#124;hWnd 00408A04                            . [...]]]></description>
			<content:encoded><![CDATA[<p>hdtune扫硬盘坏道，很慢。为了让它可以从某个位置开始，调了一下：</p>

<div class="wp_syntax"><div class="code"><pre class="outline" style="font-family:monospace;">004089F5                            . 57                      PUSH EDI                                 ; /lParam
004089F6 &lt;blockpos&gt;                 . 8B7C24 1C               MOV EDI,DWORD PTR SS:[ESP+1C]            ; |
004089FA                            . 8946 1A                 MOV DWORD PTR DS:[ESI+1A],EAX            ; |
004089FD                            . 57                      PUSH EDI                                 ; |wParam
004089FE                            . 68 0E040000             PUSH 40E                                 ; |Message = WM_USER+14.
00408A03                            . 51                      PUSH ECX                                 ; |hWnd
00408A04                            . FF15 FC964700           CALL DWORD PTR DS:[4796FC]               ; \SendMessageA</pre></div></div>

<p> 在 blockpos处，修改esp+1c里的值，就可以了。</p>
<p>总的来说，hdtune把硬盘分为很多个格子，每行５０个，总共有很多行。每一个小格扫完后，就发送这个自定义的消息 WM_USER+14来通知主线程画一个色块。绿色表示无问题，红色表示有问题。运行到blockpos这一行时，把这个值改掉，即可定义到第n个格子。第０个为左上，第４９个为第一行最后一个，依此类推。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/87.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>被sothink swf decompiler阴了一把</title>
		<link>http://www.swigger.net/archives/44.html</link>
		<comments>http://www.swigger.net/archives/44.html#comments</comments>
		<pubDate>Sat, 28 Jun 2008 18:15:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[破解狂]]></category>
		<category><![CDATA[decompile]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[破解]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=44</guid>
		<description><![CDATA[好久没写了，今天再灌一篇。 一个flash小游戏里的TEA算法，hack一把，结果发现，decompile出来的as，改成js运行后，得到的结果跟原游戏运算出的结果是不一样的。 心想难道js跟as有些差别？不得已，去下了一个adobe flash cs3。 发现自己快不会用flash了，还是flash5时学了几天，做了点皮毛，主要也是那时为了应付交了一下某堂课的作业。想起来当时那老师也很好心，这个flash作业给了我满分。 不过今天对flash cs3感觉 很不顺手了。一开始就遇到个问题 ，在cs3中如何使用外部类？直接写一个，报错误“类不能嵌套”，搜了一把是写在一个.as文件里，就写在一个TEA.as里。 加入代码 import TEA; 结果又报错，说TEA没有实现，查文档，原来说是要放到一个包(package)里。那就放吧，放完发现还是不对，最后看了一下flash自己的实现，终于整明白了。先建一个crypto的文件夹，在里面建个TEA.as，代码这样： package crypto{ //crypto要跟文件夹名一致。 public class TEA{ //TEA跟文件名即TEA.as一致。public好像不能少。 &#8230;//省略 } } OK，可以运行了，然后发现，其实另存为flash 8的文档，就可以直接用不放在包里的TEA.as!晕倒。 运行发现，这个flash得到的结果跟html里的js算出来是一样的。敢情从下载flash起，事情就白做了。 最后没办法，回到sothink swf decompiler中，仔细看，看到一个疑点： var _loc11 = 2.671213E+009; 为什么是这样呢？算法中不应有这样的代码。打开raw code，找到这一行：  //96 09 00 06 ef e6 e3 41 00 00 20 37  _push 2.67121e+009 对比一下其它的_push语句，发现ef e6 e3 41 00 [...]]]></description>
			<content:encoded><![CDATA[<p>好久没写了，今天再灌一篇。</p>
<p>一个flash小游戏里的TEA算法，hack一把，结果发现，decompile出来的as，改成js运行后，得到的结果跟原游戏运算出的结果是不一样的。</p>
<p>心想难道js跟as有些差别？不得已，去下了一个adobe flash cs3。</p>
<p>发现自己快不会用flash了，还是flash5时学了几天，做了点皮毛，主要也是那时为了应付交了一下某堂课的作业。想起来当时那老师也很好心，这个flash作业给了我满分。</p>
<p>不过今天对flash cs3感觉 很不顺手了。一开始就遇到个问题 ，在cs3中如何使用外部类？直接写一个，报错误“类不能嵌套”，搜了一把是写在一个.as文件里，就写在一个TEA.as里。</p>
<p>加入代码 import TEA; 结果又报错，说TEA没有实现，查文档，原来说是要放到一个包(package)里。那就放吧，放完发现还是不对，最后看了一下flash自己的实现，终于整明白了。先建一个crypto的文件夹，在里面建个TEA.as，代码这样：</p>
<p>package crypto{ //crypto要跟文件夹名一致。</p>
<p>public class TEA{ //TEA跟文件名即TEA.as一致。public好像不能少。</p>
<p>&#8230;//省略</p>
<p>}</p>
<p>}</p>
<p>OK，可以运行了，然后发现，其实另存为flash 8的文档，就可以直接用不放在包里的TEA.as!晕倒。</p>
<p>运行发现，这个flash得到的结果跟html里的js算出来是一样的。敢情从下载flash起，事情就白做了。</p>
<p>最后没办法，回到sothink swf decompiler中，仔细看，看到一个疑点：</p>
<p>var _loc11 = 2.671213E+009;</p>
<p>为什么是这样呢？算法中不应有这样的代码。打开raw code，找到这一行：</p>
<p> //96 09 00 06 ef e6 e3 41 00 00 20 37<br />
 _push 2.67121e+009</p>
<p>对比一下其它的_push语句，发现ef e6 e3 41 00 00 20 37 是一个double值。</p>
<p>写个小程序：</p>

<div class="wp_syntax"><div class="code"><pre class="outline" style="font-family:monospace;">&nbsp;
debian:~# cat t2.c
#include &lt;stdio.h&gt;
&nbsp;
int main()
{
        double d = 2.67121e+009;
        unsigned char * p = (unsigned char*)&amp;d;
&nbsp;
        int i;
        for ( i=0; i&lt;8; ++i)
        {
                printf(&quot;%02x &quot;, p[i]);
        }
        printf(&quot;\n&quot;);
        return 0;
}
debian:~# gcc t2.c 
debian:~# ./a.out
00 00 00 c2 ed e6 e3 41</pre></div></div>

<p>对比00 00 00 c2 ed e6 e3 41 与ef e6 e3 41 00 00 20 37</p>
<p>只有一点儿不同，原double值应该是00 00 20 37 ef e6 e3 41</p>
<p>好，这样： printf(“%.14g\n”, *(double*)”\x00\x00\x20\x37\xef\xe6\xe3\x41&#8243;);</p>
<p>得到： 2671212985</p>
<p>这就是正确的原flash的设定值。</p>
<p>修改一下TEA.as:</p>
<p>var _loc11 = 2.671213E+009;改为：</p>
<p>var _loc11 = 2671212985；</p>
<p>再运行一把，成功！算出来的值跟原flash是一样的，可以互相加/解密。</p>
<p>总结一下：sothink swf decompiler太土，居然不会用最恰当的方法格式化double值。bs之。</p>
<p>另外把TEA.as贴出来，版权不归我所有，是RE出来的，原作者如果有意见，请聊系本人删除。</p>
<p>hilight不支持actionscript，当就是javascript好了，反正差不多。</p>
<p>贴的这个是flash8格式，在CS3中使 用要放入一个 package里，前面说过了。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&nbsp;
<span style="color: #003366; font-weight: bold;">class</span> TEA
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">function</span> TEA<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> encrypt<span style="color: #009900;">&#40;</span>src<span style="color: #339933;">,</span> key<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>key <span style="color: #339933;">||</span> key.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            key <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;9F3779B99F3779B9&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end if</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc4 <span style="color: #339933;">=</span> TEA.<span style="color: #660066;">charsToLongs</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">strToChars</span><span style="color: #009900;">&#40;</span>src<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc9 <span style="color: #339933;">=</span> TEA.<span style="color: #660066;">charsToLongs</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">strToChars</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc8 <span style="color: #339933;">=</span> _loc4.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_loc8 <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end if</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_loc8 <span style="color: #339933;">==</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc4<span style="color: #009900;">&#91;</span>_loc8<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end if</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc11 <span style="color: #339933;">=</span> <span style="color: #CC0000;">2671212985</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc5<span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc7<span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc10 <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">6</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">52</span> <span style="color: #339933;">/</span> _loc8<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc6 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>_loc10<span style="color: #339933;">--</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc6 <span style="color: #339933;">=</span> _loc6 <span style="color: #339933;">+</span> _loc11<span style="color: #339933;">;</span>
            _loc7 <span style="color: #339933;">=</span> _loc6 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> _loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                _loc5 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>_loc2 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">5</span> <span style="color: #339933;">^</span> _loc3 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc3 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc2 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">^</span> <span style="color: #009900;">&#40;</span>_loc6 <span style="color: #339933;">^</span> _loc3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc9<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc7<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^</span> _loc2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> _loc5<span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
            _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            _loc5 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>_loc2 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">5</span> <span style="color: #339933;">^</span> _loc3 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc3 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc2 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">^</span> <span style="color: #009900;">&#40;</span>_loc6 <span style="color: #339933;">^</span> _loc3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc9<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc7<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^</span> _loc2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> _loc5<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end while</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">charsToHex</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">longsToChars</span><span style="color: #009900;">&#40;</span>_loc4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> decrypt<span style="color: #009900;">&#40;</span>src<span style="color: #339933;">,</span> key<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>key <span style="color: #339933;">||</span> key.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            key <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;9F3779B99F3779B9&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end if</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc4 <span style="color: #339933;">=</span> TEA.<span style="color: #660066;">charsToLongs</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">hexToChars</span><span style="color: #009900;">&#40;</span>src<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc9 <span style="color: #339933;">=</span> TEA.<span style="color: #660066;">charsToLongs</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">strToChars</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc8 <span style="color: #339933;">=</span> _loc4.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_loc8 <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end if</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc10 <span style="color: #339933;">=</span> <span style="color: #CC0000;">2671212985</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc6<span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc7<span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc12 <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">6</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">52</span> <span style="color: #339933;">/</span> _loc8<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc5 <span style="color: #339933;">=</span> _loc12 <span style="color: #339933;">*</span> _loc10<span style="color: #339933;">;</span> _loc5 <span style="color: #339933;">!=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc5 <span style="color: #339933;">=</span> _loc5 <span style="color: #339933;">-</span> _loc10<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc7 <span style="color: #339933;">=</span> _loc5 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> _loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #339933;">--</span>_loc1<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                _loc6 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>_loc2 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">5</span> <span style="color: #339933;">^</span> _loc3 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc3 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc2 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">^</span> <span style="color: #009900;">&#40;</span>_loc5 <span style="color: #339933;">^</span> _loc3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc9<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc7<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^</span> _loc2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> _loc6<span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
            _loc2 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span>_loc8 <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            _loc6 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>_loc2 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">5</span> <span style="color: #339933;">^</span> _loc3 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc3 <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc2 <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">^</span> <span style="color: #009900;">&#40;</span>_loc5 <span style="color: #339933;">^</span> _loc3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc9<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">^</span> _loc7<span style="color: #009900;">&#93;</span> <span style="color: #339933;">^</span> _loc2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            _loc3 <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _loc4<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> _loc6<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">charsToStr</span><span style="color: #009900;">&#40;</span>TEA.<span style="color: #660066;">longsToChars</span><span style="color: #009900;">&#40;</span>_loc4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> charsToLongs<span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">ceil</span><span style="color: #009900;">&#40;</span>chars.<span style="color: #660066;">length</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> _loc3.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc3<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> chars<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">*</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">*</span> <span style="color: #CC0000;">4</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">8</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">*</span> <span style="color: #CC0000;">4</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#91;</span>_loc1 <span style="color: #339933;">*</span> <span style="color: #CC0000;">4</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #CC0000;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> longsToChars<span style="color: #009900;">&#40;</span>longs<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> longs.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc3.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>longs<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">255</span><span style="color: #339933;">,</span> longs<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">8</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">255</span><span style="color: #339933;">,</span> longs<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">16</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">255</span><span style="color: #339933;">,</span> longs<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #CC0000;">24</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> charsToHex<span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> String<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;0&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;2&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;3&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;4&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;5&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;6&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;7&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;8&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;9&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;b&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;c&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;d&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;e&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;f&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> chars.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc4 <span style="color: #339933;">=</span> _loc4 <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#91;</span>chars<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> _loc3<span style="color: #009900;">&#91;</span>chars<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span> <span style="color: #CC0000;">15</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> hexToChars<span style="color: #009900;">&#40;</span>hex<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> hex.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;0x&quot;</span> <span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> hex.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">=</span> _loc1 <span style="color: #339933;">+</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc3.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>parseInt<span style="color: #009900;">&#40;</span>hex.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>_loc1<span style="color: #339933;">,</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> charsToStr<span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> String<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> chars.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc3 <span style="color: #339933;">=</span> _loc3 <span style="color: #339933;">+</span> String.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span>chars<span style="color: #009900;">&#91;</span>_loc1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
    static <span style="color: #003366; font-weight: bold;">function</span> strToChars<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> _loc3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> _loc1 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> _loc1 <span style="color: #339933;">&lt;</span> str.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>_loc1<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            _loc3.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>str.<span style="color: #660066;">charCodeAt</span><span style="color: #009900;">&#40;</span>_loc1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// end of for</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>_loc3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of the function</span>
<span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// End of Class</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/44.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

