1. 我想在MySQL中,造一些假數據,怎麼弄最快
你是指javaDBDerby嗎?Derby資料庫是一個純用Java實現的內存資料庫,屬於Apache的一個開源項目。由於是用Java實現的,所以可以在任何平台上運行;另外一個特點是體積小,免安裝,只需要幾個小jar包就可以運行了。Derby資料庫有兩種運行模式:1)內嵌模式。Derby資料庫與應用程序共享同一個JVM,通常由應用程序負責啟動和停止,對除啟動它的應用程序外的其它應用程序不可見,即其它應用程序不可訪問它;2)網路模式。Derby資料庫獨佔一個JVM,做為伺服器上的一個獨立進程運行。在這種模式下,允許有多個應用程序來訪問同一個Derby資料庫。在Apache上,Derby有4種發布包,這里以bin發布包為例。bin發布包中含有包含了執行derby資料庫工具、設置derby資料庫環境的腳本文件、Demo、jar文件等。希望幫到你……1、安裝Derby資料庫只需要從Derby官方網站下載Derby的zip或者tar包,解壓就可以了。這里以db-derby-10.4.1.3-bin版本為例,解壓後得到以下目錄:1)bin目錄,包含了一些工具腳本和設備環境的腳本;2)demo目錄,包含了一些實常式序;3)docs目錄,包含了Derby的文檔;4)javadoc目錄,包含了Derby的API文檔;5)lib目錄,包含了Derby資料庫的jar文件;6)test目錄,Derby的一些測試jar包;2、使用Derby腳本Derby提供了幾個腳本來操作Derby資料庫,在使用這些腳本前,你必須先設置好Derby的運行環境。下面的例子都是在命令行下設置環境變數,這些設置都是臨時的,如果你新開一個命令行窗口,則需要重新設置一遍,如果想要使環境變數永久生效,可以在我的電腦中進行設置。首先設置好DERBY_HOME這個環境變數,為DERBY_HOME指定你的derby目錄,假如你的derby解壓到了E:\db-derby-10.4.1.3-bin目錄下,則可以在命令行中如下設置:setDERBY_HOME=E:\db-derby-10.4.1.3-bin將DERBY_HOME\bin目錄添加到PATH環境變數中:setpath=%DERBY_HOME%\bin;%PATH%這樣可以簡化你稍後在命令行中的輸入,否則你每次都必須使用腳本的全路徑或者你必須到DERBY_HOME\bin目錄中才能執行腳本。最後需要Derby的jar包添加到classpath環境變數中,在DERBY_HOME%\bin目錄中提供了幾個腳本用於設置classpath,以簡化你手工在classpath中添加jar包的麻煩:1)setEmbeddedCP。當使用內嵌模式來運行Derby時,可以使用該腳本來設置。該腳本將derby.jar和derbytools.jar添加到環境變數中;2)setNetworkServerCP。當使用網路模式來運行Derby時,用該腳本來設置Derby服務端的classpath變數。該腳本將derbynet.jar添加到環境變數中;3)setNetworkClientCP。當使用網路模式來運行Derby時,用該腳本來設置Derby客戶端的classpath變數。該腳本將derbyclient.jar和derbytools.jar添加到環境變數中。一般只有當你通過derbyrun.jar來運行Derby工具時才會使用這些腳本。Derby提供了三個工具腳本:1)sysinfo;2)ij;3)dblook。運行這三個腳本時,如果你沒有設置classpath環境變數,這些腳本會自動進行設置。1)sysinfo使用sysinfo可以顯示你的Java環境信息和Derby的版本信息。使用方法就是在命令行下直接輸入:sysinfo.bat2)dblook使用dblook可以將全部或者部分資料庫的DDL定義導出到控制台或者文件中。使用方法:dblook.bat–d[Options]3)ij使用ij工具來進行資料庫交互,執行SQL腳本,如查詢、增刪改、創建表等等。在命令行下輸入:ij.bat即可啟動ij工具,然後就可以開始執行SQL腳本了。當要退出ij工具時,在命令行下輸入exit;即可。3、使用ij腳本1)運行內嵌模式的Derby資料庫在命令行中輸入ij.bat後啟動ij工具。然後通過如下命令創建資料庫,並與資料庫創建連接:connect『jdbc:derby:firstdb;create=true』;通過connect命令可以與指定資料庫創建連接,通過一個JDBCURL來指定與哪個資料庫創建連接。ij命令是不區分大小寫的。參數中jdbc:derby是Derby資料庫的驅動協議;firstdb是資料庫命,由於沒有指定路徑,資料庫將會被創建在當前你命令行下所在的目錄下;create=true表示如果資料庫不存在,則創建該資料庫;「;」是ij命令的終止符。當資料庫創建成功時,Derby會在當前你命令行下所在的目錄下創建一個與資料庫命一致(這里是firstdb)的目錄,其中存放了資料庫的文件。與資料庫連接上後,就可以開始執行SQL腳本了,如創建一個表格:createtablefirsttable(idintprimarykey,namevarchar(20));然後插入記錄:insertintofirsttablevalues(1,『Hotpepper』);也可以執行查詢:select*fromfirsttable;也可以通過run命令來執行sql文件:run'E:\derby\demo\programs\toursdb\ToursDB_schema.sql';最後通過exit;來退出ij工具。你可以在當前你命令行下所在的目錄中找到一個derby.log的日誌文件,derby在其中記錄的資料庫啟動、關閉的信息。2)運行網路模式的Derby資料庫這種模式下,需要使用兩個控制台窗口,一個用於啟動Derby資料庫服務端,另一個做為訪問Derby資料庫的客戶端。可以通過DERBY_HOME\bin目錄下的startNetworkServer.bat來啟動Derby資料庫服務端,只需要在命令行中輸入:startNetworkServer.bat資料庫就啟動了,啟動成功會在控制台輸出如下信息:已使用基本伺服器安全策略安裝了安全管理程序。ApacheDerbyNetworkServer-10.4.1.3-(648739)已啟動並且已准備好2008-09-0600:38:12.540GMT時在埠1527上接受連接在另一個控制台使用ij命令訪問Derby資料庫服務端,在輸入ij.bat啟動ij工具後,通過如下命令建立與服務端的連接,並創建一個資料庫:connect'jdbc:derby://localhost:1527/seconddb;create=true';參數中的資料庫命部分和內嵌模式不同,這里使用了「//localhost:1527/」,訪問網路模式的URL需要指定伺服器的IP地址和埠,其它的就和內嵌模式一樣了。與服務端連接上後,就可以開始執行SQL腳本了,如創建一個表格:createtablefirsttable(idintprimarykey,namevarchar(20));然後插入記錄:insertintofirsttablevalues(1,『Hotpepper』);也可以執行查詢:select*fromfirsttable;也可以通過run命令來執行sql文件:run'E:\derby\demo\programs\toursdb\ToursDB_schema.sql';最後通過exit;來退出ij工具4、在Java應用程序中訪問Derby資料庫使用Java代碼訪問Derby資料庫與訪問其它資料庫的區別如下:1)JDBC驅動的不同;2)資料庫連接URL的不同;3)在訪問內嵌模式資料庫時,需要顯示關閉資料庫。下面分別實例訪問內嵌模式和網路模式Derby資料庫的代碼1)訪問內嵌模式Derby資料庫Stringdriver=「org.apache.derby.jdbc.EmbeddedDriver」;Stringurl=「jdbc:derby:firstdb;create=true」;Connectionconn;try{Class.forName(driver);conn=DriverManager.getConnection(url);}catch(Exceptione){……}finally{……DriverManager.getConnection("jdbc:derby:;shutdown=true");}建立好連接後,其它的數據操作,如查詢、更新數據都和其它資料庫一樣,這里不詳述。有一點需要注意,通過Java應用程序訪問內嵌模式Derby資料庫時,應用程序有責任需要在程序結束時關閉Derby資料庫,如上面代碼finally中的DriverManager.getConnection("jdbc:derby:;shutdown=true");shutdown參數用於關閉Derby資料庫,如果url中指定了資料庫命,則只會關閉指定的資料庫,而不會關閉整個Derby資料庫。資料庫關閉成功時,Derby會拋出一個錯誤碼為XJ015和一個08006的異常表示關閉成功,應用程序可以不處理這兩個異常。2)訪問網路模式Derby資料庫網路模式和內嵌模式的不同出在於:A.資料庫連接URL的不同;B.應用程序退出時無效關閉Derby資料庫;C.資料庫驅動的不同;Stringdriver=「org.apache.derby.jdbc.ClientDriver」;Stringurl=「jdbc:derby://localhost:1527/firstdb;create=true」;Connectionconn;try{Class.forName(driver);conn=DriverManager.getConnection(url);}catch(Exceptione){……}由於網路模式下,Derby資料庫做為一個獨立運行的資料庫,可以被多個應用程序所訪問,所以應用程序在運行結束時不應該關閉Derby資料庫。
2. 什麼是掛如何製作的
外掛是指某些人利用自己的電腦技術專門針對一個或多個網路游戲,通過改變網路游戲軟體的部分程序,製作而成的作弊程序。現在隨著游戲官方對外掛的抵制,游戲本身也有了超強的自動檢測外掛的功能,但製作外掛的技術也不斷提高著,現在最流行的就是在游戲中用封包和抓包工具對游戲伺服器提交假的數據從而改變游戲人物能力。 另外,外掛也指:單位形的作戰武器系統在其原本的作戰單位上添加附加的用於輔助作戰單位作戰的工具、器具。選擇一款目標游戲製作網游外掛的第一步就是選定一款游戲。目標游戲不是亂選的,裡面也有很多講究。第一點,選擇自己熟悉的游戲類型。如果你之前已經做過網游外掛,那選擇一款類似的游戲會給你節省很大的時間,如果是第一次製作的話,那也選一款自己熟悉的游戲類型。第二點,盡量不要選擇熱門的游戲,因為熱門的游戲往往意味著競爭對手的增多,除非你對自己的技術以及營銷手段很有信心。第三點,不要小看玩家人數少的游戲,游戲規模小,競爭也小。一款游戲,只要你能形成吃獨食的場面,再加上營銷搞得好的話,其中的利潤將超過你的想像。但要注意,最好不要碰上因為游戲規模過小導致游戲廠商把游戲關閉的衰事。第四點,盡量選擇尚在測試期內的游戲,這使得你有充足的時間製作外掛,同時也要觀察該款游戲在市面上是否有其他外掛出現。這樣等游戲正式上線時,你的外掛也差不多可以推出了。2 目標網游初步分析1 確定要製作的網游外掛類型目標網游選定好之後,你首先要做的第一件事就是確定你要製作的網游外掛類型。網游外掛雖然統稱為外掛,但細分的話可以分為以下二類:內掛和離線外掛。內掛就是在游戲內呼出的網游外掛,它依賴於網遊客戶端,所使用到的技術主要包括滑鼠和鍵盤的模擬,內存特殊變數區域的搜索,或者是掛鉤游戲沖旁的收包函數和模擬游戲的發包函數。離線外掛就是指不依賴於客戶端,能獨立模擬客戶端和游戲伺服器進行通訊的網游外掛。離線外掛的實現方式只有一種,就是模擬網遊客戶端的收包和發包過程。總體而言,內掛的整體製作難度比離線外掛要簡單一些,但離線外掛製作要比內掛更有趣,而且用起來也更方便,不必啟動龐大的客戶端程序。所以下面主要是以離線外掛的製作流程為主進行講解網路截包工具(Microsoft Network Monitor)的使用簡介目標網游的初步分析最主要的工作是分析游戲初始階段網遊客戶端和伺服器之間的數據通訊。這一階段主要是指從輸入用戶名和密碼開始登錄游戲到玩家人物出現在游戲場景中散滲橡這個階段。這是開始階段最關鍵的一個步驟,如果你能夠成功破解網游數據通訊部分的加密,並用DEMO程序成功模擬整個喊塵登錄過程,那你幾乎就已經成功了一半了。如果無法破解加密的話,那就需要趕快重新選定一款游戲了。關於初步分析,首先要確定網遊客戶端和伺服器之間的大致通訊過程,最起碼你要知道客戶端連接的是哪一個伺服器,連接的埠是多少,在登錄的過程中發送和接受了幾個包?而要了解這些東西,你就要使用到網路截包工具了。我使用的是Microsoft Network Monitor V3.1來做示範簡單好用。大家可以到下面的網址去下載該軟體。 http://support.microsoft.com/kb/933741/zh-cn下面,我簡單介紹一下該軟體的使用方法。安裝好程序之後,運行程序,點擊【Start Page】頁的【Create a new capture tab】按鈕,創建一個新的數據捕獲會話,點擊工具欄上綠色的開始按鈕,就可以開始捕獲網路數據了各個窗口的作用如下:Network Conversations下面有二項:My Traffic代表本機作為發送方或者接收方參與的網路數據包。選中該項後,Frame Summary中將僅僅列出與本機相關的網路數據包。Other Traffic 則是網路上其他機器之間的網路數據包。因為正好在攔截期內經過本機,所以被順道攔截了下來。Capture Filter 是設定攔截數據時的過濾器。Display Filter 是對攔截結果的過濾設定。Select Networks 是設定需要攔截本機上的那一個網路。Aliases用於設定友好名。Frame Summary 中列出的是符合條件的所有網路數據包Frame Details則是當前選中的網路數據包的詳細結構Hex Details 則是當前選中網路數據包的二進制格式3 分析初始階段C/S網路數據通訊簡單介紹了網路截包工具的使用之後,下面我們就開始初步分析了。在這篇文章里,我以某款網路游戲作為假定目標。(具體是哪一款,大家就不要深究了。)首先在【aliases】窗口中將本地客戶端和游戲伺服器分別命名為:MyComputer和GameServer。注意不要忘了點擊【apply】按鈕。數據包列表就是目標網游從輸入用戶名和密碼登錄游戲到人物出現在游戲中(然後立即退出。)這一階段客戶端和伺服器之間的所有往來的數據包MyComputer è GameServer .S...... 客戶端請求建立連接MyComputer ? GameServer .S..A... 伺服器同意建立連接MyComputer è GameServer ....A... 連接建立以上三個包稱為建立TCP連接的三段式握手。當你調用Socket類的Connect方法時就會產生上面的三個TCP包。下面是連接斷開的過程。MyComputer è GameServer F...A... 客戶端請求斷開連接MyComputer ? GameServer ....A... 伺服器同意斷開請求MyComputer ? GameServer F...A... 伺服器請求斷開連接MyComputer è GameServer ....A... 客戶端同意斷開請求調用Socket類的Disconnect方法時就會產生上面的四個TCP包。在驗證用戶名和密碼的過程中,客戶端和伺服器之間總共連接了二次,所以在之後的外掛程序編寫過程中,我們同樣也要連接二次。TCP Flag為...PA...表示該TCP包內帶有數據,而....A...則是回應包,用於回應上一個包的發送方:我已經收到你上一個包了,它本身不帶數據。所以一般一個...PA...包都有一個對應的....A...包(例如編號為266和269),但如果回應的時候,發現正好有數據要發送,則可以將回應包摻雜在發送包中發送過去(例如編號為273的回應包就摻雜在275這個包內)。下面觀察客戶端和伺服器之間的實際數據往來。1. 客戶端連接到伺服器2. MyComputer ? GameServer 伺服器給客戶端發送7位元組的數據3. MyComputer è GameServer 客戶端給伺服器發送90位元組的數據4. MyComputer ? GameServer 伺服器給客戶端發送65位元組的數據5. MyComputer ? GameServer 伺服器給客戶端發送48位元組的數據6. MyComputer è GameServer 客戶端給伺服器發送48位元組的數據7. MyComputer ? GameServer 伺服器給客戶端發送208位元組的數據8. 伺服器斷開連接9. ……以上就是第一次連接的大致過程。觀察每個包內的具體傳輸數據是沒有意義的,因為網游之間的通訊肯定是加密的,你每次攔截下來的數據都會不一樣。通常游戲伺服器給客戶端發送的第一個包都是KEY包(例如上面的7位元組的包),客戶端在接收到KEY包之後執行相應的數據加密初始化。所以接下來的任務就是根據已掌握的數據通訊規律,對游戲客戶端的加密演算法進行破解了。4 游戲加密演算法破解網路游戲所使用的網路通訊函數肯定也是微軟操作系統所提供的標准API函數,所以通常在接受網路數據的API函數中下一個斷點,當接收到第一個7位元組包時,斷點激活,然後逐漸跟進去,查看游戲客戶端是如何處理該段數據的,然後我們在外掛中依樣畫葫蘆,進行同樣的處理。整個破解過程相當的枯燥無聊,因為面對的都是匯編代碼也涉及本人專長,所以只能大致的說一下。5 DEMO製作破解完成之後,就要製作一個能夠登錄游戲的DEMO了,用於確認游戲加密演算法的破解是否成功。至於選擇何種編程語言和工具製作外掛則沒有限定,常用的如VC,Delphi,VB…等都可以,具體的編程在此就不具體說明了,可以根據個人的喜好所選擇,下面談談網游中數據通訊的基本單位:指令包。所謂指令包就是代表了一個最基本含義的數據包。比如游戲人物向左移動時,游戲客戶端就會向伺服器發送一個指令包(人物走路包),通知伺服器更新游戲人物的坐標。當游戲人物周圍出現一個新的怪物時,伺服器會向客戶端發送一個指令包(怪物出現包),通知客戶端在畫面上繪制出該怪物。所以,可以說指令包就是客戶端和伺服器之間所使用的通訊語言,而外掛的工作就是解析該種語言,然後模擬客戶端和伺服器端進行通訊。各個游戲定義的指令包的格式都不一樣,但一般一個指令包通常含有以下幾個元素:XX XX XX XX XX XX XX ...XX XX 紅色部分通常與該指令包的長度相關。他可能是指整個指令包的長度,也可能是指他餘下部分指令的長度,這需要根據游戲的具體情況來確定。之所以專門要用一定空間來說明指令包的長度,這是由SOCKET通訊的機制所決定的。SOCKET連接建立好之後,通過SOCKET連接讀取到的數據並不是以指令包為分割的。有可能一個TCP包中正好包含一條指令包,也有可能僅僅包含指令包的一部分(如下圖所示)。所以這時候就要根據指令包長度將收到的網路數據截取成單個的指令包。有一點需要指出的是:剛開始的幾個數據包不一定遵循一定的規律,這時候就需要進行特殊處理(因為在開頭,所以也比較好處理),而之後的數據包肯定是遵循指令包格式的,不然就亂套了。XX XX 藍色部分通常稱為指令包標識,用於說明該指令包是屬於哪一種類型。比如怪物攻擊包,玩家的移動包……,游戲客戶端根據收到的相應指令包採取不同的動作。事實上,在客戶端程序的內部就是一個很大的Sw