• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            debug.exe(debug.exe是什么文件)

            更新時間:2023-03-01 17:47:26 閱讀: 評論:0

            有一天在網(wǎng)上下載了一個上個世紀(jì)DOS年代的光盤ISO,里面有一個README.EXE的DOS可執(zhí)行文件,在過去,這一般是光盤里面的軟件說明。

            好奇想知道這光盤里面有一些什么軟件,于是執(zhí)行README.EXE,由于是虛擬機(jī)里面執(zhí)行所以也不擔(dān)心有病毒。執(zhí)行的結(jié)果有點(diǎn)意外,文件竟然設(shè)置了訪問密碼。

            設(shè)置了訪問密碼的README.EXE

            這反而更好奇這個文件里面的內(nèi)容了。

            疫情在家游戲玩多了,不妨把破解密碼的過程當(dāng)作是一次解迷游戲,于是決定花點(diǎn)時間嘗試對這個程序的訪問密碼進(jìn)行破解。

            為什么這些光盤說明不放在一個文本文件里呢?因?yàn)檫@是要方便沒有中文DOS環(huán)境的用戶查看,因此有人會用工具生成一個可以顯示這些中文說明的DOS的EXE文件。

            在動手破解之前,要先介紹一些背景和破解思路。

            先說背景知識:

            小型的DOS程序一般都是匯編語言開發(fā),生成機(jī)器碼比較精簡相對容易用debug工具跟蹤,而對于所謂密碼的處理一般不會像現(xiàn)在這樣用DES、AES、RC4對密碼進(jìn)行加密,通常就是設(shè)一個字符串然后和用戶輸入的字符進(jìn)行比較,如果字符串匹配上就繼續(xù)執(zhí)行,匹配不上就退出程序。

            如果是用BASIC或者其他高級語言開發(fā)編譯的程序生成的機(jī)器代碼就相對復(fù)雜。

            有一些防破解的DOS軟件會對自身進(jìn)行加密,加載到內(nèi)存后先做解密再去執(zhí)行,對于這類程序要先經(jīng)過一種叫“脫殼”過程后才可以跟蹤,破解也就不那么容易。

            說完背景知識就說破解思路:

            先在Linux用 strings 查看程序里面字符,看看有沒疑似密碼的字符串,經(jīng)過嘗試沒發(fā)現(xiàn)找到像明文的密碼字符串,看來密碼不是以明文方式存放在程序里面的。

            既然密碼不是以明文方式存放的,那么怎么找到密碼呢?

            我想起我朋友和我說過他開發(fā)的軟件是怎么被一個外國人破解的過程,朋友的軟件需要用戶輸入注冊碼,因?yàn)樵谟脩糨斎胱源a之后,程序就要對注冊碼進(jìn)行校驗(yàn)并根據(jù)校驗(yàn)的結(jié)果進(jìn)行分支跳轉(zhuǎn),因此只要追蹤程序彈出注冊碼的對話框或者是提示注冊碼成功/失敗的信息的機(jī)器代碼就能非常接近破解的目標(biāo),這時可以分析存放在內(nèi)存中密碼,如果破解密碼很麻煩也可以用匯編語言修改內(nèi)存中的機(jī)器指令,即使注冊碼校驗(yàn)不過也強(qiáng)制跳轉(zhuǎn)到注冊碼校驗(yàn)成功的程序分支。

            于是這里有了兩個方案,

            方案一:

            跟蹤程序顯示 “Plea input password:” 或 “Invalied password!” 的代碼,找到對比密碼字符串的代碼這樣就有可能找到存放密碼的內(nèi)存地址從而把密碼找出來。

            方案二:

            如果程序?qū)γ艽a的處理過程比較復(fù)雜,例如用了一些加密算法,即使找到存放密碼的內(nèi)存地址也不太容易分析出密碼,那么還可以跟蹤跳轉(zhuǎn)到顯示 “Invalied password!” 的分支代碼,修改跳轉(zhuǎn)的指令使得即使密碼校驗(yàn)不正確也跳轉(zhuǎn)到密碼校驗(yàn)成功的代碼分支上去。

            用到的調(diào)試工具是DOS下的 debug,里面有內(nèi)存搜索的指令可以搜出程序中調(diào)用顯示字符串的匯編代碼。

            在DOS的字符界面上顯示字符串有三種方式

            1、直接寫顯卡內(nèi)存B800

            2、調(diào)用BIOS 中斷 int 10H

            3、調(diào)用DOS 中斷 int 21H

            從程序滾動輸出這些字符串來看,一般不會是用直接寫顯存的方式去實(shí)現(xiàn),如果要這樣做就要實(shí)現(xiàn)拷貝內(nèi)存和操作顯卡寄存器一整套功能,而這里僅是簡單顯示一些字符串,因此先排除直接寫顯卡內(nèi)存。

            經(jīng)過搜索跟蹤,排除了調(diào)用BIOS 中斷 INT 10H,這個過程略過細(xì)節(jié),大約過程就是去找,但沒找到。

            剩下就是跟蹤調(diào)用DOS 中斷 INT 21H顯示字符串這條線索,下面是詳細(xì)的過程。

            用 DOS INT 21H 顯示字符串的過程大概是這樣:

            把以$為結(jié)束符的字符串的地址放到寄存器DS:DX里,把寄存器AH設(shè)為09, 09是DOS INT 21H功能號,用于顯示DS:DX存放的地址的內(nèi)容,最后調(diào)用 INT 21H,這樣DOS就會在當(dāng)前光標(biāo)的位置顯示這個字符串。

            因此,我們只需用debug把 README.EXE 加載到內(nèi)存后搜索哪里有 MOV AH,09 和 INT 21H 這兩條指令,這樣就能比較容易找到輸出字符串的地方。

            當(dāng)然了,如果程序里大量使用INT 21H輸出字符串,那就會搜索很多條結(jié)果出來,這時就要先搜索 “Plea input password:” 和 “Invalied password!” 這兩個字符串在內(nèi)存里面的地址,然后搜出加載這些字符串地址到DS:DX的代碼,這樣可以縮小跟蹤分析的范圍。

            DOS 的 debug 的 s 命令可以用16進(jìn)制或 ASC碼 搜索內(nèi)存,而我們不大可能記得 INT 21H 這條匯編指令對應(yīng)的X86 CPU的機(jī)器指令,因此可以用 debug 的匯編功能先輸入INT 21H,然后反匯編看這條指令對應(yīng)的機(jī)器指令。

            使用debug的匯編和反匯編命令

            這里可以看到 INT 21H 對應(yīng)的x86 CPU 機(jī)器指令用16進(jìn)制表示是 CD21,MOV AH,09 對應(yīng)的機(jī)器指令是B409。

            有了這些準(zhǔn)備,就可以開始用debug破解這個程序了,先用debug加載 README.EXE,然后用 r 指令查看當(dāng)前的寄存器,其中

            CS=121F

            IP=0100

            這表示CS寄存器的內(nèi)容是 121F IP 寄存器為0100,這表明 README.EXE 的代碼段被加載到段地址為121F,偏移地址為0100 這個地方,如果不清楚這里的意思的話,可以查資料去了解一下 intel x86 CPU 在16位實(shí)模式下內(nèi)存尋址方式。

            在這里,只需要記得README.EXE的代碼就在這個區(qū)域里面,先重點(diǎn)對這個區(qū)域搜索。對于一些大型的DOS程序,程序和數(shù)據(jù)可能會分布在多個段里,這樣就不能只搜索一個段了。

            分別輸入搜指令

            -s 121F:0100 FFFF B4 09

            -s 121F:0100 FFFF CD 10

            使用debug的搜功能

            符合條件的地址會被列出來,根據(jù)搜索的結(jié)果可以看到,

            在 121F:01B8 和 121F:01F3 這兩個地方有機(jī)器碼B409(MOV AH,09) ,而121F:01BD和121F:01F8有機(jī)器碼 CD10(INT 21H),這兩組地址(121F:01B8和121F:01BD,121F:01F3和121F:01F8)靠得很近,這是很關(guān)鍵的線索,根據(jù)這個信息可以初步判斷121F:01BD和121F:01F8這兩個地方的代碼調(diào)用了DOS 21H顯示字符串。

            這時可以用 debug 的 u 命令反匯編代碼看一下。

            用debug的反匯編和內(nèi)存查看功能

            -u 121F:01F3

            從反匯編的結(jié)果可以看到,這個確實(shí)是一段調(diào)用DOS 21H顯示字符串的代碼,要顯示的字符串的段偏移地址是 0263 ,在顯示完這字符串之后,就調(diào)用 INT 21的4C號(MOV AH,4C 和 INT21H)功能退出了程序。

            沒有看到操作DS寄存器的內(nèi)容,這有可能是數(shù)據(jù)可以代碼都在同一個段里(121F)

            上圖中用 debug d指令查看了121F:0263地址內(nèi)容,看到了這塊內(nèi)存保存字符串“Invalied password!”。

            到這里,就開始有點(diǎn)接近目標(biāo)了,這里就是校驗(yàn)密碼失敗后退出程序的地方,再往上一點(diǎn)代碼,應(yīng)該就是密碼校驗(yàn)的地方,在被那就有可能找到密碼存放的地方。

            這時就需要一點(diǎn)一點(diǎn)對121F:01F3(B409 MOV AH,09)前面的地址進(jìn)行反匯編,由于intel x86 CPU的指令不是定長的,因此選定的反匯編起始地址不對可能會得到不正確的指令。

            用debug反匯編 121F:01CE處的代碼

            用 u 命令一直往前反匯編,在 121F:01CE 這個地方可以看到調(diào)用了DOS 21H的07號功能,這段代碼是讀取鍵盤輸入的內(nèi)容到寄存器AL,然后將AL的內(nèi)容和 0xF0 這16進(jìn)制數(shù)進(jìn)行XOR運(yùn)算結(jié)果保存到AL,最后把寄存器AL的內(nèi)容保存到寄存器 SI 指向的內(nèi)存地址。

            這樣看來,密碼可能與 F0 做過XOR運(yùn)算,因此只需要找到內(nèi)存中的密碼,用XOR就能還原出密碼來。

            繼續(xù)往下反匯編

            用debug反匯編121F:01E3處的代碼

            這里可以看到,這是一段字符串比較的代碼,具體的細(xì)節(jié)可以查 intel 匯編語言,這里大概的意思就是把內(nèi)存 0107 (沒有指明段地址,默認(rèn)還是121F)裝載到寄存器CL,REPZ CMPSB 會根據(jù) CX(CH被XOR指令設(shè)為0) 的值作為循環(huán)的次數(shù)比較SI 和 DI 指向的內(nèi)存,每比較一個字符串,就SI、DI寄存器就加1,CX寄存器就減1。

            MOV SI,0108MOV DI,028D

            毫無疑問,這里此時SI和DI保存的就是鍵盤輸入的口令和程序預(yù)設(shè)密碼的內(nèi)存地址,至于預(yù)設(shè)密碼的地址保存在SI還是DI,這可以往前反匯編查看鍵盤輸入的口令保存在位置,這樣可以反推出密碼存放的地址。

            在這程序里,從代碼中可以看到,SI初始化為0108 (沒有指明段地址,默認(rèn)還是121F),而0107保存了要比較的字符串的長度,因此有理由判斷密碼可能保存在 121F:0108 這個地方。

            于是執(zhí)行debug 的d指令查看 121F:0107

            用debug查看內(nèi)存

            這里可以看到0107處的內(nèi)存是04,后面跟著4個C2,這里就可以比較肯定的判斷,密碼長度是4,密碼的內(nèi)容是4個C2,當(dāng)然這密碼是和前面提到 0xF0 進(jìn)行XOR運(yùn)算的結(jié)果。

            現(xiàn)在,就開始嘗試還原密碼用計算器或者上網(wǎng)隨便找個進(jìn)制轉(zhuǎn)換的網(wǎng)頁進(jìn)行進(jìn)制轉(zhuǎn)換。

            換算的結(jié)果是

            F0的二進(jìn)制表示為11110000

            C2對應(yīng)的二進(jìn)制是11000010

            把 11000010 和 11110000做 XOR 運(yùn)算得到

            1111000011000010 xor00110010

            得到的結(jié)果是 00110010,轉(zhuǎn)換為16進(jìn)制是0x32,通過查ASC碼表得到對應(yīng)的字符是'2',就是說密碼是"2222"。

            退出debug,再次執(zhí)行README.EXE,輸入密碼 2222,最后密碼校驗(yàn)通過,顯示出里面的內(nèi)容。

            密碼校驗(yàn)通過后顯示的內(nèi)容

            至此,這個來自上世紀(jì)的密碼就被破解了。

            從文件的內(nèi)容看光盤里面存放是軟盤鏡像IMG格式文件,這有可能當(dāng)時電腦店用的光盤,那時還沒有電腦城,可每個城市會有一兩家電腦店,日常除了賣電腦給單位外,還會賣一些軟件拷貝給用戶,那時光驅(qū)還沒普及,也沒有U盤和移動硬盤,拷貝軟件一般用軟盤,所以這些軟件一般是用軟盤鏡像IMG格式存放在光盤里,用戶根據(jù)目錄選好要拷貝的軟件后,店員就會用HD-COPY這個軟件從光盤上拷貝到用戶的軟盤上,我還記得當(dāng)時是10元拷貝一張軟盤。

            為什么這些軟件的軟盤鏡像文件會放在光盤上呢?這是因?yàn)楫?dāng)時電腦的硬盤空間極少有超過1GB的,通常的都是幾百M(fèi)B,甚至一些電腦是沒有硬盤的,而一張光盤有600多MB,一家電腦店通常會有十幾張這樣的光盤,里面有操作系統(tǒng),漢字系統(tǒng),字處理軟件,工具軟件,游戲也是極少的,即使有游戲也是很簡陋也不好玩的游戲,好玩的游戲要等光驅(qū)開始普及的時候才看到。

            從列出的軟件來看,這張光盤應(yīng)該比較后期的了,而這個密碼可能是印在光盤的封面上的,也或許是這種光盤最初是在電腦店之間流通,加上密碼可能是為了保護(hù)光盤的制作人的利益。

            到光驅(qū)開始普及后,在市面上也能賣到這種裝滿軟件光盤,但逐漸的里面的軟件就是直接放在目錄里面,不用做成軟盤鏡像格式了,因?yàn)榉奖阌脩艟椭苯釉诠獗P運(yùn)行軟件的安裝程序。

            最后說一下,這個 README.EXE 其實(shí)不是用匯編語言開發(fā),至少不是全部是用匯編開發(fā)的,在一開始在Linux下用strings檢查文件的時候看到了 "Borland" "Turbo-C"的字樣,Borland的C編譯器在當(dāng)時很出名,可以生成很精簡的高質(zhì)量的機(jī)器碼,因此用debug跟蹤下來比較順利。

            本文發(fā)布于:2023-02-28 20:13:00,感謝您對本站的認(rèn)可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167766404682124.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:debug.exe(debug.exe是什么文件).doc

            本文 PDF 下載地址:debug.exe(debug.exe是什么文件).pdf

            標(biāo)簽:文件   debug   exe
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗(yàn)證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實(shí)用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 啊┅┅快┅┅用力啊岳网站| 日本高清视频网站www| 国产视频一区二区三区四区视频 | 日韩中文字幕在线不卡一区 | 亚洲av鲁丝一区二区三区黄| 欧美日韩一线| 国产毛片精品av一区二区| 日韩深夜免费在线观看| 99久久99久久精品免费看蜜桃| 日本区二区三区不卡视频| yw尤物av无码国产在线观看| 日本污视频在线观看| 国产成人无码一区二区三区| 色综合国产一区二区三区| 国产老妇伦国产熟女老妇高清| 午夜男女爽爽影院在线| 亚洲欧洲日产国产av无码| 日本中文一二区有码在线| 亚洲天堂伊人久久a成人| 欧美国产日产一区二区| 又色又爽又黄的视频国产| 亚洲各类熟女们中文字幕| 久久久无码精品亚洲日韩蜜臀浪潮 | 青青草欧美| 国产精品区一区第一页| AV成人午夜无码一区二区| 日韩永久永久永久黄色大片| 日本极品少妇videossexhd| 综合激情网一区二区三区| 亚洲欧洲精品国产二码| 三上悠亚精品一区二区久久| 久久99热只有频精品6狠狠| 91麻豆国产精品91久久久| 亚洲av日韩在线资源| 日本熟日本熟妇在线视频| 亚洲一区二区三区在线观看精品中文| 少妇潮喷无码白浆水视频| 国产台湾黄色av一区二区| 日本一区二区三区在线 |观看| 99久久国产福利自产拍| 在线观看成人永久免费网站|