
最常見的加殼軟件有3個:ASPACK、UPX、PEcompact。畢竟它們是主流,據統計,
用它們加殼的軟件約占市面所有軟件的90%!其他不常用的加殼軟件有ASPROTECT、
PETITE、NEOLITE、TELOCK等,因為使用較少,本文不作介紹。
軟件最常見的編程語言是Delphi,VisualBasic(簡稱VB),VisualC++(簡稱VC)。了解些編
程的知識,會讓破解更加輕車熟路。
好了,讓我們來進行破解的第一步——偵測出軟件的“殼”和軟件所用的編程語言。具備這
種“慧眼”的軟件主要有以下4個:fileinfo、language2000、Peid安全教育總結 、pe-scan。下面詳細介紹
一下它們的使用方法,希望大家能夠熟練掌握,并利用它們撥開殼的層層迷霧,揭開殼的神
秘面紗。
1.偵測“殼”的軟件fileinfo(/),簡稱fi,偵殼能力極強。它有兩種
使用方法,采用其中一種即可。屆時,殼的信息為綠色字,顯示在左上角。
第一種使用方法:把待偵測“殼”的軟件(如)和位于同一目錄下,執行Windows
開始菜單的“運行”,鍵入“fiaa”即可。
第二種:讓待偵測殼的軟件(如)和位于同一目錄下,將xx的圖標拖到fi的圖標
上。
最常見的加殼軟件有3個:ASPACK、UPX、PEcompact。畢竟它們是主流,據統計,用它
們加殼的軟件約占市面所有軟件的90%!其他不常用的加殼軟件有ASPROTECT、PETITE、
NEOLITE、TELOCK等,因為使用較少,本文不作介紹。
軟件最常見的編程語言是Delphi,VisualBasic(簡稱VB),VisualC++(簡稱VC)。了解些編
程的知識,會讓破解更加輕車熟路。
好了,讓我們來形容等待的成語 進行破解的第一步——偵測出軟件的“殼”和軟件所用的編程語言。具備這
種“慧眼”的軟件主要有以下4個:fileinfo、language2000、Peid、pe-scan。下面詳細介紹
一下它們的使用方法,希望大家能夠熟練掌握,并利用它們撥開殼的層層迷霧,揭開殼的神
秘面紗。
1.偵測“殼”的軟件fileinfo(/),簡稱fi,偵殼能力極強。它有兩種
使用方法,采用其中一種即可。屆時,殼的信息為綠色字,顯示在左上角。
第一種使用方法:把待偵測“殼”的軟件(如)和位于同一目錄下,執行Windows
開始菜單的“運行”,鍵入“fiaa”即可。
第二種:讓待偵測殼的軟件(如)和位于同一目錄下,將xx的圖標拖到fi的圖標
上。
結果,如圖2所示,軟件是用UPXv0.94軟件加的“殼”,其中0.94為UPX
的版本號。2.同時偵測“殼”和編寫語言的軟件language2000(兩個功能合為一體,太酷了)。
筆者特別推薦使用language2000中文版,它完全是傻瓜式軟件,上手很容易,運行后選取
待偵測“殼”的軟件即可,圖3為運行界面。
由圖3所示,軟件是用VisualBasic6.0編寫的,并由UPX軟件加的“殼”。
3.偵殼新秀PEid中文版,具有華麗的圖形界面。外殼整合(添加到鼠標右鍵)功能令使用
更加方便,支持拖放操作。配置時,務請將“擴展到鼠標右鍵”打上對號。
其使用方法是,鼠標點住,按鼠標右鍵,選"使用PEid掃描"即可;“殼”的信息就
顯示在底部。
如圖4所示,軟件是用ASPack2.11加“殼”,2.11為ASPack的版本號
4.偵殼新霸主pe-scan增添了自動去“殼”功能,開拓了偵“殼”軟件新的發展方向,從而
奠定了其新霸主地位。如圖5,運行后把左下角的shell打上對號就整合到了右鍵菜單。
如圖5所示,軟件是用telock0.60加“殼”,0.60為telock軟件的版
本號。
用工具軟件為軟件脫“殼”
根據前面的內容偵測了一個軟件的“殼”后,接下來我們就需要把它的“殼”脫去了,以便
還原軟件的本來面目。注意:若偵測出它根本沒加“殼”,可省掉這步。不過,現在沒加“殼”
的軟件已經很少了。
根據“殼”的流行程度,常用的脫“殼”軟件主要有3個:AspackDie、UPX、unpecompact,
分別針對前面提到的3個加殼軟件。下面介紹它們的使用方法:
Die能脫ASPack的“殼”,是傻瓜式軟件,使用方法類似language2000,運行
后選取待脫殼的軟件即可輕松完成。
脫UPX“殼”,UPX自身具備加殼、脫殼功能。其方法為:讓待脫“殼”的軟件(如)
和位于同一目錄下,執行Windows開始菜單的“運行”,鍵入“”
即可。
mpact脫的是Pecompact的“殼”。
傻瓜式軟件,使用方法類似AspackDie,運行后選取待脫殼的軟件即可。
破解基礎知識和16進制編輯器
1.機器碼,又稱機械碼。當你用16進制編輯器打開、編輯EXE等可執行文件時,你會看到
許許多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F組成的數碼,這些數碼
就是機器碼。修改程序時必須通世界上陰莖最長的人 過修改機器碼來修改EXE等可執行文件。
2.16進制編輯器。16進制編輯器是編輯、修改EXE等可執行文件的軟件。常用的有
UltraEdit、WinHex等。由于這兩款軟件非常有名,網上有很多介紹它們使用的文章,限于
篇幅,不再贅述。
3.破解時常用的匯編指令如下,匯編較弱者可先強行背住,以后就可慢慢理解了。
cmpa,b//比較a與b
mova,b//把b的值送給a,使a=b
ret//返回主程序
nop//無作用,英文"nooperation"的簡寫,意思是"donothing"(機器碼90)(解
釋:ultraedit打開編輯exe文件時看到90,等同于匯編語句nop)
call//調用子程序,子程序以ret結尾
je或jz//若相等則跳(機器碼74或0F84)
jne或jnz//若不相等則跳(機器碼75或0F85)
jmp//無條件跳(機器碼EB)
jb//若小于則跳
ja//若大于則跳
jg//若大于則跳
jge//六年級作文變形記 若大于等于則跳
jl//若小于則跳
jle//若小于等于則跳
popxx//xx出棧
pushxx//xx壓棧
更為詳細的指令請查閱匯編書籍。
4.破解常見修改,參看表1。
種不同情況的不同修改方法
為了破解軟件的注冊和功能限制,歸根結底其方法就是在兩種不同情況下對程序所進行的修
改,具體總結如下。
1)修改為jmp(其示意圖見圖6)
je(jne,jz,jnz)=>jmp相應的機器碼為EB(意思是出錯信息向上找到的第一個跳轉),
jmp的作蜜蜂英文 用是絕對跳,無條件跳,從而跳過下面的出錯信息。例如:
xxxxxxxxxxxx出錯信息,如注冊碼不對,sorry,未注冊版不成功,“FunctionNotAvaible
inDemo”,“CommandNotAvaible”或“Can’tsaveinShareware/Demo”等,我們
希望把它跳過,不讓它出現。
??
xxxxxxxxxxxx正確路線所在,直接跳轉到這里。
(圖6)
(2)修改為nop(其示意圖見圖7)
je(jne,jz,jnz)=>nop相應的機器碼90(正確信息向上找到的第一個跳轉),nop的作
用是抹掉這個跳轉,使這個跳轉無效,失去作用,從而使程序順利來到緊跟其后的正確信息
處。例如:
xxxxxxxxxxxx正確信息,如注冊成功,謝謝您的支持等,我們希望它不被跳過,讓它出現,
所以程序一定要順利來到這里,不能跳轉。
??
xxxxxxxxxxxx出錯信息,我們希望不要跳到這里,不讓它出現!
(圖7)
針對上面兩點,筆者總結了個爆破無敵口訣背會此口訣,你將天下無敵,以后慢慢琢磨,
仔細體會,收益多多,千萬不要錯過哦!
一條(跳)就死,九筒(90)就胡(對應上面的(2)――修改為nop)
一條(跳)就胡,一餅(EB)伺候(對應上面的(1)――修改為jmp)
妻死(74)便妻無(75)
爸死(84)便爸無(85)
winhex腳本命令教程--中文版<轉>_好好學習_百度空間
計算機2010-02-2022:09:24閱讀144評論0字號:大中小
腳本命令適用的環境比較多。腳本文件中的注釋以為雙斜杠開頭。腳本
支持的最長255字符的參數。有疑點的地方是十六進制,文本字符串(甚
至10進制數值)都可以作為參數,你可以使用引號強制轉換數字參數
為文本參數。如果文本或者變量名中存在空格,則引號是必須的,在引
號中的所有字符都被被識別成一個參數而存在。
當在winhex中使用數學表達式的時候,可以引用數學表達式,但是必
須用括號括起來。在數學表達式中不能有空格。同樣可以在數學表達式
中應用數字變量。
支持的操作有,加法(+),減法(-),乘法(*),整除(/),模除
(%),邏輯運算符AND(&),OR(|),以及XOR(^)。
以下是有效的數學表達式:(5*2+1),(MyVar1/(MyVar2+4)),or
(-MyVar)。
以下是目前支持的腳本命令的詳細描述以及使用實例。
Create"D:"1000
創建一個1000字節的新文件,如果已經存在同名文件,則將其覆蓋。
Open"D:"
Open"D:*.txt"
打開指定格式的文件,如果通配符為“?”則winhex會讓用戶選擇要打開
的文件。
OpenC:
OpenD:
打開指定的邏輯驅動器。如果通配符為“:?”則winhex會讓用戶選擇要打
開的邏輯驅動器或者磁盤。
Open80h
Open81h
Open9Eh
打開指定的物理介質。軟盤的為00h,硬盤與u盤為80h,光盤為9Eh。
可以增加第二個參數來設定文件或者介質的編輯模式(“in-place”或者
“read-only”)
CreateBackup
為活動文件的當前狀態創建WHX備份。
CreateBackupExtrue"F:"
備份當前活動磁盤中從0扇區到100000扇區的數據。備份文件將自動
分割成650M大小。并且選擇了壓縮選項。輸出文件的路徑以及名稱作
為最后的參數寫入。
如果備份文件不需要分割,則第三個參數的數值該為0即可。如果不啟
動壓縮功能則將“true”改為“fal”。如果需要自動分配文件名以及文件路
徑則最后的參數表示為“""”即可。
Goto0x128
GotoMyVariable
將光標的位置移動到偏移量0x128位置(16進制表示)。同樣也可以
用數字變量(最長8字節)來定義光標移動的位置。Move-100
將當前光標的位置向后移動100字節(16進制)。
Write"Test"
Write0x0D0A
WriteMyVariable
在光標當前位置(以覆蓋模式)寫入ASCII字符“Test”或者兩個字節的
16進制數“0D0A”。這里同樣可以寫入數字變量中的值。同時將光標移
動到被覆蓋部分的后面。當到達文件的結尾時,將在文件尾部添加空字
節以完成操作。下一個寫命令將不會在文件尾巴Write2和“Write”的功
能類似,當時當到達文件結尾的時候,不會在文件添加空字節。
SoitisnotsafetoassumethatWrite2alwaysmovesthecurrent
positionforwardbythenumberofbytes
"Test"
功能與“Write”類似,但是在“inrt”模式只能應用于文件。
ReadMyVariable10
從當前位置讀入10個字節的數據到“MyVariable”變量中。如果變無盡空虛歌詞 量不
存在,它將會創建一個。winhex同時可以支持48個不同的變量。
另一個創建變量的命令是“Assign”。
ReadLnMyVariable
從當前位置讀入一整行的數據到“MyVariable”變量中直到遇到換行符。
如果變量已經存在了,則變量的大小將會被從新調整。
Clo
不保存的關閉當前活動窗口。
CloAll
不保存的關閉所有窗口。
Save
保存當前活動窗口中打開的文件或磁盤的修改。
SaveAs"C:"
將當前活動窗口打開的文件另存為指定目錄下的文件。如果通配符為
“?”,則winhex會讓用戶自己選擇保存的路徑以及文件名。
SaveAll
保存所有窗口中修改。
Terminate
中斷腳本的執行。
Exit
中斷腳本的執行并且關閉winhex。
ExitIfNoFilesOpen
如果在winhex中沒有打開的文件將終止腳本文件的執行。
Block100200
Block"MyVariable1""MyVariable2"
在當前活動窗口中定義一個偏移量從100到200的選塊(10進制)。
下一行命令表示定義從變量"MyVariable1"到"MyVariable2"的選塊
(最長8字節)
Block10x100
在偏移量0x100處定義一個字節的選塊。同樣可以使用變量。Block2
0x200
定義一個從開頭到偏移量0x200部分的選塊。同樣可以使用變量。
Copy
將當前選塊復制進剪切板中。如果沒有定義選塊,其功能和編輯菜單中
的復制命令相同。
Cut
將當前選塊中的文件剪切到剪切板中。
Remove
將當前選塊中的數據從文件中移除。
CopyIntoNewFile"D:"
CopyIntoNewFile"D:File+MyVariable+.dat"
將當前選塊中的數據復制進指定的新文件,而不復制進剪切板。如果沒
有定義選塊,其功能和編輯菜單中的復制命令相同。同樣可以復制磁盤
扇區中的數據作為一個新文件。新建的文件不會自動在winhex的編輯
窗口中打開。可以在“+”之間加入變量,變量名將被解釋為不大于2^24
(16M)的整數。通常在循環應用以及文件恢復中比較有用。
Paste
將剪切板中的數據粘貼入文件中,并且不改變光標當前位置。
WriteClipboard
將剪切板中的數據寫入文件或磁盤扇的當前位置中,不改變光標當前位
置,并且覆蓋從當前光標所在位置以后的數據。
ConvertParam1Param2
將當前活動文件中的數據從一種格式轉換成另一種格式。有效的參數是
ANSI,IBM,EBCDIC,Binary,HexASCII,IntelHex,MotorolaS,Ba64,
UUCode,LowerCa,以及UpperCa,與轉換菜單中的轉換菜單命
令功能相同。
AESEncrypt"MyPassword"
使用AES加密當前活動文件或者磁盤,或其選塊,使用指定的密鑰(最
高32位)。
AESDecrypt"MyPassword"
解密當前活動文件或磁盤。
Find"John"[MatchCaMatchWordDownUpBlockOnlySaveAllPos
UnicodeWildcards]
Find0x1234[DownUpBlockOnlySaveAllPosWildcards]
分別搜索當前活動窗口中名為“john”的字符串或16進制值數0x1234,
并且在第一個搜索到的地方停下來。其他的參數是可選的。默認的
winhex搜索整個文件或磁盤。其他的可選參數功能和通常的winhex搜
索選冬蟲夏草怎么鑒別 項相同。
ReplaceAll"Jon""Don"[MatchCaMatchWordDownUpBlockOnly
UnicodeWildcards]
ReplaceAll0x0A0x0D0A[DownUpBlockOnlyWildcards]
在當前活動窗口中使用其他的值替換所有存在上述字符串或16進制數
值的地方。在“in-place”模式下只能應用與磁盤。
IfFound
如果發現了值則執行下面的命令。
IfEqualMyVariable"HelloWorld"
IfEqual0x12345678MyVariable
IfEqualMyVariable1000
IfEqualMyVariableMyOtherVariable
IfEqualMyVariable(10*MyOtherVariable)
比較兩個整數值(其中每個值可以是常量,整數變量或者數學表達式)
或者兩個變量,ASCII字符串,或16進制數值(2進制模式)。比較
兩個對象的2進制數值長度,如果不相同的話則返回結果為fal。只
有返回值為true時,下面的命令才會被執行。if條件不可以鑲套使用。
IfGreaterMyVariable"HelloWorld"
IfGreater0x12345678MyVariable
IfGreaterMyVariable1000
IfGreaterMyVariableMyOtherVariable
IfGreaterMyVariable(10*MyOtherVariable)
和IfEqual擁有相同的參數。第一個參數大于第二個參數,返回值為true,
則下面的命令才能被執行。if條件不可以鑲套使用。
El
應用在IfFound或IfEqual之后。如果沒有任何對象被搜索到或者比較
的目標不相同,則執行el后面的代碼。
EndIf
結束if條件命令執行(在IfFound或IfEqual之后)。
{...
ExitLoop
...}
退出循環。其后會有一個方括號來定義其循環次數,可以是變量也可以
是關鍵字“unlimited”(無限循環)。winhex腳本中循環只能使用ExitLo日本動漫排名 op
命令來退出。循環不可以鑲套使用。
舉例:
{Write"Loop"}[10]將輸出“Loop”字符串10次。
LabelContinueHere
創建一個標簽并命名為“ContinueHere”JumpToContinueHere
腳本跳轉到標簽處繼續執行.
NextObj
循環在所有窗口中進行切換“活動”窗口。如果有三個窗口被打開,并且
窗口#3狀態為活動窗口,則“NextObj”命令將會讓窗口#1變為活動窗口。
ForAllObjDo
在ForAllObjDo與EndDo之間的腳本代碼將在所有打開的文件或者磁
盤中執行。CopyFileC::
將C:文件中的內容復制到D:中。MoveFileC:
D:
將C:文件轉移到D盤中并命名為D:。DeleteFileC:
將C:文件刪除。
InitFreeSpace
InitSlackSpace
使用當前初始化設置清理當前邏輯驅動器中的所有自由空間或松散空
間,InitSlackSpace將驅動器的模式臨時轉換為“in-place”模式,以保存
未保存的修改。InitMFTRecords
使用當前初始化設置在當前NTFS格式的邏輯驅動器中清理未使用的
MFTFILE記錄。對于其他的文件系統無效。修改立即就會寫入硬盤中。
AssignMyVariable12345
AssignMyVariable0x0D0A
AssignMyVariable"IlikeWinHex"
AssignMyVariableMyOtherVariable
將整數,二進制數值,ASCII文本,或其他變量內容保存到“MyVariable”
變量中。如果這個變量不存在,將會被自動創建。其他的創建變量的方
法:Read,GetUrInput,InttoStr。同時可以允許有48個變量存在。
ReleaMyVariable
刪除一個已存在的變量,因為winhex腳本中只支持48個變量存在,所
以用過的不再使用變量我們可以將其刪除以釋放變量空間。
GetUrInputMyVariable"Pleaenteryourname:"
在腳本運行期間,保存用戶指定的ASCII文本或二進制數據(0x...)到
變量“MyVariable”中。第二個參數給除了用戶提示。如果變量不存在,
它將重新創建一個。其他創建變量的方式:Assign,Read。GetUrInputI
MyIntegerVariable"Pleaenteryourage:"
與GetUrInput功能相同,但是只允許整數型變量。
IncMyVariable
將變量解釋為整數(不大于8位)并且每運行一次變量自動加1。在循
環中有用。
DecMyVariable
將變量解釋為整數(不大于8位)并且每運行一次變量自動減1。在循
環中有用。
IntToStrMyStrMyInt
IntTo公元前27年 StrMyStr12345
將第一個變量中的ASCII文本轉換成整數并保存到第二個變量中。
StrToIntMyIntMyStr
將第一個變量中的整數轉換成ASCII文本并保存到第二個變量中。
GetClusterAllocMyStr
在邏輯卷中,找回哪個文件被儲存在當前簇中的文本描述,然后將描述
保存到指定的變量中。
GetClusterAllocExIntVar
在邏輯卷中,找回一個整數值指示簇是否被分配,1或者非0,表示該
簇已被分配。并且將描述保存在指定變量中。
GetClusterSizeIntVar
返回邏輯卷中簇的大小,并將數值保存到指定的變量中。
InterpretImageAsDisk
將磁盤鏡像或證據文件作為原始物理磁盤或分區一樣對待。需要
specialist或forensic許可。
CalcHashHashTypeMyVariable
CalcHashExHashTypeMyVariable
與工具菜單中的hash命令功能相同并且將變量儲存在指定變量中(如
果變量不存在,則會自動創建)。HashType參數必須為以下類型中的
一種:CS8,CS16,CS32,CS64,CRC16,CRC32,MD5,SHA-1,
SHA-256,PSCHF。
CalcHashEx命令將在windows窗口中顯示hash值。
MessageBox"Caution"
顯示信息對話框,并且提供ok和cancel兩個按鈕。按下cancel按腳
本本。
ExecuteScript"ScriptName"
在腳本的當前運行處運行另一個腳本。調用其他外部腳本可以鑲套使
用。當被調用的腳本執行完成以后,腳本繼續執行下面的命令。這個特
征可以幫助用戶清楚的了解腳本的結構。
TurboOn
TurboOff
管理道模式開關。
Debug
用戶可以利用該命令確定腳本中的每一條命令都是否有效。
ULogFile
錯誤信息被寫入當前文件夾下的日志文件“”。這些信息不會
顯示在信息對話框中。非常有用,特別在運行的腳本主機無法遠程連接
的時候。
CurrentPos
GetSize
unlimited
以上三個是winhex腳本中的關鍵字,可以被使用在應用數字參數的地
方。在腳本執行過程中,CurrentPos表示當前活動文件或者磁盤窗口
中光標的偏移地址,GetSize表示了它的大小。unlimited實際上表示的
是整數2,147,483,647。
本文發布于:2023-03-18 16:03:39,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1679126620148124.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:aspack.doc
本文 PDF 下載地址:aspack.pdf
| 留言與評論(共有 0 條評論) |
|