當前位置:首頁 » 網路連接 » 計算機網路數據偏移怎麼看
擴展閱讀
含有軟體的視頻手機壁紙 2025-06-27 06:13:24
猿題庫為什麼網路異常 2025-06-27 06:13:18
佳能列印機怎麼蘋果電腦 2025-06-27 06:11:07

計算機網路數據偏移怎麼看

發布時間: 2022-08-07 23:47:01

A. ★★★高手請進!!!有關計算機網路技術★★★

<!--STATUS OK-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="alternate" type="application/rss+xml" title="「★★★高手請進!!!有關計算機網路技術★★★」的最新回答(RSS 2.0)" href="http://..com/q?ct=20&qid=1903532&pn=65535&rn=25&tn=rssqb">
<title>★★★高手請進!!!有關計算機網路技術★★★_網路知道 </title>
<style type="text/css">
<!--
a.f12og:link{color:#ff6600}
a.f12og:visited{color:#ff6600}
-->
</style>
<link href="/iknow.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
function ask(fn)
{document.fask.word.value=fn.word.value;
fask.submit();
}
</script>
</head>
<body class="bgbdy" topmargin="0">
<center>
<table width="770" border=0 align="center">
<tbody>
<tr>
<td width="150" valign=top><a href="/"><img src="https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/logo-.gif" border="0"></a></td>
<td height="55" style="table-layout: fixed; word-break: break-all"><table cellspacing=0 cellpadding=0 border=0>
<tr>
<td nowrap ><a href="http://news..com" class="headTit">新聞</a><a href="http://www..com/" class="headTit">網頁</a><a class="headTit" href="http://post..com/">貼吧</a><font class="headTitB">知道</font><a class="headTit" href="http://mp3..com/">MP3</a><a class="headTit" href="http://image..com/">圖片</a><a href="http://www..com/more/index.html" class="headTit">更多>></a></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<form action="/q" name="ftop" method="get">
<td nowrap>
<input class=formfont maxlength=256 tabindex=1 size=42 name=word>
</td>
<td width="30" valign="bottom" nowrap><div align="right"><span style="padding-bottom:15px; "><a href="http://www..com/search/_help.html">幫助</a></span></div></td>
</tr>
</table>
<table cellspacing=0 cellpadding=0 border=0>
<tr valign="bottom">
<td height="28" nowrap > <input type="submit" tabindex=2 value="搜索答案" class="bnsrh">
</td>
<td width="86" nowrap ><div align="right">
<input type="hidden" name="ct" value="17">
<input type="hidden" name="pn" value="0">
<input type="hidden" name="tn" value="ikaslist">
<input type="hidden" name="rn" value="10">
<input type="button" onclick="ask(ftop);" tabindex=3 value="我要提問" class="bnsrh">
</div></td> </form>
</tr>
</table>
<form name="fask" action="/q" method="get"> <input type="hidden" name="ct" value="17"><input type="hidden" name="pn" value="0"><input type="hidden" name="tn" value="ikask"><input type="hidden" name="rn" value="10"><input type="hidden" name="word" value=""> <input type="hidden" name="cm" value="1"><input type="hidden" name="lm" value="394496"></form>
</td></tr>
</table>
<script>
var url = escape(location.href);

function ctlSubmit(event) {
if (event.ctrlKey && event.keyCode == 13) { fdf.submit() }
}
function checkco(f,des)
{ if(f.co.value=="") {alert("請輸入您的"+des); return false;}}
function limitpl(f,des)
{ if(f.co.value=="") {alert("請輸入您的"+des); return false;} return limitChars(f.co,des,200);}
function checkcoAndsn(f,des)
{ if(f.co.value=="") {alert("請輸入您的"+des); return false;} return limitChars(f.sn,"參考資料",60);}
function cReply(flag)
{ if (flag=="yes") {
document.getElementById('replyTB').style.display=""; }
if(flag=="no"){document.getElementById('replyTB').style.display="none"; }
location.href="#here";
}
function fixReply(flag){ setTimeout("cReply('"+flag+"')",300);}
function limitChars(obj,obj_Str,limit_len)
{
var c = getLeftChars(obj,limit_len);
if(c<0)
{
echo_str = obj_Str + "限定在"+limit_len+"個字以內,請縮短字數";
alert(echo_str);
obj.focus();
return false;
}
return true;
}
function getLeftChars(varField,limit_len) {
var i = 0;
var cap = limit_len*2;
var j=0;
var runtime = (varField.value.length>cap)?(cap+1):varField.value.length;
for (i = 0; i< runtime; i++) {
if (varField.value.charCodeAt(i) > 127 || varField.value.charCodeAt(i) == 94) {
j=j+2;
}
else {
j=j+1
}
} //結束FOR循環
var leftchars = cap - j;
return (leftchars);
}
</script>
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="25" nowrap><a href="/">網路知道</a> > <a href="/browse/74?lm=9">電腦/數碼</a> > <a href="/browse/88?lm=9">互聯網</a></td>
</tr>
</table>
<div id="cDiv"><table border="0" align="right" cellpadding="0" cellspacing="0">
<tr><td width="170" valign="top" class="padL12">

<!--如果用戶已登陸-->
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="magBtm12">
<tr>
<td class="bgtle" nowrap>用戶信息</td>
</tr>
<tr>
<td class="bgcntBor3">
<!--如果是iknow用戶-->
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="zhtable">
<tr>
<td class="f14">您好:々冰清☆玉潔々 </td>
</tr>
<tr>
<td>
<a href="http://www..com/search/_help.html#n5" target=_blank>經理 四級</a> ( 1394 )</td>
</tr>
</table>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
<tr>
<td height=22>• <a href="/q?ct=17&word=%A1%A9%B1%F9%C7%E5%A1%EE%D3%F1%BD%E0%A1%A9&rn=25&lm=393738&tn=ikuserask">我的提問</a></td>
<td>• <a href="/q?ct=23&cm=7001&tn=ikuserscore&un=%A1%A9%B1%F9%C7%E5%A1%EE%D3%F1%BD%E0%A1%A9">個人中心</a></TD>
</tr>
<tr>
<td>• <a href="/q?ct=17&word=%A1%A9%B1%F9%C7%E5%A1%EE%D3%F1%BD%E0%A1%A9&rn=25&lm=459274&tn=ikuseanswer">我的回答</a></td>
<td>• <script language="javascript">
document.write('<a href="/q?ct=21&cm=13&tn=iksubmit&lu=' + escape(location.href) + '">退出</a>');
</script></td>
</tr>
</table>

</td></tr></table>
<!--結束登陸框-->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <td class="bgtle" nowrap>同類熱點問題</td></tr>
<tr> <td class="bgcntLn">
<table width="152" border="0" cellpadding="0" cellspacing="0" style="table-layout:fixed;word-wrap:break-word;">
<tr><td width=10 valign="top">• </td>
<td><a href="/question/1663389.html?md=1" target="_blank">為什麼(12月)最近jmp3.net老登陸不上,是不是網站關閉了?</a></td></tr><tr><td width=10 valign="top">• </td>
<td><a href="/question/1696613.html?md=1" target="_blank">我的這個網址不知道取什麼名字!!</a></td></tr><tr><td width=10 valign="top">• </td>
<td><a href="/question/1521709.html?md=1" target="_blank">上網的利與弊</a></td></tr><tr><td width=10 valign="top">• </td>
<td><a href="/question/1702531.html?md=1" target="_blank">誰有圖片</a></td></tr><tr><td width=10 valign="top">• </td>
<td><a href="/question/1571881.html?md=1" target="_blank">關於qq代碼一點不會,誰可以幫我?</a></td></tr>
<tr><td></td><td height="22" ><a href="/browse/88?lm=5" class="lmore">更多>></a></td></tr></table>
</td></tr></table>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="bgcntBor4">您想在自己的網站上展示<br>網路「知道」上的問答嗎?<br>來<a href="/iknowcode.html" target=_blank>獲取免費代碼</a>吧!
<hr size="1" color="#999999">如要投訴或提出意見建議,請到<a href="http://post..com/f?kw=%B0%D9%B6%C8%D6%AA%B5%C0%CD%B6%CB%DF" target="_blank">網路知道投訴吧</a>反饋。
</td>
</tr></table>
<br /><a href="/q?ct=20&qid=1903532&pn=65535&rn=25&tn=rssqb" target="_blank" title="訂閱「★★★高手請進!!!有關計算機網路技術★★★」的最新回答"><img src="http://www..com/search/img/rss_xml.jpg" border="0" width="36" height="14" align="absmiddle"></a>訂閱該問題
<br />
</td></tr></table>

<table width="588" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="bgtle" nowrap>待解決</td>
</tr>
<tr><td class="bgcntBor3">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=zhtable>
<tr>
<td class="f14B">★★★高手請進!!!有關計算機網路技術★★★</td>
</tr>
<tr>
<td valign="top"><span class="f12rd"><img src="https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/iknow/icn_point.gif" width="16" height="16" align="absmiddle"> 懸賞分:30</span> - <span class="f12gy">離問題結束還有 14 天 23 小時</span></td>
</tr>
<tr>
<td class="f14">1在TCP運輸連接管理當中採用三次握手建立TCP連接,在其第三次握手中,ACK=X+1,問:X值如何確定,為什麼?<br>2長度為100位元組的應用層數據交給運輸層傳送,再交給網路層傳送,其數據偏移均為6,最後交給數據鏈路層的乙太網傳送,加上首部和尾部共18位元組,求數據的傳輸效率<br><br>跪求詳解!!!!萬分感謝!!!答對者有追加分!!!<br></td>
</tr>
<tr>
<td align="right"><span class="f12gy">提問者:</span><a href="/q?ct=23&cm=400&tn=ouserinfo&un=861827" target=_blank>861827</a> - <a href="http://www..com/search/_help.html#n5" target=_blank>試用期 一級</a> </td></tr>
<tr><td><input type=button value="我來回答" onClick="location.href='#reply';"> </td> </tr>

</table>

</td>
</tr>
</table>

<br>
<form method="post" name=fdf action="/q" onSubmit="return checkcoAndsn(this,'回答');">
<input type="hidden" name="ct" value="22">
<input type="hidden" name="cm" value="100009">
<input type="hidden" name="tn" value="ikreplysubmit">
<input type="hidden" name="qid" value="1903532">
<input type="hidden" name="cid" value="88">
<script language="javascript">
document.write("<input type=hidden name=lu value="+escape(location.href)+ ">");
</script>
<table width="588" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="bgcntBor4"><table width="100%" border="0" cellpadding="0" cellspacing="0" class=zhtable>
<tr valign="top">
<td width="22%" nowrap class="f14"><a name="reply"></a>我也來回答:</td>
<td width="78%"><textarea name="co" cols="50" rows="10" onKeyDown="ctlSubmit(event);"></textarea>
<br>
回答即可得2分,回答被採納則獲得懸賞分以及獎勵20分。 <a href="http://www..com/search/_help.html#n4">積分規則</a>
<br>回答字數在10000字以內</td>
</tr>
</table>
<br> <table width="100%" border="0" cellpadding="0" cellspacing="0" class=zhtable>
<tr valign="top">
<td width="22%" nowrap class="f14">參考資料:</td>
<td width="78%"><input name="sn" type="text" size="50" onKeyDown="ctlSubmit(event);">
<br> <span class="style3">如果您的回答是從其他地方引用,請表明出處。</span> </td>
</tr>
</table>
<br> <table width="100%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td width="22%" class="f14"></td>
<td width="78%"><input type="submit" value="提交回答" class="bnsrh">
<input type="checkbox" name="md" value="1" style="margin-left:40px;">
匿名回答 </td>
</tr>
</table></td>
</tr>
</table>

</form>

</div>
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0" style="clear:both;"> <tr> <td height="30" align=center><a href=http://www..com/ty/right.html class="cy">&;2005</a>
<font class="cBai">Bai</font></td>
</tr>
</table>
</center>
</body>
</html>

這是你的代碼!

B. 計算機網路偏移量怎麼

答案是A,偏移量的意思就是這個數據包是從源數據包哪個地方開始的,因為IP報文有40個位元組的IP報文頭,所以1300個位元組的數據會被分成以下三個包:
A數據包:包含40個位元組的IP報文頭,0-460位元組的數據,偏移量為0;
B數據包:包含40個位元組的IP報文頭,460-920位元組的數據,偏移量為460;
C數據包:包含40個位元組的IP報文頭,920-1300位元組的數據,偏移量為920

C. 計算機網路中IP數據報的片偏移計算

答案是A,偏移量的意思就是這個數據包是從源數據包哪個地方開始的,因為IP報文有40個位元組的IP報文頭,所以1300個位元組的數據會被分成以下三個包: A數據包:包含40個位元組的IP報文頭,0-460位元組的數據,偏移量為0; B數據包:包含40個位元組的IP報文頭,460-920位元組的數據,偏移量為460; C數據包:包含40個位元組的IP報文頭,920-1300位元組的數據,偏移量為920

D. 計算機原理中偏移值怎麼求

計算機原理中偏移值的計算分為「加法」和「減法」兩種方式。
計算機匯編語言中的偏移量定義為:把存儲單元的實際地址與其所在段的段地址之間的距離稱為段內偏移,也稱為「有效地址或偏移量」。「偏移量是人工加密方式的一種解析手段,沒有更改過默認偏移量的清機加鈔員將無法在ATM上獲取開鎖密碼;每個清機加鈔員獲得的密碼為4組,每組2位數字。

E. IP地址偏移是什麼意思

IP 數據包在網路中進行傳輸,如果數據包的大小超過網路設備的MTU值,則需要進行
分段傳輸。分段偏移量用來標識數據包在該數據流中的位置,也可以理解為使用同一個IP
標識發送多個數據包時的順序號。發送主機給第一個分段數據包的偏移量賦值為0,對於其
後的分段,該偏移量的值是MTU值減去上一個IP 報頭的大小,所以我們也可以說IP 分段
偏移量是指數據包中某個分段相對與第一分段在數據包中的位置。

F. 計算機里偏移地址怎麼說

所謂偏移,就是有一個地方為標准,別位置到該位置單位數量。計算機里也如此。就是從某地址到已知地址單位數。計算機中最基本的存儲單元是位元組。

G. 請計算機數據方面高手進.請幫忙講解一下何為偏移量、偏移地址,及其作用.(定以高分相酬)

研究偏移量 就先要了解 內存數據儲存格式 與位置
通過CE來理解它 下面是CE的 數據修改方法

現在,我們來開始一步一步學習CE的使用吧,通過完成CE帶的那個TUTORIAL,按它的要求一步一步做完,如果你做得到,你就基本上算是掌握了CE的用法了。

CE帶的TUTORIAL,是英文的,不過沒關系,我在教你使用CE來完成這個TUTORIAL的同時,會把TUTORIAL上面的所有英文都翻譯出來讓你看明白,所以不用怕。

CE帶的這個TUTORIAL,是CE作者做的用來讓你練習的一個程序,它裡面也和游戲一樣,在每一個步驟都會有一些類似血(HEALTH)或子彈數量的東西,並且你點了上面某個按鈕之後,這些數值也會象游戲中一樣減少,這樣讓你象是修改游戲一樣,去找到它的地址,並按TUTORIAL上面的要求修改,當你按它的要求做到了,才讓你做下一步。而在第一步時那個輸入密碼的地方,不是說這個TUTORIAL要輸入密碼才能運行,而是有時你需要從中間某一步開始時,輸入相應的密碼會直接從某一步開始,而不用每一次都從第一步開始的。而你每完成一步之後,它也會給你相應的密碼。

好了,也許你等不及了,那麼我們現在就開始吧。

第一步:

先在開始菜單上找到CE的程序組,找裡面的「Cheat Engine Tutorial」(以下簡稱TUT),點擊運行。這個時候就出來這個TUT的對話框,上面一大段英文,而Next這個按鈕是灰的,為什麼呢?讓我翻譯一下上面的英文吧,你就明白。TUT上面的英文的譯文,我會用【】號把它們括起來。

【歡迎你來到CE的教程(V2.4)
這個教程試圖解釋在游戲中作弊的基本步驟,並讓你更熟悉CE的使用。

首先運行CE,如果你還沒運行的話(CCB:因為還沒運行,所以Next按鈕才是灰色的:)。
然後點擊"open process"按鈕(在左上角那個有電腦圖標的那個)

當進程列表窗口打開後,找到這個教程,進程的名字應該是「tutorial.exe」,除非你把它改名了。選擇它,並點擊OK。現在先不要管其他所有的按鈕,如果你喜歡,以後再研究它們。

當這一切都做對了之後,進程選擇窗口將會消失並且在CE上方會顯示進程名。

現在,點擊NEXT按鈕繼續到下一個步驟(或者輸入密碼而進到你想去的其他步驟)。


好了,上面的這些英文,我翻譯過來了,所以這一步應該不需要我再補充什麼,看這些譯文應該能明白怎麼做,就是開TUT,開CE(哪個先開都沒關系),然後點擊CE左上的那個選擇進程的按鈕,選擇這個TUT的進程,這樣就可以點NEXT進到下一步了。

第二步:

【第二步:精確數值掃描(密碼:090453)
現在你已經在CE中打開了TUT,讓我們進入到下一步吧。

你看到在這個窗口的下方的文字Health:XXX
每次你點擊"Hit me"(打我)時,你的Health(血)會減少。

要進到下一個步驟,你必須找到這個數值並把它改為1000

要找到這個數值,有幾個不同的方法,但我會告訴你一個最簡單的,'Exact Value(精確數值掃描)':
首先確認數值類型設置為2位元組或4位元組,1位元組也可以的,但當你最後在修改它時你會遇到麻煩(雖然很容易解決)(CCB:大家不會忘了吧?1位元組表示的最大數值是255,而這里要你改為1000,所以雖然用1位元組能找到,但要改卻要連前一位元組一起改,所以有點麻煩,不過不是大麻煩)。8位元組可能也可以,如果這個地址後面是0的話,不過我不敢打賭。Single, Double, 以及其他的掃描方式不行,因為它們儲存數值的方式不同。

當數值類型設置正確後,確認掃描方式設置在'Exact Value'
把血的數值填在數值輸入框上,並點擊'First Scan(首次掃描)'
過一會兒(如果你有一個非常慢的電腦的話)掃描完成並且掃描的結果會顯示在左邊(如果找到的地址的數量少於設置的數值的話)。

如果你找到多於一個地址而你不知道哪一個是正確的地址的話,點擊TUT上的'Hit me',並把新的血的數值填到數值輸入框,並點'Next Scan(再次掃描)'
重復這些步驟直到你確認你已經找到它的地址了(在地址列表上只有一個地址)

現在雙擊左邊列表上的地址,這樣會讓這個地址移動到下方的列表上並顯示它的當前數值。
雙擊(下方列表的)數值欄(或者選擇它,並按回車),並把它修改為1000。

如果一切都OK,NEXT按鈕將會變成可點擊的了,你就准備好了進入下一步了。】

這一步,也不用我再補充什麼了,這個TUT已經說得很清楚,這是使用CE的最基本功能,即找到數值,如果掃描結果太多,試圖改變數值然後再次掃描,直到結果剩下很少或者1個為止,這樣你就找到了要修改的數值的地址,並且也就能修改它了。到這一步,你已經能對付很簡單的游戲了,不過現在的大多數游戲都沒這么簡單,但至少你已經學到最基本的一步,就是精確數值的掃描和修改了。現在就點擊NEXT進入下一步吧!

第三步:

【第三步:未知初始數值(密碼:419482)
OK,看來你已經理解了怎樣使用精確數值掃描找到一個數值了,讓我們進入下一步吧。

在上一步中我們知道初始數值所以我們進行了精確數值掃描,但現在我們有一個進度條,我們不知道它開始時的數值。
我們只知道這個數值是在0到500之間,並且每次你點'Hit me'之後你會減一些血,每次減的血量會顯示在進度條的上方。

同樣的有好幾個方式找這個數值,(例如使用「減少了什麼數值」的掃描方式),但我只解釋最簡單的方式,「Unknown initial value」(未知初始數值)和「Descreased value(減少了的數值)」。
因為你不知道現在它的數值是多少,所以使用精確數值不行了,所以選擇掃描方式為"Unknown initial value",同樣的,數值類型選擇4位元組,(大多數WINDOWS應用程序使用4位元組數據)
點擊'First scan'並等它掃描完成。

當掃描完成後點擊'Hit me',你會掉一些血(掉的血量多少會在血條上方顯示幾秒然後消失,但你不需要這個數值)
現在回到CE,並選擇'Decreased Value'(減少了的數值),並點擊「Next Scan」
當掃描完成後,再次點擊'Hit me',並重復上面的步驟,直到你找到了若乾地址。

我們知道這個數值是在0到500之間,所以選擇比較象我們要的那個地址是,並把它加到下邊的列表。
現在,把它改為5000,才能進到下一步。


這一步,稍為復雜一點了,這是對那些血條之類的東西的掃描。作者說知道數值是0到500之間,但沒說是怎麼知道的。我的看法是,這東西一方面靠猜,另一方面靠試。你也許會說,比如血條或藍條,上面或下面不是有數字嗎?是的,有些有,有些沒有,但有時,血條上面有個表示血的數字,說血是548,但你就知道它是真的按這個值存在內存的嗎?不一定的哦,很多游戲的開發者,可能會用某一個方式存真正的血的數值,而用另一個方式顯示,例如,最簡單的就是,真正的血是你看到的數值的3倍,例如上面說的548,其實在內存可能是1644,而當它要顯示的時候才把1644除以3然後顯示出來,所以如果你受這個顯示數字的誤導,結果就有可能找不到真正的地址。所以關於那些以長度表示的數值,一般還是靠猜,然後根據猜測來找。還有,CCB友情提醒一下,其實有時在找到的數值比較多的時候,試試在掃描的過程中,確認數值確實沒改變的情況下,多加幾次"Unchange"(無變化)掃描,這樣可以再減掉一些無關的結果。另外,其實在這一步,如果你夠聰明,每次點了Hit me之後記住血條上面顯示的減少的數字,再在CE中輸入剛才的數字(負號不要,負號只是表示它是減少的),並選擇'Decreased value by',即「減少了什麼數值」,這樣也能更快地找到准確的地址,但這種方式是在要知道減少了多少這個具體數值才有用。好了,繼續下一步吧。

第四步:

【第四步:浮點數(密碼:890124)
在前面的教程中,我們使用位元組來掃描,但有些游戲使用了叫做「浮點數」的記數方法。
(可能是為了防止簡單的內存掃描)
浮點數是帶有小數點的一些數字(如5.12或11321.1)

如下邊你看到你的血(Health)和子彈(Ammo)。兩者都以浮點數儲存,但血是儲存為float(浮點數)而子彈是儲存為double(雙精度浮點數)(CCB:這是數據類型的術語,float和double都是浮點數,但float為單精度數,而double為雙精度數,它們在電腦裡面佔用的位元組數長度不同,而所能表示的精度也不同,看不懂不要緊,反正知道這是兩種不同的浮點數就行)。
點擊Hit me可以減少一些血,而點擊shoot(CCB:其實是Fire)可以用掉0.5的子彈。

你得把這兩者都修改到5000或者更多才能進下一步。

精確數值掃描方式在這一步能工作得很好,但也許你想試試其他的掃描方式。(CCB友情提示:掃描子彈的時候試試'Decreased value by'方式就不錯,數值填入0.5,很快就能找到)


這一步,其實也沒什麼,只是讓你熟悉不同數據類型的掃描。再次提醒一下,其實有時游戲的開發者為了不讓你太容易掃描到數值的地址,所以有時故意顛倒黑白,例如你看到有小數的地方,有時在內存卻是用整數來保存,而你明明看到是顯示為整數的數值,卻有可能在內存中是用小數來保存,所以有時不要輕易地被你看到的東西誤導,特別是在多次搜索不到結果的時候,有時要換換別的方式,不要讓狡猾的游戲開發者騙了:)。

第五步:

【代碼尋找(密碼:888899)
有時一些東西的保存位置在你重新開始游戲時會改變,甚至是在你玩的時候也會變,在這種情況下,你用二件事仍然能做出可以用的內存列表。
在這一步我會描述怎樣用尋找代碼功能。

下面的數值每次你開始這個TUT的時候會存放在不同的位置,所以一個普通的內存地址列表將會不適用。
首先找到這個數值的內存地址(你能進到這一步,我假設你已經知道怎麼做了)
當你找到地址後,右擊CE中的這個地址,並選擇「Find out what writes to this address」(找到是什麼改寫這個地址),一個窗口將會出現,上面會有一個空的列表。
然後,點擊這個TUT上的'Change value'(改變數值)按鈕,回到CE,如果一切都做得對,會看到一個地址和一些匯編代碼。
點擊這個地址並選擇Replace(替換)選項把它替換成什麼也不做的代碼,這樣還會將代碼地址加到高級選項窗口上的代碼列表(它將會一起保存,如果你保存地址表的話)。

點擊Stop,這樣游戲(CCB:指這個TUT)將會再次正常地運行下去,並點Close關閉這個窗口。
現在,點擊這個TUT上的Change value按鈕,如果一切都做對,NEXT按鈕將會變成可點擊的了。

註:如果你以足夠快的速度鎖定這個地址,這個NEXT按鈕也會變成可見的。
]】

