?? csdn_文檔中心_屏幕取詞核心內幕.htm
字號:
</SPAN>07F2H</SPAN><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">的尺寸為:</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 9pt; mso-bidi-font-size: 10.0pt">4000H</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 42.5pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">∵</SPAN><SPAN
lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 10.0pt">
82F41300H + 1234H = 82F42534</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 42.5pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">∴</SPAN><SPAN
style="FONT-SIZE: 9pt; mso-bidi-font-size: 10.0pt"> </SPAN><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">對應的</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 9pt; mso-bidi-font-size: 10.0pt">32</SPAN><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">位線性地址為</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 9pt; mso-bidi-font-size: 10.0pt">28:82F42534H</SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; mso-list: l31 level1 lfo7; tab-stops: list 18.0pt"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 黑體">3.<SPAN
style="FONT: 7pt 'Times New Roman'"> </SPAN></SPAN><SPAN
style="FONT-FAMILY: 黑體; FONT-SIZE: 12pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">動態修改</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 黑體">Windows</SPAN><SPAN
style="FONT-FAMILY: 黑體; FONT-SIZE: 12pt; mso-ascii-font-family: Arial; mso-bidi-font-size: 10.0pt">內核</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 18pt"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">如前所述,</SPAN><SPAN
lang=EN-US>Windows95</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">不是一個“純”</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位操作系統,其內核模塊中的</SPAN><SPAN
lang=EN-US>USER</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>GDI</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">均是用</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位代碼實現的。</SPAN><SPAN
lang=EN-US>USER32.DLL</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>GDI32.DLL</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">只是</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位的</SPAN><SPAN
lang=EN-US>USER.EXE</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>GDI.EXE</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位調用接口。因此,如果屏幕截獲程序用</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位代碼實現,則只能截獲</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位應用程序對</SPAN><SPAN
lang=EN-US>USER32.DLL</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>GDI32.DLL</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的調用,無法截獲</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位應用程序對</SPAN><SPAN
lang=EN-US>USER.EXE</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>GDI.EXE</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的調用,所以如果想截獲所有應用程序(包括</SPAN><SPAN
lang=EN-US>Windows95</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的桌面程序</SPAN><SPAN
lang=EN-US>Explorer</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">)中有關屏幕輸出的系統調用,則應該用</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位代碼實現屏幕截獲功能。這就是</SPAN><SPAN
lang=EN-US>LTW32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">為什么不是“純”</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位應用程序的原因。</SPAN><SPAN
lang=EN-US>LTW32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">主要截獲兩個系統調用</SPAN><SPAN
lang=EN-US>TextOut()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>ExtTextOut()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">,方法很簡單,把這兩個函數的頭五個字節修改為一個</SPAN><SPAN
lang=EN-US>JMP FAR </SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">指令,使得對這兩個函數的調用均轉向屏幕截獲程序。這就涉及到一個關鍵問題:動態修改</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的代碼。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 18pt"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">在傳統的</SPAN><SPAN
lang=EN-US>DOS</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">程序中,動態修改程序代碼無任何困難,但在</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">中則不然,因為在</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">中,代碼可被同一程序的多個實例(進程)共享,所以系統不允許應用程序動態的修改代碼。在</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位側,內存的可讀、寫屬性是與段選擇符聯系在一起的。段選擇符基本上可分為兩類:數據段選擇符和代碼段選擇符。前者可讀、可寫、不可執行;后者可讀、可執行、不可寫。</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">提供了這兩類段選擇符相轉換的系統調用。未公開的</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位系統調用</SPAN><SPAN
lang=EN-US>AllocCStoDSAlias()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">為給定的代碼段選擇符分配一個具有相同線性基址和尺寸的數據段別名(</SPAN><SPAN
lang=EN-US>DS Alias</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">)。通過</SPAN><SPAN
lang=EN-US>DS</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">別名可以對給定的代碼段進行修改。</SPAN><SPAN
lang=EN-US>AllocCStoDSAlias()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的使用方法如下:</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 18pt"><SPAN lang=EN-US>WORD
(FAR PASCAL *AllocCStoDSAlias)(WORD);</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 18pt"><SPAN
lang=EN-US>AllocCStoDSAlias = GetProcAddress(</SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 39.25pt; TEXT-INDENT: 3.25pt"><SPAN
lang=EN-US>GetModuleHandle(“KERNEL”),
”ALLOCCSTODSALIAS”);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 18pt"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">調用參數為給定的代碼選擇符,調用成功時返回一個線性基址和尺寸均與原代碼選擇符相同的</SPAN><SPAN
lang=EN-US>DS</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">別名。當不再使用此</SPAN><SPAN
lang=EN-US>DS</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">別名時,要用系統調用</SPAN><SPAN
lang=EN-US>FreeSelector()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">把</SPAN><SPAN
lang=EN-US>DS</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">別名釋放掉。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 18pt"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">使用上述技術,就可實現動態修改</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">代碼,從而改變</SPAN><SPAN
lang=EN-US>GDI</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的系統調用</SPAN><SPAN
lang=EN-US>TextOut()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">和</SPAN><SPAN
lang=EN-US>ExtTextOut()</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">的執行動作,實時地截獲屏幕輸出,為實現鼠標隨動翻譯提供可能。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 18pt"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">把上述的</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位到</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位的形式替換、</SPAN><SPAN
lang=EN-US>32</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位代碼與</SPAN><SPAN
lang=EN-US>16</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">位代碼的數據交換、動態修改</SPAN><SPAN
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: Arial">內核等技術綜合應用在一起,配合單詞查找算法和詞組分析算法就可以實現鼠標隨動翻譯功能。</SPAN></P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>對該文的評論</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文檔中心_屏幕取詞核心內幕.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文檔中心_屏幕取詞核心內幕.files/ico_pencil.gif" width=16>
</SPAN> dickzy <I>(2000-12-27 10:54:18)</I> </TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3 width=532><BR>如果不是intel 的機子你這個方法就完蛋了!!!
<BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文檔中心_屏幕取詞核心內幕.files/ico_pencil.gif" width=16>
</SPAN> a_fee <I>(2000-12-22 9:45:45)</I> </TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3 width=532><BR>請問那里可以看到源程序?
<BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要評論</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你沒有登陸,無法發表評論。 請先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=2347">登陸</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注冊</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">網站簡介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">廣告服務</A> - <A
href="http://www.csdn.net/map/map.shtm">網站地圖</A> - <A
href="http://www.csdn.net/help/help.asp">幫助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">聯系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文檔中心_屏幕取詞核心內幕.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百聯美達美公司 版權所有 京ICP證020026號</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--內容結束//--><!--結束//--></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -