第一課 前言
你是不是經常到處找破解資料,轉了一大圈,也找不全,多么希望找一完整破解教程,從簡到深,系統學習破解知識。本人就有這一體會,為了使大家更快掌握這門技術,特將本人長期收集資料和破解經驗總結一篇教程,相信對大家有所幫助。這份資料主要是和大家探討一些加密解密的問題,在文中引用了不少平時收集的資料,但均保持文章原樣。
很多人都想學學做cracker,好象破了一個程序很風光的,人人都很佩服。 可是做一個cracker其實很累,需花費大量的時間,而且經常會碰壁,三五天毫無進展是極為平常的事情。而且crack是違法的,這點要牢記。
做cracker的五個必要條件是: 1. 知識 2. 經驗 3. 感覺 4. 耐心 5. 運氣 。
如果你剛開始學crack,也許你遇到不少麻煩,并且有點想退卻,其實你不要著急,只要你認真學習,成功就在眼前。沒有人是生來就什么都會的,如果你有問題,就大膽的去問你周圍的人,多來我主頁論壇請教。計算機水平不高怎么辦?沒關系,我也不是學計算機的,我自己的專業與電腦不沾邊。只要努力學習就能成功。
所謂知識只要你肯學就可以了,剛入門時如你沒匯編知識是不行的,你要掌握一下這門編程語言,能看懂就能上手,但是你想很順手的話,除了把匯編掌握好,還有編程的基本功夫。
經驗是跟你破解軟件時間,掌握程度有關,接觸多了,拿到一軟件應該知道用哪種法比較省事,比較有把握。
感覺這點不可言傳,就象我們做語文題目時,一句話有語法錯誤一看就知道,這時我們有可能從語法上也說不上什么道道,就知它是錯的,這就是語感。我們crack多了,也會有這方面的體會,拿一軟件跟蹤,到關鍵點時憑感覺就找到。
耐心就不多說,成功與失敗的關鍵也在這一步。
運氣也很關鍵啦!以前我受朋友之托對付開天辟地2,那軟件運行第二次時就叫你輸入說明書的第幾頁第幾行的第幾個字,要輸兩三遍,D版哪有說明書呀,拿到這軟件我用了一會兒,第一次能運行,第二次不行,我仔細分析一下,判斷有可能在注冊表或WINDOWS下寫下什么文件,故先將系統備份一下,當然是整個windows系統了,是不是嚇壞了:-O,哈!干我們這行什么損招都得想到。 好,開刀了,先試亂按幾下(當然全是選擇題,不過一屏幕有十幾個字,只有一個是對的,要通過兩三屏才成功),我試了兩遍就OK了,運氣太好了,我那朋友試了半天也不行,然后分析系統文件的變化,發現HUMAN.INI變化了,哈就這樣破了,將HUMAN.INI拷給朋友機了就行了。
另外我還要談的一事是,當cracker目的不是破解軟件,而是通過跟蹤軟件,了解程序思路,這樣提高自己,使自己能寫出更好的程序。 并且破解不在多,而在于你要掌握它,盡量了解注冊碼計算原理,最好能寫出注冊機,不能寫也沒關系,要弄懂它的算法。
(第二課)
軟件的幾種保護方式介紹
加密一詞來源已久,自從人們希望對自己私人的信息得到保護開始,就有了加密這個概念。軟件行業的加密是軟件廠商為了保護軟件開發的利潤而采取的一種軟件保護方式,加密 的好壞直接影響到軟件的銷售,從 Apple II 的年代開始,加密與解密的斗爭就一直沒有停 止過。時至今日,軟件加密的方案已經多種多樣,在這里我將介紹一下各種加密方案的特點 和優劣,當然這只是一家之見,持不同觀點者可一笑置之。
當前軟件加密方法多種多樣,已經不可能找出一種分類方法來把各種加密方案很好的區分開來。 基本上來說可以分為依賴特定硬件的加密方案和不依賴硬件的加密方案。
一、我們首先說說依賴硬件的加密方案:
1、軟盤加密
這是在計算機上最為古老的一種加密方案,它的原理是在軟盤的特殊位置寫入一些信息,軟件在運行時要檢驗這些信息。這種軟盤就好像一把鑰匙。軟件開發商只需一次投資購買一套加密工具就可以自己制作多張鑰匙盤。此方法加密簡單,成本低,在軟件發展的不同時期 都能看到其閃光點。像中文之星 2.97還在延用這種方式。但用戶在執行軟件時必須要插入此軟盤。因為軟驅是慢速設備,多次檢查軟盤上的加密點會大大拖慢程序的運行速度,所以 一般加密軟件只在軟件運行開始的時候檢查一次,這樣不能避免用戶用一張加密盤啟動多份軟件。而且由于軟盤是一種易損載體,加密軟件對軟盤加密點的反復讀寫很容易造成軟盤的損壞。而這張加密盤又不能備份,軟件公司要不斷應付用戶更換加密盤的請求。另外由于這種加密技術出現的較早,硬解密的技術相對比較成熟,像雙星公司的 King-Copy 軟件能拷貝大多數的加密軟盤,連加密點一起復制,復制后的軟盤還是加密的。
2、卡加密
在 90 年代初,各種各樣的漢卡涌現出來,而隨之而來的卡加密技術也開始風行??用艿暮锰幨怯捎诩用芸ㄉ厦娌粌H僅可以存放數據,而且可以用硬件實現簡單的算法,而且在軟件的執行過程中可以隨時訪問加密卡,不會對軟件運行的速度帶來太多的影響,而且由于加密卡是與計算機的總線交換數據,數據通訊協議完全由卡的廠家制定,沒有統一的標準接 口,讓軟件解密者有無從下手的感覺。像北大方正早期的印刷軟件都是采用這種方法來加密 的。但這種加密方案需要打開計算機的機箱,占用擴展槽,一般還需要專門的人員來安裝。 另外,由于加密卡設計上的某些問題,還很容易同現有的硬件發生沖突??紤]到成本,加密 卡必須要批量生產,廠商一般不會對低價值的軟件一下投入這么大的資金。由于種種問題, 這種加密技術現在已經難得一見了。
3、軟件鎖加密
軟件鎖加密是在國外首先出現的,它是一個插在計算機打印口上火柴盒大小的設備, 國內俗稱為加密狗。在加密鎖內部存有一定的數據和算法,計算機可以與之通訊來獲得其中的數據,或通過加密鎖進行某種計算。軟件無法離開加密鎖而運行。由于它不像卡加密那樣 需要打開計算機的機箱來安裝,但又像加密卡那樣可以隨時訪問,而且訪問速度很快,所以一推出就受到軟件開發者們的青睞,很快成為當今世界上主流的加密方案。目前,所有的加 密鎖都提供了可編程的接口。用戶可以控制加密鎖中的內容,在程序中通過加密鎖的接口任 意訪問加密鎖。國外加密鎖一般僅提供若干種算法,但好的加密鎖不但可以向客戶提供加密算 法,也容許客戶根據自己的意愿自定義加密算法,容許客戶自定義用戶ID號……比如:北京 飛天誠信科技公司推出的ROCKEY-IV鎖就是一種加密強度很高產品。但加密鎖也是有一定缺欠的,由于加密鎖利用的是計算機的打印口,而打印口原來是為打印機而設計的,軟件鎖一方面要保證用戶加密操作的正確,同時也要保證打印機工作的正常。但由于打印機驅動程序 設計上千差萬別,沒有任何一家的加密鎖能夠完全做到這一點。 但這一問題隨著技術的進步有希望得到徹底的解決,那就是 USB 接口的加密鎖。USB 是 Microsoft、Intel、Compaq、NEC 聯合開發的一種全新的硬件接口標準,能夠同時支持 128 個 不同的外部設備,而且互相之間沒有沖突,在新的 PII 計算機主版上大多都可以看見兩個小小的長方形接口,那就是 USB 接口。USB 接口的加密鎖不但擁有并口加密鎖的所有優點,而 且沒有打印上的問題,其前景十分看好。但美中不足的是只有 Windows 98 和 Windows 2000 目前能夠支持 USB 設備。在國內市場上,有幾種國外USB加密鎖,但售價很高。北京飛天誠 信科技公司推出的一款ROCKEY-USB加密鎖是國內目前唯一的民族品牌。其安全性優于國外產品的同時,售價還不足100元,僅是國外產品的一半。
4、光盤加密
隨著光盤的普及,光盤幾乎成了軟盤的替代產品。即然有軟盤加密成功在先,為什么不能有光盤加密呢?有很多人在思考這個問題。但實際操作上確實是有一些問題的,因為光盤有 ISO9660 標準協議規定,其可控制性比軟盤還要嚴格,想找出一種只能運行而不能復制的方式確實很困難。但現在確實已經有幾家這樣的產品出來了,而且加密方法也不盡相同。 其主要原理是利用特殊的光盤母盤上的某些特征信息是不可再現的,而且這些特征信息大多 是光盤上非數據性的內容,光盤復制的時候復制不到的地方。因為投入是一次性的,對于大規模的生產這種加密方案可以將成本降得很低。而且軟件數據和加密在同一載體上,對用戶無疑是很方便的。但這是一種較新的加密方案,很多方面還需進一步驗證。而且由于加密方式所限,不可能在用戶自己刻錄的光盤上實現這種加密,必須是生產線上生產的光盤才能夠實現。這對于一些小規模的軟件生產廠商還是有一定困難的,而且由于光盤的只讀性,一旦 加密有錯是無法修復的。
二、我們再談談不依賴硬件的加密方案:
所有的帶有附加硬件設備的加密方案都有一定的加密成本在里面,對于那些價格高昂的軟件當然無所謂,但對于那些共享軟件或價格本身就很低的軟件來說,硬件加密成本可能比 軟件本身的售價還高,當然不會被考慮了。但不加密,往往就變成了免費軟件,所以近年來 產生了很多軟加密方案。
1、密碼表加密
在軟件運行的開始要求用戶跟據屏幕的提示信息輸入特定的答案,答案往往在用戶手冊上的一份防復印的密碼表中。用戶只有輸入密碼正確后才能夠繼續運行。這種加密方案實現 簡單,不需要太多的成本。但用戶每次運行軟件都要查找密碼,不免使用戶感到十分的不便。 像臺灣的游戲大多采用此加密方式。而且往往有一些有耐心者把整個密碼表輸入到計算機中 存成一個文件,同軟件的盜版一同公布出來,讓加密者無可奈何。基本上是一種防君子不防小人的加密方式。
2、序列號加密
這種加密方式從某種角度來講不是一套完整的加密方案,現今很多Shareware( 共享軟 件 )大多采用這種加密方式,用戶在軟件的試用期是不需要交費的,一旦試用期滿還希望繼續試用這個軟件,就必須到軟件公司進行注冊,然后軟件公司會根據你提交的信息(一般是用 戶的名字)來生成一個序列號,當你收到這個序列號以后,并在軟件運行的時候輸入進去,軟 件會驗證你的名字與序列號之間的關系是否正確,如果正確說明你已經購買了這個軟件,也 就沒有日期的限制了。這種加密方案實現簡單,而且購買過程也完全在 Internet 上實現, 無論是開發者和購買者都覺得很方便。不過有心的人可能已經注意到軟件的名字與序列號之 間的驗證是在你的計算機上完成的,很多黑客利用這個漏洞找出了名字和序列號之間的換算 關系,編寫出一種叫 KeyMaker 的程序,你只要輸入你的名字,這個程序會幫助你計算出序列號,你再用你的名字和這個序列號輸入進軟件中就變成正版軟件了。而且也沒有什么更好 的方法來阻止用戶擴散他注冊后得到的序列號。
你是不是經常到處找破解資料,轉了一大圈,也找不全,多么希望找一完整破解教程,從簡到深,系統學習破解知識。本人就有這一體會,為了使大家更快掌握這門技術,特將本人長期收集資料和破解經驗總結一篇教程,相信對大家有所幫助。這份資料主要是和大家探討一些加密解密的問題,在文中引用了不少平時收集的資料,但均保持文章原樣。
很多人都想學學做cracker,好象破了一個程序很風光的,人人都很佩服。 可是做一個cracker其實很累,需花費大量的時間,而且經常會碰壁,三五天毫無進展是極為平常的事情。而且crack是違法的,這點要牢記。
做cracker的五個必要條件是: 1. 知識 2. 經驗 3. 感覺 4. 耐心 5. 運氣 。
如果你剛開始學crack,也許你遇到不少麻煩,并且有點想退卻,其實你不要著急,只要你認真學習,成功就在眼前。沒有人是生來就什么都會的,如果你有問題,就大膽的去問你周圍的人,多來我主頁論壇請教。計算機水平不高怎么辦?沒關系,我也不是學計算機的,我自己的專業與電腦不沾邊。只要努力學習就能成功。
所謂知識只要你肯學就可以了,剛入門時如你沒匯編知識是不行的,你要掌握一下這門編程語言,能看懂就能上手,但是你想很順手的話,除了把匯編掌握好,還有編程的基本功夫。
經驗是跟你破解軟件時間,掌握程度有關,接觸多了,拿到一軟件應該知道用哪種法比較省事,比較有把握。
感覺這點不可言傳,就象我們做語文題目時,一句話有語法錯誤一看就知道,這時我們有可能從語法上也說不上什么道道,就知它是錯的,這就是語感。我們crack多了,也會有這方面的體會,拿一軟件跟蹤,到關鍵點時憑感覺就找到。
耐心就不多說,成功與失敗的關鍵也在這一步。
運氣也很關鍵啦!以前我受朋友之托對付開天辟地2,那軟件運行第二次時就叫你輸入說明書的第幾頁第幾行的第幾個字,要輸兩三遍,D版哪有說明書呀,拿到這軟件我用了一會兒,第一次能運行,第二次不行,我仔細分析一下,判斷有可能在注冊表或WINDOWS下寫下什么文件,故先將系統備份一下,當然是整個windows系統了,是不是嚇壞了:-O,哈!干我們這行什么損招都得想到。 好,開刀了,先試亂按幾下(當然全是選擇題,不過一屏幕有十幾個字,只有一個是對的,要通過兩三屏才成功),我試了兩遍就OK了,運氣太好了,我那朋友試了半天也不行,然后分析系統文件的變化,發現HUMAN.INI變化了,哈就這樣破了,將HUMAN.INI拷給朋友機了就行了。
另外我還要談的一事是,當cracker目的不是破解軟件,而是通過跟蹤軟件,了解程序思路,這樣提高自己,使自己能寫出更好的程序。 并且破解不在多,而在于你要掌握它,盡量了解注冊碼計算原理,最好能寫出注冊機,不能寫也沒關系,要弄懂它的算法。
(第二課)
軟件的幾種保護方式介紹
加密一詞來源已久,自從人們希望對自己私人的信息得到保護開始,就有了加密這個概念。軟件行業的加密是軟件廠商為了保護軟件開發的利潤而采取的一種軟件保護方式,加密 的好壞直接影響到軟件的銷售,從 Apple II 的年代開始,加密與解密的斗爭就一直沒有停 止過。時至今日,軟件加密的方案已經多種多樣,在這里我將介紹一下各種加密方案的特點 和優劣,當然這只是一家之見,持不同觀點者可一笑置之。
當前軟件加密方法多種多樣,已經不可能找出一種分類方法來把各種加密方案很好的區分開來。 基本上來說可以分為依賴特定硬件的加密方案和不依賴硬件的加密方案。
一、我們首先說說依賴硬件的加密方案:
1、軟盤加密
這是在計算機上最為古老的一種加密方案,它的原理是在軟盤的特殊位置寫入一些信息,軟件在運行時要檢驗這些信息。這種軟盤就好像一把鑰匙。軟件開發商只需一次投資購買一套加密工具就可以自己制作多張鑰匙盤。此方法加密簡單,成本低,在軟件發展的不同時期 都能看到其閃光點。像中文之星 2.97還在延用這種方式。但用戶在執行軟件時必須要插入此軟盤。因為軟驅是慢速設備,多次檢查軟盤上的加密點會大大拖慢程序的運行速度,所以 一般加密軟件只在軟件運行開始的時候檢查一次,這樣不能避免用戶用一張加密盤啟動多份軟件。而且由于軟盤是一種易損載體,加密軟件對軟盤加密點的反復讀寫很容易造成軟盤的損壞。而這張加密盤又不能備份,軟件公司要不斷應付用戶更換加密盤的請求。另外由于這種加密技術出現的較早,硬解密的技術相對比較成熟,像雙星公司的 King-Copy 軟件能拷貝大多數的加密軟盤,連加密點一起復制,復制后的軟盤還是加密的。
2、卡加密
在 90 年代初,各種各樣的漢卡涌現出來,而隨之而來的卡加密技術也開始風行??用艿暮锰幨怯捎诩用芸ㄉ厦娌粌H僅可以存放數據,而且可以用硬件實現簡單的算法,而且在軟件的執行過程中可以隨時訪問加密卡,不會對軟件運行的速度帶來太多的影響,而且由于加密卡是與計算機的總線交換數據,數據通訊協議完全由卡的廠家制定,沒有統一的標準接 口,讓軟件解密者有無從下手的感覺。像北大方正早期的印刷軟件都是采用這種方法來加密 的。但這種加密方案需要打開計算機的機箱,占用擴展槽,一般還需要專門的人員來安裝。 另外,由于加密卡設計上的某些問題,還很容易同現有的硬件發生沖突??紤]到成本,加密 卡必須要批量生產,廠商一般不會對低價值的軟件一下投入這么大的資金。由于種種問題, 這種加密技術現在已經難得一見了。
3、軟件鎖加密
軟件鎖加密是在國外首先出現的,它是一個插在計算機打印口上火柴盒大小的設備, 國內俗稱為加密狗。在加密鎖內部存有一定的數據和算法,計算機可以與之通訊來獲得其中的數據,或通過加密鎖進行某種計算。軟件無法離開加密鎖而運行。由于它不像卡加密那樣 需要打開計算機的機箱來安裝,但又像加密卡那樣可以隨時訪問,而且訪問速度很快,所以一推出就受到軟件開發者們的青睞,很快成為當今世界上主流的加密方案。目前,所有的加 密鎖都提供了可編程的接口。用戶可以控制加密鎖中的內容,在程序中通過加密鎖的接口任 意訪問加密鎖。國外加密鎖一般僅提供若干種算法,但好的加密鎖不但可以向客戶提供加密算 法,也容許客戶根據自己的意愿自定義加密算法,容許客戶自定義用戶ID號……比如:北京 飛天誠信科技公司推出的ROCKEY-IV鎖就是一種加密強度很高產品。但加密鎖也是有一定缺欠的,由于加密鎖利用的是計算機的打印口,而打印口原來是為打印機而設計的,軟件鎖一方面要保證用戶加密操作的正確,同時也要保證打印機工作的正常。但由于打印機驅動程序 設計上千差萬別,沒有任何一家的加密鎖能夠完全做到這一點。 但這一問題隨著技術的進步有希望得到徹底的解決,那就是 USB 接口的加密鎖。USB 是 Microsoft、Intel、Compaq、NEC 聯合開發的一種全新的硬件接口標準,能夠同時支持 128 個 不同的外部設備,而且互相之間沒有沖突,在新的 PII 計算機主版上大多都可以看見兩個小小的長方形接口,那就是 USB 接口。USB 接口的加密鎖不但擁有并口加密鎖的所有優點,而 且沒有打印上的問題,其前景十分看好。但美中不足的是只有 Windows 98 和 Windows 2000 目前能夠支持 USB 設備。在國內市場上,有幾種國外USB加密鎖,但售價很高。北京飛天誠 信科技公司推出的一款ROCKEY-USB加密鎖是國內目前唯一的民族品牌。其安全性優于國外產品的同時,售價還不足100元,僅是國外產品的一半。
4、光盤加密
隨著光盤的普及,光盤幾乎成了軟盤的替代產品。即然有軟盤加密成功在先,為什么不能有光盤加密呢?有很多人在思考這個問題。但實際操作上確實是有一些問題的,因為光盤有 ISO9660 標準協議規定,其可控制性比軟盤還要嚴格,想找出一種只能運行而不能復制的方式確實很困難。但現在確實已經有幾家這樣的產品出來了,而且加密方法也不盡相同。 其主要原理是利用特殊的光盤母盤上的某些特征信息是不可再現的,而且這些特征信息大多 是光盤上非數據性的內容,光盤復制的時候復制不到的地方。因為投入是一次性的,對于大規模的生產這種加密方案可以將成本降得很低。而且軟件數據和加密在同一載體上,對用戶無疑是很方便的。但這是一種較新的加密方案,很多方面還需進一步驗證。而且由于加密方式所限,不可能在用戶自己刻錄的光盤上實現這種加密,必須是生產線上生產的光盤才能夠實現。這對于一些小規模的軟件生產廠商還是有一定困難的,而且由于光盤的只讀性,一旦 加密有錯是無法修復的。
二、我們再談談不依賴硬件的加密方案:
所有的帶有附加硬件設備的加密方案都有一定的加密成本在里面,對于那些價格高昂的軟件當然無所謂,但對于那些共享軟件或價格本身就很低的軟件來說,硬件加密成本可能比 軟件本身的售價還高,當然不會被考慮了。但不加密,往往就變成了免費軟件,所以近年來 產生了很多軟加密方案。
1、密碼表加密
在軟件運行的開始要求用戶跟據屏幕的提示信息輸入特定的答案,答案往往在用戶手冊上的一份防復印的密碼表中。用戶只有輸入密碼正確后才能夠繼續運行。這種加密方案實現 簡單,不需要太多的成本。但用戶每次運行軟件都要查找密碼,不免使用戶感到十分的不便。 像臺灣的游戲大多采用此加密方式。而且往往有一些有耐心者把整個密碼表輸入到計算機中 存成一個文件,同軟件的盜版一同公布出來,讓加密者無可奈何。基本上是一種防君子不防小人的加密方式。
2、序列號加密
這種加密方式從某種角度來講不是一套完整的加密方案,現今很多Shareware( 共享軟 件 )大多采用這種加密方式,用戶在軟件的試用期是不需要交費的,一旦試用期滿還希望繼續試用這個軟件,就必須到軟件公司進行注冊,然后軟件公司會根據你提交的信息(一般是用 戶的名字)來生成一個序列號,當你收到這個序列號以后,并在軟件運行的時候輸入進去,軟 件會驗證你的名字與序列號之間的關系是否正確,如果正確說明你已經購買了這個軟件,也 就沒有日期的限制了。這種加密方案實現簡單,而且購買過程也完全在 Internet 上實現, 無論是開發者和購買者都覺得很方便。不過有心的人可能已經注意到軟件的名字與序列號之 間的驗證是在你的計算機上完成的,很多黑客利用這個漏洞找出了名字和序列號之間的換算 關系,編寫出一種叫 KeyMaker 的程序,你只要輸入你的名字,這個程序會幫助你計算出序列號,你再用你的名字和這個序列號輸入進軟件中就變成正版軟件了。而且也沒有什么更好 的方法來阻止用戶擴散他注冊后得到的序列號。
3、許可證加密 這種方式在某種角度上說可以是序列號加密的一個變種,你從網上下載的或購買過來的 軟件并不能直接使用,軟件在安裝時或運行時會對你的計算機進行一番檢測,并根據檢測結 果生成一個你的計算機的特定指紋,這個指紋可以是一個小文件,也可以是一串誰也看不懂 的數,你需要把這個指紋數據通過 Internet、Email、電話、傳真等方式發送到開發商那里, 開發商再根據這個指紋給你一個注冊碼或注冊文件,你得到這個注冊碼或注冊文件并按軟件 要求的步驟在你的計算機上完成注冊后方能使用。這個方法的買賣也是完全通過網絡來進行 的,而且用戶購買的軟件被限制了只能在他自己的計算機上面運行,換到其它的計算機上, 這個注冊碼或注冊文件可能不再有效。但用戶更換某些硬件設備也可能造成注冊碼的失效, 而且用戶得到軟件后在完成注冊工作前會有一段時間無法使用。對于軟件開發商來說服務與 管理的工作量無疑也是非常巨大的。網絡上有個 ZIP Download 公司專門替軟件開發商來完 成這種加密與服務工作。將來 PIII 處理器內部有了特定的序列號,將會對減少這種加密方案的硬件依賴性,但估計普及起來還有很長的一段時間。 (第三課) 軟件分析技術 8088 匯編速查手冊 一、數據傳輸指令 ─────────────────────────────────────── 它們在存貯器和寄存器、寄存器和輸入輸出端口之間傳送數據. 1. 通用數據傳送指令. MOV 傳送字或字節. MOVSX 先符號擴展,再傳送. MOVZX 先零擴展,再傳送. PUSH 把字壓入堆棧. POP 把字彈出堆棧. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧. BSWAP 交換32位寄存器里字節的順序 XCHG 交換字或字節.( 至少有一個操作數為寄存器,段寄存器不可作為操作數) CMPXCHG 比較并交換操作數.( 第二個操作數必須為累加器AL/AX/EAX ) XADD 先交換再累加.( 結果在第一個操作數里 ) XLAT 字節查表轉換. ── BX 指向一張 256 字節的表的起點, AL 為表的索引值 (0-255,即 0-FFH); 返回 AL 為查表結果. ( [BX+AL]->AL ) 2. 輸入輸出端口傳送指令. IN I/O端口輸入. ( 語法: IN 累加器, {端口號│DX} ) OUT I/O端口輸出. ( 語法: OUT {端口號│DX},累加器 ) 輸入輸出端口由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指定時, 其范圍是 0-65535. 3. 目的地址傳送指令. LEA 裝入有效地址. 例: LEA DX,string 把偏移地址存到DX. LDS 傳送目標指針,把指針內容裝入DS. 例: LDS SI,string 把段地址:偏移地址存到DS:SI. LES 傳送目標指針,把指針內容裝入ES. 例: LES DI,string 把段地址:偏移地址存到ESI. LFS 傳送目標指針,把指針內容裝入FS. 例: LFS DI,string 把段地址:偏移地址存到FSI. LGS 傳送目標指針,把指針內容裝入GS. 例: LGS DI,string 把段地址:偏移地址存到GSI. LSS 傳送目標指針,把指針內容裝入SS. 例: LSS DI,string 把段地址:偏移地址存到SSI. 4. 標志傳送指令. LAHF 標志寄存器傳送,把標志裝入AH. SAHF 標志寄存器傳送,把AH內容裝入標志寄存器. PUSHF 標志入棧. POPF 標志出棧. PUSHD 32位標志入棧. POPD 32位標志出棧. 二、算術運算指令 ─────────────────────────────────────── ADD 加法. ADC 帶進位加法. INC 加 1. AAA 加法的ASCII碼調整. DAA 加法的十進制調整. SUB 減法. SBB 帶借位減法. DEC 減 1. NEC 求反(以 0 減之). CMP 比較.(兩操作數作減法,僅修改標志位,不回送結果). AAS 減法的ASCII碼調整. DAS 減法的十進制調整. MUL 無符號乘法. IMUL 整數乘法. 以上兩條,結果回送AH和AL(字節運算),或DX和AX(字運算), AAM 乘法的ASCII碼調整. DIV 無符號除法. IDIV 整數除法. 以上兩條,結果回送: 商回送AL,余數回送AH, (字節運算); 或 商回送AX,余數回送DX, (字運算). AAD 除法的ASCII碼調整. CBW 字節轉換為字. (把AL中字節的符號擴展到AH中去) CWD 字轉換為雙字. (把AX中的字的符號擴展到DX中去) CWDE 字轉換為雙字. (把AX中的字符號擴展到EAX中去) CDQ 雙字擴展. (把EAX中的字的符號擴展到EDX中去) 三、邏輯運算指令 ─────────────────────────────────────── AND 與運算. OR 或運算. XOR 異或運算. NOT 取反. TEST 測試.(兩操作數作與運算,僅修改標志位,不回送結果). SHL 邏輯左移. SAL 算術左移.(=SHL) SHR 邏輯右移. SAR 算術右移.(=SHR) ROL 循環左移. ROR 循環右移. RCL 通過進位的循環左移. RCR 通過進位的循環右移. 以上八種移位指令,其移位次數可達255次. 移位一次時, 可直接用操作碼. 如 SHL AX,1. 移位>1次時, 則由寄存器CL給出移位次數. 如 MOV CL,04 SHL AX,CL 四、串指令 ─────────────────────────────────────── DS:SI 源串段寄存器 :源串變址. ESI 目標串段寄存器:目標串變址. CX 重復次數計數器. AL/AX 掃描值. D標志 0表示重復操作中SI和DI應自動增量; 1表示應自動減量. Z標志 用來控制掃描或比較操作的結束. MOVS 串傳送. ( MOVSB 傳送字符. MOVSW 傳送字. MOVSD 傳送雙字. ) CMPS 串比較. ( CMPSB 比較字符. CMPSW 比較字. ) SCAS 串掃描. 把AL或AX的內容與目標串作比較,比較結果反映在標志位. LODS 裝入串. 把源串中的元素(字或字節)逐一裝入AL或AX中. ( LODSB 傳送字符. LODSW 傳送字. LODSD 傳送雙字. ) STOS 保存串. 是LODS的逆過程. REP 當CX/ECX<>0時重復. REPE/REPZ 當ZF=1或比較結果相等,且CX/ECX<>0時重復. REPNE/REPNZ 當ZF=0或比較結果不相等,且CX/ECX<>0時重復. REPC 當CF=1且CX/ECX<>0時重復. REPNC 當CF=0且CX/ECX<>0時重復. 五、程序轉移指令 ─────────────────────────────────────── 1>無條件轉移指令 (長轉移) JMP 無條件轉移指令 CALL 過程調用 RET/RETF過程返回. 2>條件轉移指令 (短轉移,-128到+127的距離內) ( 當且僅當(SF XOR OF)=1時,OP1<OP2 ) JA/JNBE 不小于或不等于時轉移. JAE/JNB 大于或等于轉移. JB/JNAE 小于轉移. JBE/JNA 小于或等于轉移. 以上四條,測試無符號整數運算的結果(標志C和Z). JG/JNLE 大于轉移. JGE/JNL 大于或等于轉移. JL/JNGE 小于轉移. JLE/JNG 小于或等于轉移. 以上四條,測試帶符號整數運算的結果(標志S,O和Z). JE/JZ 等于轉移. JNE/JNZ 不等于時轉移. JC 有進位時轉移. JNC 無進位時轉移. JNO 不溢出時轉移. JNP/JPO 奇偶性為奇數時轉移. JNS 符號位為 "0" 時轉移. JO 溢出轉移. JP/JPE 奇偶性為偶數時轉移. JS 符號位為 "1" 時轉移. 3>循環控制指令(短轉移) LOOP CX不為零時循環. LOOPE/LOOPZ CX不為零且標志Z=1時循環. LOOPNE/LOOPNZ CX不為零且標志Z=0時循環. JCXZ CX為零時轉移. JECXZ ECX為零時轉移. 4>中斷指令 INT 中斷指令 INTO 溢出中斷 IRET 中斷返回 5>處理器控制指令 HLT 處理器暫停, 直到出現中斷或復位信號才繼續. WAIT 當芯片引線TEST為高電平時使CPU進入等待狀態. ESC 轉換到外處理器. LOCK 封鎖總線. NOP 空操作. STC 置進位標志位. CLC 清進位標志位. CMC 進位標志取反. STD 置方向標志位. CLD 清方向標志位. STI 置中斷允許位. CLI 清中斷允許位. 六、偽指令 ─────────────────────────────────────── DB 定義字節. DW 定義字(2字節). PROC 定義過程. ENDP 過程結束. SEGMENT 定義段. ASSUME 建立段寄存器尋址. ENDS 段結束. END 程序結束. (第四課) 常用工具介紹 破解離不開工具,合適的工具使你事半功倍,本課主要是介紹幾種破解工具,當然詳細的用法,參考后面幾課及范例。 1.調試工具softice 2.調試工具Trw2000 3.反匯編工具Wdasm8.93 4.Hiew 5.Visual Basic程序調試工具Smartcheck 6.十六進制編輯器(如:Ultraedit、WinHex、Hex Workshop 等) 7.注冊表監視工具RegShot、regmon或RegSnap 8.偵測文件類型工具TYP、gtw或FileInfo等 9. 脫殼工具PROCDUMP 10.調試工具IceDump 11.注冊機制作crackcode2000 12.備份windows配制文件工具ERU 13.文件監視工具 filemon 14.資源修改器 EXESCOPE 15.Frogsice 16.IDA 反匯編工具 一看這么多是不是嚇壞了,其實你只需掌握一兩種就能破解軟件,當然要得心應手,最好還是全面掌握,因為現在軟件什么手段都有可能采用。 Soft-ICE 是目前公認最好的跟蹤調試工具。使用Soft-ICE可以很容易的跟蹤一個軟件、或是監視軟件產生的錯誤進行除錯。你甚至可以用他來替代C語言的調試器--如果你不喜歡使用C語言自己的調試器的話。主意其有幾種平臺的版本,DOS,WINDOW3.1,WIN95/98/2000/,NT,所以別搞錯了。 Trw2000 中國人自己編寫的調試軟件,完全兼容SOFTICE各種指令,但現在許多軟件能檢測SOFTICE存在,而TRW2000在這方面就好多了。TRW2000有它自己的獨特方面,是針對破解軟件優化的,Windows下的跟蹤調試程序,跟蹤功能更強;可以設置各種斷點,只是斷點種類更多;它可以象一些脫殼工具一樣完成對加密外殼的去除,自動生成EXE文件,只是留給用戶更多的選擇;在DOS下的版本為TR。 Wdasm8.93 反匯編的極品工具??煞奖惴磪R編程序,它能靜態分析程序流程,也可動態分析程序,操作簡單、破解必備! Hiew 不用多說,是一個十六進制工具,它除了普通十六進制的功能外,它還有個特色,能反匯編文件,并可以匯編指令修改程序,是不是夠酷的! Smartcheck VB程序執行時從本質上講是解釋執行,它們只是調用 VBRUNxxx.DLL 中的函數 ,VB 的 exe 是偽代碼,程序都在 vbXXX.dll 里面執行,你只能在 vbdll 里面用SOFTICE 打轉轉,什么都改不成,而且代碼質量不高,結構還頗復雜。 當然只要了解其特點用SOFTICE也可破解 ,但SmartCheck的出現,大大方便了我們,它可將VB程序執行的操作完全記錄下來,使我們輕而易舉的破解大部分VB程序。 十六進制編輯器 HIEW就是一種是十六進制工具,但其是DOS界面,因此有必要再準備一款windows下的工具,這樣的工具很多,如:Ultraedit、WinHex、Hex Workshop 等,其中Hex Workshop比較有特色,操作方便,但遺憾的是沒有漢化版。 注冊表監視工具 注冊表是Windows 95及Windows 98的核心數據庫,表中存放著各種參數,直接控制著Windows的啟動、硬件驅動程序的裝載以及一些Windows應用程序運行的正常與否。而應用軟件安裝時,有可能在注冊表中注冊,將一些必要的信息放進去,如安裝時間,使用次數等。RegShot、regmon或RegSnap就是一種監視注冊表變化的工具,以了解應用程序在注冊表何處修改了,以協助破解。 偵測文件類型工具 這樣的工具有TYP、gtw或FileInfo等。這是一個能偵測你的軟件是被哪一種「殼」給加密了 (就好像偵測你的文件檔是被zip、rar、arj哪一個給壓縮 了一樣,如果連被哪種軟體加了殼都不曉得,那要剝殼就難很多)。一般配合PROCUDUMP使用。 PROCDUMP 脫殼工具,可剝許多殼,你使用的許多軟件都是壓縮過的,用該工具很方便把它們還原,然后再修改,并可自己編寫腳本文件,以便能脫殼新版的殼。它是也一款優秀的PE格式修改工具,脫殼必備! IceDump 是配合SOFTICE而使用的,可抓取內存的數據,以重建EXE文件,脫殼必備。并可在SOFTICE下邊調試邊聽mp3喲!具體參考其readme. crackcode2000 一種全新的注冊機工具,它可以從另一進程的內存中取出你想要的注冊碼,它可以令水平不高的你一夜之間成為破解高手,有了它,很多軟件可以用二十秒時間寫出注冊機來,而你不需要會任何的語言,因為它只是一個工具,一個操作很簡單的工具,它的參數只有四行, 實在簡單到不能再簡單了,它的體積也很少,只有11K,如果再用其它壓縮軟件壓一下一定 會小于10K,所以用它是可以做出很優秀的注冊機。 ERU 這是windows安裝盤自帶的小工具,備份注冊表等一些windows重要的配制文件,強烈推薦,在你破解一軟件前,最好備份一下系統,因為你在破解某些軟件的過程中,尋找關鍵點時,在這時改動一下以驗證自己的判斷,結果正確注冊成功,此時你再想回到那里看一究竟,重裝該軟件都沒用,哈哈!永遠是注冊版版,除非你重裝系統。此時你只要還原注冊表和配制文件,再重裝該軟件,又可注冊了,這次你就可好好研究它一下了......,當然這種情況不多見,但破解某些軟件前備份一下注冊表,還是有必要的。 filemon 文件監視工具 ,可監視系統文件運行狀況,如哪個文件打開,哪個文件關閉,在哪個文件讀取了數據等,破解時非常有用,以便了解程序在啟動、關閉或驗證注冊碼是做了哪些手腳。 EXESCOPE 資源修改器 eXeScope 可以說是 EXE 及 DLL 等執行文件的解析終結工具, 它有執行文件(EXE, DLL等)的解析與顯示功能;提取資源到外部文件 ;資源的重新寫入;記錄文件的記錄及其再編輯(成批編輯)等功能。是漢化軟件的常用工具,當然破解軟件時也很有用。 Frogsice 最好的 SOFT-ICE 加強軟件!它并不是簡單的將 SICE 隱藏,而是讓你可以配合 SICE 避過現在流行的各種加密、保護軟件里面的各種防止 SICE 的陷阱。有了它,你再也不用怕在裝入一個程序準備調試的時候,程序告訴你發現 SICE 的存在而終止運行,或者干脆把你的機器從新啟動,又甚至觸發更殘酷的報復手段。 IDA 強大的反匯編工具,COOL!! |