越來越精彩了,現在不但教你找地址,還教你找那條修改這個地址的指令了,雖然,你還不太清楚怎樣手工修改找到的地址,但至少也比單純地找數值的地址並修改和鎖定要好一些了,不是嗎?別急,更精彩的還在後面呢。

第六步

【指針(密碼098712)
在上一步我解釋了怎樣用代碼尋找功能對付變化位置。但單獨用那個方法不容易找到地址來修改為你要的數值。
這就是為什麼要用到指針了:

在TUT下面你會找到兩個按鈕,一個會改變數值,另一個不但會改變數值並且還會改變數值在內存中的位置。
在這一步,你不需要真的懂匯編,但如果你懂的話會很有幫助。

首先找到數值的地址,當你找到後,再找找是什麼在改寫這個地址。再次改變這個數值,這樣會找到一個代碼地址,雙擊這個代碼地址(或者選擇它並點擊More info),這樣一個新的窗口會打開並顯示詳細的信息告訴你當這個指令運行時會發生什麼事(CCB:這個新出來的窗口上,那條指令會是紅色的)。如果這個匯編指令裡面沒有包括一個在方括弧中的東西,(CCB:說明這個不是我們要的)那麼再看看代碼地址列表中另一個代碼地址。如果有方括弧,就是說CE認為找到了數值的指針了。
回到CE主窗口,(你可以讓那個擴展信息窗口開著,但如果你關了,要記住在方括弧中間的內容)(CCB:要關了那個有代碼地址列表的窗口,才能回到CE主窗口,但擴展信息窗口可以不用關掉),並做一次4位元組的掃描,掃描擴展信息窗口告訴你的十六進制數。(CCB:就是方括弧裡面的內容,如果方括弧裡面是[eax],那麼看看擴展信息窗口下面EAX=後面的數值)。當掃描完成時它可能返回一個或幾百個地址。大多數情況下你要的會是最小(CCB:指地址最小,也就是排在列表的最上面)那一個。現在點擊手工添加內存地址(Add address manually)並在pointer(指針)這個選項上打勾。

