加密狗複制(zhì)

加密狗破解複制(zhì)解密過程中的一些(xiē)基本術(shù)語

   1. API

 

  即Application Programming Interface的簡寫,中文叫應用程序編程接口,是一個(gè)體(tǐ)系界說函數(shù)的大(dà)集合,它供給了拜訪操作(zuò)體(tǐ)系特征的辦法。 API包含了幾百個(gè)應用程序調用的函數(shù),這些(xiē)函數(shù)履行(xíng)一切有(yǒu)必要的與操作(zuò)體(tǐ)系有(yǒu)關的操作(zuò),如內(nèi)存分配、向屏幕輸出和(hé)創立窗口等,用戶的程序經過調用API接口同WINDOWS打交道(dào),不管啥樣的應用程序,其底層結尾都是經過調用各種API函數(shù)來(lái)完成各種功用的。一般API有(yǒu)兩中底子形式:Win16和(hé)Win32 Win16是本來(lái)的、API16位版别,用于Windows 3.1Win32是如今的、API32位版别,用于Windows 95/98/NT/ME/2000Win32包含了Win16,是Win16的超集,大(dà)多(duō)數(shù)函數(shù)的姓名、用法都是一樣的。

 

  16位的API函數(shù)和(hé)32位的API函數(shù)的差異在于最終的一個(gè)字母,例如咱們設置這樣的斷點:bpx GetDlgItemTextbpx GetDlgItemTextA和(hé)bpx GetDlgItemTextW,其間(jiān) GetDlgItemText16API函數(shù),GetDlgItemTextA和(hé)GetDlgItemTextW32API函數(shù),而GetDlgItemTextA表明(míng)函數(shù)運用單字節,GetDlgItemTextW表明(míng)函數(shù)運用雙字節。如今咱們破解中常用到的是Win32單字節API函數(shù),即是和(hé)GetDlgItemTextA相似的函數(shù),其它的兩種(Win16 API和(hé)Win32雙字節API函數(shù))則對比罕見。 Win32 API函數(shù)包含在動态鏈接庫(Dynamic Link Libraries,簡稱DLLs)中,即包含在kernel32.dlluser32.dllgdi32.dll和(hé)comctl32.dll中,這即是為(wèi)啥咱們要在softice頂用exp=C:\windows\system\kernel32.dll等指令即将這些(xiē)動态鏈接庫導入softice中的緣由。由于不這樣做(zuò)的話(huà),咱們就無法阻攔到體(tǐ)系Win32 API函數(shù)調用了。

 

   2. 領空(kōng)

 

  這是個(gè)非常重要的概念,可(kě)是也初學者是常常不理(lǐ)解的當地。咱們在各式各樣的破解文章裏都能看到領空(kōng)這個(gè)詞,若是你(nǐ)搞不明(míng)白究竟程序的領空(kōng)在哪裏,那(nà)麽你(nǐ)就不能夠進入破解的大(dà)門(mén)。或許你(nǐ)也曾破解過某些(xiē)軟件,但(dàn)那(nà)隻是瞎貓碰到死老鼠罷了(曾經我即是這樣的^_^,如今說起來(lái)都不好意思喔!)。所謂程序的領空(kōng),說白了即是程序自個(gè)的當地,也即是咱們要破解的程序自個(gè)程序碼所在的方位。或許你(nǐ)馬上(shàng)會(huì)問:我是在程序運轉的時(shí)分設置的斷點,為(wèi)啥中止後不是在程序自個(gè)的空(kōng)間(jiān)呢?由于每個(gè)程序的編寫都沒有(yǒu)固定的形式,所以咱們要在想要切入程序的時(shí)分中止程序,就有(yǒu)必要不依賴詳細的程序設置斷點,也即是咱們設置的斷點應該是每個(gè)程序都會(huì)用到的東西。在DOS年代,底子上(shàng)一切的程序都是作(zuò)業在中止程序之上(shàng)的,即簡直一切的DOS程序都會(huì)去調用各種中止來(lái)完成使命。

 

  可(kě)是到了WINDOWS年代,程序沒有(yǒu)權利直接調用中止,WINDOWS體(tǐ)系供給了一個(gè)體(tǐ)系功用調用渠道(dào)(API),就向DOS程序以中止程序為(wèi)根底一樣,WINDOWS程序以API為(wèi)根底來(lái)完成和(hé)體(tǐ)系打交道(dào),然後各種功用,所以WINDWOS下的軟件破解其斷點設置是以API函數(shù)為(wèi)根底的,即當程序調用某個(gè)API函數(shù)時(shí)中止其正常運轉,然後進行(xíng)解密。例如在SOFTICE中設置下面的斷點:bpx GetDlgItemText(獲取對話(huà)框文本),當咱們要破解的程序要讀取輸入的數(shù)據而調用GetDlgItemText時(shí),立即被SOFTICE阻攔到,然後被破解的程序停留在GetDlgItemText的程序區(qū),而GetDlgItemText是處于WINDWOS自個(gè)辦理(lǐ)的體(tǐ)系區(qū)域,若是咱們私行(xíng)改掉這有(yǒu)些(xiē)的程序代碼,那(nà)就大(dà)禍臨頭了^_^!所以咱們要從體(tǐ)系區(qū)域回來(lái)到被破解程序自個(gè)的當地(即程序的領空(kōng)),才幹對程序進行(xíng)破解,至于如何看程序的領空(kōng)請(qǐng)看前面的SOFTICE圖解。試想一下:關于每個(gè)程序都會(huì)調用的程序段,咱們能夠從那(nà)裏找到啥有(yǒu)用的東西嗎?(如何樣去加密是程序自個(gè)決議的,而不是調用體(tǐ)系功用完成的!)

 

  3. 斷點

 

  所謂斷點即是程序被中止的當地,這個(gè)詞關于解密者來(lái)說是再了解不過了。那(nà)麽啥又是中止呢?中止即是由于有(yǒu)特别事情(中止事情)發作(zuò),計(jì)算(suàn)機暫停當時(shí)的使命(即程序),轉而去履行(xíng)别的的使命(中止效勞程序),然後再回來(lái)原先的使命持續履行(xíng)。打個(gè)比方:你(nǐ)正在上(shàng)班,俄然有(yǒu)同學打電(diàn)話(huà)通(tōng)知你(nǐ)他從外地坐(zuò)火(huǒ)車(chē)過來(lái),要你(nǐ)去火(huǒ)車(chē)站(zhàn)接他。然後你(nǐ)就向老闆暫時(shí)請(qǐng)假,趕往火(huǒ)車(chē)站(zhàn)去接同學,接着将他安排好,随後你(nǐ)又回來(lái)公司持續上(shàng)班,這即是一個(gè)中止進程。咱們解密的進程即是比及程序去獲取咱們輸入的注冊碼并預備和(hé)正确的注冊碼相對比的時(shí)分将它中止下來(lái),然後咱們經過剖析程序,找到正确的注冊碼。所以咱們需求為(wèi)被解密的程序設置斷點,在恰當的時(shí)分切入程序內(nèi)部,追尋到程序的注冊碼,然後到達crack的意圖。

 

  4. 關于程序中注冊碼的存在方法

 

  破解進程中咱們都會(huì)去找程序中将輸入的注冊碼和(hé)正确的注冊碼相對比的當地,然後經過對程序的盯梢、剖析找到正确的注冊碼。可(kě)是正确的注冊碼一般在程序中以兩種形狀存在:顯式的和(hé)隐式的,關于顯式存在的注冊碼,咱們能夠直接在程序所在的內(nèi)存中看到它,例如你(nǐ)能夠直接在SOFTICE的數(shù)據窗口中看到相似"297500523"這樣存在的注冊碼(這裏是随意寫的),關于注冊碼顯式存在的軟件破解起來(lái)對比簡單;可(kě)是有(yǒu)些(xiē)軟件的程序中并不會(huì)直接将咱們輸入的注冊碼和(hé)正确的注冊碼進行(xíng)對比,比方有(yǒu)能夠将注冊碼換算(suàn)成整數(shù)、或是将注冊碼拆開(kāi),然後将每一位注冊碼分開(kāi)在不一樣的當地逐個(gè)進行(xíng)對比,或者是将咱們輸入的注冊碼進行(xíng)某種改換,再用某個(gè)特别的程序進行(xíng)驗證等等。

 

  總歸,應用程序會(huì)采納各種不一樣的雜亂運算(suàn)方法來(lái)逃避直接的注冊碼對比,關于這類程序,咱們一般要下功夫去細心盯梢、剖析每個(gè)程序功用,找到加密算(suàn)法,然後才幹破解它,當然這需求必定的8086彙編編程功底和(hé)很(hěn)大(dà)的耐性與精力。

 




首頁

電(diàn)話(huà)

地址

到底了~