這個窗口將會改變,並允許你填入指針的地址和偏移量。
在地址那裡填入你剛才掃描到的地址。
如果匯編指令在後面有一個計算(例如:[esi+12])那麼把數值填在後面,否則讓它保持0(CCB:就是如果有類似那樣的計算,把12這個數值填在偏移量(OFFSET)那裡,否則那裡填0),如果是更復雜的指令,看看它的算式。

舉例說明更復雜的算式:
[EAX*2+EDX+00000310] eax=4C 並且 edx=00801234.(CCB:這時各個寄存器的值到底是多少,要看擴展信息窗口下方,那裡有各個寄存器在執行這條指令時的值)
在這個情況下EDX會是數值的指針,而EAX*2+00000310則是它的偏移量,所以你要填的偏移量會是2*4C+00000310=3A8.(這些都是在十六進制下計算的,使用WINDOWS的計算器在科學方式下用十六進制計算)。

回到TUT(CCB:?),點擊OK,這個地址將會加到列表上,如果沒搞錯,將會顯示P->xxxxxxxx,xxxxxxxx會是你找到的數值的地址。如果不正確,那你一定是哪裡做錯了。
現在,使用那個指針改變數值為5000並鎖定(就是在下面的地址列表中,點最前面FROZEN那一欄的勾)它,然後(CCB:應該是這里才回到TUT吧?),點擊'Change pointer'按鈕,如果一切正確,那麼NEXT按鈕將變成可見的了。

額外信息:
在這個TUT中,事實上數值是由一個指針指向另一個指針(CCB:再指向真正的數值,就是使用了「指針的指針」,有點象繞口令:),但要完成這個TUT只需要一個指針。要找到這個指針(CCB:是說要找到指向指針的另一個指針),只要搜索是什麼改變那個指針。
如果你懂匯編,你可能會看到類似這樣的:
mov eax,[ebp-4]
mov eax,[eax+310]
這些別搞混了,只使用擴展信息窗口告訴你的數值。ebp-4指向堆棧中保存了指向這個指針的指針,但堆棧的位置總是在變化,所以不要搜索ebp,而要搜索eax的數值。


這一步,確實就夠復雜了,也許你到這一步真的有點想放棄了。不過,如果我告訴你,這是這個TUT的最後一步了,你還會想放棄嗎?呵呵,堅持啊,看不懂就問,把CCB這傢伙問倒了才好呢:)。其實這就是對付DMA的方法之一了,就是先找到地址然後找到指針,找到指針就好辦了。

【做得好,你完成了CE的教程了,再玩玩這個TUT並學習一下其他的掃描方法怎樣工作的】

==============================================================

如果你一邊看一邊做,已經做到了這一步,CCB要恭喜你,你已經領到2005年第一學期的GH小學入學證書了,呵呵。以後就是個小學生了,可要聽家長和老C的話哦,不要搗亂,不要遲到曠課,知道嗎?

其實,這個教程,本身也並不很詳細,而且本身可能由於作者疏忽並且英語也不是作者的母語吧,所以裡面也有些不正確的地方,有些地方我是根據我的理解做了修正的,雖然即使你做完成了這個教程,也不是說你就很了不起了,但至少,你已經學會了CE的基本操作了,只要再多做練習,熟悉CE的操作和各種掃描方式的使用,對付一些簡單的游戲,已經是游刃有餘了,但要更深入地使用CE的更高級的功能,還要再多學習的。

其實到這里為止,CE界面上的一些東西還沒有詳細的講過呢,不過在你做完這個教程之前,其實講了可能你也聽不太清楚,所以我會在大家熟悉了CE的操作後,再另外寫一個相對全面一點的介紹CE各個部分和各個功能的帖子。

怎麼寫了一夜,都不覺得是自己在寫東西,倒象是在翻譯呢?也許是職業病吧,告訴你,在很久很久以前,CCB還不懂電腦的時候,就是專業做翻譯的,不過不是做英語的翻譯:)。

有時真的搞不懂,我自己三分鍾就能做完的這個教程,翻譯起來再拼湊上自己的幾句,就竟然要花掉我五六個小時?也許,這就是創作和享受的差別吧。種田的人,從一棵穀苗到一把米,要花多長的時間?你卻一口就能把它吃下:)

最後,歡迎大家提問題和扔臭雞蛋,當然,扔幾個魔功120的魔靈,我也絕對不反對的。不過一定要記得扔在小青蛇,別的區,你扔了我還不想撿呢:)

補充說明:最後一步不清楚或者進行不下去的朋友,請看本主題73樓,有詳細的單獨說明。

另外,本討論主題後續的討論有一些很有參考價值的討論,而且31樓和65樓也有一些我做的補充,建議大家特別是那些在做這個教程的過程中遇到疑難的朋友,細心讀完整個討論主題的所有後續討論,也許你遇到的問題以前有人遇到過並且知道問題出在哪裡和怎麼解決了。還有,本教程是針對CE4.4所帶的TUT,新版本的TUT增加了幾個步驟,新增加有步驟在本版精華區中有相應的教程,如果你用的是新版的CE,後面幾步可以到精華區去看看。

73樓
現在我來開始單獨做最後這一步。

一,運行CE,運行TUT,在CE中指定tutorial.exe這個進程,這個我想大家都會了吧。

二,因為是單獨做,所以我輸入了密碼直接跳到最後一步,密碼是098712,輸入後點後面的OK就直接出現最後一步。

三,根據TUT的要求,我們先找到數值所在的內存地址,現在在TUT上面顯示的數字是100,於是我在CE中直接輸入100然後FIRST SCAN,這一步得到了83個地址(這個並不重要,也許你的情況不是83,也許更多,也許更少)。

四,然後,我點TUT左下的寫著「Change Value」的按鈕,現在TUT上的變成723,於是我在CE中輸入723然後NEXT SCAN,現在就只得到一個地址了,地址是00BD50BC。

五,接下來的一步就是把這個地址加到CE下邊的地址列表中,雙擊左邊的這個地址就自動加到下面的地址列表了。

六,根據TUT的要求,要我們用CE的Find out what writes to this address,於是我在下邊的地址列表中對著這個地址點右鍵,在彈出菜單上點擊Find out what writes to this address。接著會出來一個讓你確認的對話框,點YES,接著CE的主窗口右邊會多出一個新的窗口,窗口標題是"Created processes",它下面的列表框中有一個項目,內容是FFEA10D7,這個就是TUT這個進程的進程號或者叫PID,雙擊它或者選擇它後點下面的Select。這樣CE的主窗口前面又會多一個新的窗口,標題是"The following opcodes changed the selected address",現在可以把"Created processes"窗口關掉了。

七,回到TUT,現在仍然是點它左下的Change Value。因為我們現在只想改變它的值,還不想讓那個數值的地址也改變,所以只點左邊的這個按鈕。馬上你就能看到在CE前面的那個The following opcodes...那個窗口裡出現一條指令,在我這里它顯示的是004560cf 89 10 mov [eax], edx。如果是在對游戲進行實際的跟蹤而不是在完成這個教程,有時可能這個列表會有三四條指令。事實上這個就是CE告訴我們,它找到了是這條指令改變了那個地址上的數值。不過這還不夠,所以還要繼續。

八,現在我們先按The following opcodes這個窗口右下角的STOP,先停止CE對TUT的跟蹤,然後如TUT所說,雙擊這條找到的指令,或者單擊它然後點右邊的MORE INFORMATION。在出來的EXTRA INFO這個窗口,上面說的那條指令顯示為紅色,在這里我再大概說一下這條指令的意思,它是把edx這個寄存器裡面的數值,放到一個內存地址里,是哪個內存地址呢?這個內存地址就保存在eax。記得吧?加了方括弧的寄存器就不是指數值,而是指一個內存地址,因此這一步不是把edx的值放到eax這個寄存器裡面,而是把edx的數值放到保存在eax中的那個地址。因此,我們要看看剛才程序執行到這一條指令時,eax的數值是多少。在extra info這個對方框下半部,我們可以看到EAX=00BD50BC,因此我們知道EAX的值。

九,現在我們按The following opcodes這個窗口下邊的Close按鈕,先把它關掉,這樣才能回到CE的主窗口。而EXTRA INFO可以留著。現在根據TUT的要求,我們要來做一次十六進制的掃描,點擊CE主窗口的NEW SCAN,然後把輸入數值的前面那個HEX的選項打上勾,表示我們要輸入的是十六進制數,再把在EXTRA INFO中看到的數字,也就是00BD50BC這個十六進制數輸入,然後按FIRST SCAN進行掃描,馬上一個唯一的結果就出來了,在我這里搜索到的結果是00BD4E64。

十,現在我們來按TUT的要求,以指針的方面把這個結果手工加到地址列表中,並且鎖定它。在CE主窗口的右中部有個按鈕「add address manually」,點它之後會出現一個添加地址的對話框。在OK這個按鈕的上方有個Pointer的選項,因為我們是要以指針方式添加這個地址,所以這個選項要打勾。打勾之後,上面原來填地址的地方就變成問號不讓你輸入了,現在是要在下面的輸入框中輸入地址和偏移量了。地址就是上面第九步掃描得到的結果,即00BD4E64,而因為指令中方括弧中只有一個EAX,而沒有算式,所以偏移量是0,我們不用改動。同時我們也可以注意到,當我們輸入完00BD4E64之後,上面剛才不讓輸入地址的地方再在就變成00BD50BC,也就是現在數值所在的地址,說明我們這個指針確實是指向正確的位置的了。現在點確定,新添加上的地址就會出現在地址列表上,並且顯示為P->00BD50BC,表示這是一個指針,它當前指向的內存地址是00BD50BC。現在來試試TUT下邊另一個按鈕,就是改變數值同時改變內存地址的那個「Change pointer」按鈕,看看地址變了我們的指針是否還會正確指向它新的地址。確實我們按這個按鈕之後,地址列表上的地址P->後面的內容變了,就是說現在TUT把這個數值放到新的地址了,不過地址表上那個數值仍然和TUT上顯示的數值一樣。經過這一步的測試我們也可以更好地增加對DMA和指針方面的認識。現在只要按TUT的要求把這個地址前面的FROZEN打上勾,再把它的數值改為5000,然後點TUT上的Change pointer按鈕,NEXT就出現了。

其實我想大家在這一步卡住 的原因,一方面是可能對DMA和指針這方面的內容還不夠了解,另一方面是沒認真看TUT上的文字,我相信大家按照我上面說的步驟做一遍應該就覺得不會那麼困難了。

由於TUT中找到的指令比較簡單,沒有偏移量,因此我在這里再補充一點關於偏移量方面的內容。假設剛才我們上面找到的指令是mov [eax+3C], edx,並且假設EXTRA INFO窗口上的數值和上面說的一樣的話,那麼,我們要掃描的就是eax+3C,也即方括弧中的數值了。上面例子中eax的值是00BD50BC,那麼eax+3C=00BD50BC+3C=00BD50F8,在第九步要掃描的就是這個00BD50F8了,而在最後手工添加地址到地址列表的時候,地址要填00BD50BC,偏移量要填3C。

還有,在這個例子中,我們可以把TUT中那個數值看成是游戲中的HP的值,那麼,上面的00BD50BC就是在某一時刻HP所在的內存地址,這個地址是會改變的(例如我們點了Change pointer按鈕時它就會變化),而00BD4E64這個地址就是這個HP的指針,不管地址怎麼變化,但變化後的新地址都保存在00BD4E64這個指針位置上。所以我們只要找到指針,不管內存地址怎麼變,我們都能找到數值。從這個例子也可以讓大家更好的了解指針到底是怎麼一回事。

H. ip數據報中的片偏移怎麼計算的

偏移量的意思是這百個數據包是從源數據包哪個位置開始的,因為IP報文有40個位元組的IP報文頭。度所以問1300個位元組的數據會被分成以下三個包:

1、A數據包:包含40個位元組的IP報文頭,答0-460位元組的數據,偏移版量為0;

2、B數據包:包含40個位元組的IP報文頭,460-920位元組的數據,偏移量為權460;

3、C數據包:包含40個位元組的IP報文頭,920-1300位元組的數據,偏移量為920。

(8)計算機網路數據偏移怎麼看擴展閱讀:

IP首部的可變部分就是一個可選欄位。選項欄位用來支持排錯、測量以及安全等措施,內容很豐富。

此欄位的長度可變,從1個位元組到40個位元組不等,取決於所選擇的項目。某些選項項目只需要1個位元組,它只包括1個位元組的選項代碼。但還有些選項需要多個位元組,這些選項一個個拼接起來,中間不需要有分隔符,最後用全0的填充欄位補齊成為4位元組的整數倍。

增加首部的可變部分是為了增加IP數據報的功能,但這同時也使得IP數據報的首部長度成為可變的。這就增加了每一個路由器處理數據報的開銷。實際上這些選項很少被使用。新的IP版本IPv6就將IP數據報的首部長度做成固定的。

網路-IP數據報

I. 起始地址偏移量是什麼,怎麼看 計算空間大小時,那還得考慮對齊,但我不知道,結構的起始地址偏移量怎

個操作系統都有自己的默認內存對齊系數
內存對齊可以用一句話來概括:
「數據項只能存儲在地址是數據項大小的整數倍的內存位置上」
例如int類型佔用4個位元組,地址只能在0,4,8等位置上。
同樣的:double類型只能在0816等位置上。
char0
int8
double16
char24
size=24
structxx{
charb;0
chard;1
inta;4
doublec;16
};
size=16