日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件逆向—— ExifPro 2.1

發(fā)布時間:2023/12/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件逆向—— ExifPro 2.1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Exifpro是一款小巧簡便的圖像瀏覽工具,比較適合像我這樣的新手用于逆向分析。

實驗目的

分析Exifpro主要注冊函數(shù)功能及其實現(xiàn)原理,通過修改,實現(xiàn)對Exifpro的破解。

實驗環(huán)境

  • win10虛擬機
  • PEID 0.95
  • Ollydbg
  • Exifpro 2.1
  • 實驗步驟

    查殼

    利用PEID程序查殼,發(fā)現(xiàn)該程序無殼,這方便了我們的分析判斷。

    打開軟件調(diào)試

    我們打開Exifpro,查看其版本信息。發(fā)現(xiàn)目前是尚未注冊登錄的版本。

    我們打開輸入序列號的窗口,嘗試向其中輸入不同的數(shù)值,看看軟件會有什么反應。
    1.不輸入

    2.輸入格式錯誤的郵箱

    3.隨機輸入一段序列號

    這些提示窗口的字符串其實是一種非常有用的信息,我們可以通過這些字符串,嘗試定位到相對應的程序段。

    定位到程序段

    利用ollydbg打開Exifpro程序

    右鍵點擊,選擇中文引擎搜索中的智能搜索

    在中文搜索引擎頁面右鍵點擊,選擇find。將“Serial number is invalid”輸入其中,點擊確定。


    雙擊跳轉(zhuǎn)到相應地址處。

    尋找函數(shù)開頭并下設斷點

    我們向上尋找該函數(shù)的開頭位置。在00482BC2處發(fā)現(xiàn)有個retn指令,我們可以推斷從下一條指令push 0x10開始,是該函數(shù)的開頭位置。

    我們雙擊6A 10 處,在此下設斷點,逐步開始調(diào)試。

    我們在利用ollydbg打開的ExifPro中輸入郵箱名稱和序列號。再次點擊確定,由于在此處已經(jīng)下設了斷點,所以程序此時沒有反應。注意此時的所輸入的序列號和郵箱地址,在以后的分析中會有所用到。

    逐步跟蹤分析程序

    點擊F8一步步的跟蹤程序的進行
    lea是“l(fā)oad effective address”的縮寫,該指令負責將內(nèi)存的地址賦值給一個操作數(shù)。在這里,利用lea指令將存放郵箱字符串的地址賦值到ebx中。

    在這里,是比較輸入郵箱的長度,如果郵箱的長度小于5,則視為不合法郵箱,進行跳轉(zhuǎn)。畢竟對于任意一個郵箱來說,"@.com"長度已經(jīng)達到了5。而在本次實驗中,我們的郵箱長度是13


    如果郵箱長度小于5則會跳轉(zhuǎn)至此處,同時會彈出窗口“請輸入有效郵箱“

    在這里的eax記錄的是郵箱賬號@前面字符序列的長度,如果在輸入郵箱時輸入的是非法字符,如@345312.com之類的,系統(tǒng)也會檢測出來。

    在這里程序取了序列號的長度放到了eax中,若長度小于4,就會彈出“輸入有效序列號”的彈窗。

    這一段主要是計算序列號的長度并遍歷的時候進行排查。與上面一段不同,這里考慮到了序列號中存在的空格和“-”的情況。用eax存放數(shù)值,值得注意的是,這里存放的是字符串類型。紅框中間有兩段比較函數(shù),分別是拿eax與0x20和0x2D比較,0x20就是空格,0x2D就是“-”。空格和“-”不計入序列號長度,這里計算的長度就是真實的數(shù)字長度,將計算結(jié)果存放在esi中。

    這一段代碼是判斷序列號長度是否為24位,若未達到24位,則會報警說序列號無效。

    取序列號前22位的和

    這一段是檢測第23位*10+第24位的數(shù)是否與前22位取后兩位的值相等。在本次實驗中,我們?nèi)〉氖?8和93,兩者是不相等的。

    因此他跳轉(zhuǎn)到彈出警告窗口處


    我們修改起初輸入的序列號,改為“123456781234567812345693”試試,這一段是符合剛才的要求的。我們再試一次。

    這一串代碼主要是實現(xiàn)將序列號前二十位由字符形式合成為一個整數(shù),其中ExifPro._allmul函數(shù),負責將每一位都×10。

    通過這三條指令,先將郵箱號壓入棧中,通過ExifPro.NameToNumber函數(shù)將字符串轉(zhuǎn)為對應的數(shù)字,再從棧中取出放到ecx中。


    再往后運行后,我們發(fā)現(xiàn)點擊確定后并沒有提示框的出現(xiàn)。起初,我以為這樣是破解成功了,但我打開“About”后發(fā)現(xiàn),其實并沒有注冊成功。我估計后臺還有其他的檢測函數(shù),比如檢測用戶名和序列號的匹配關(guān)系。所以我換了個思路。

    在主程序段搜索“Unregistered Version”,跳轉(zhuǎn)到相應界面。

    我們再網(wǎng)上找,找到了這個函數(shù)。ExifPro.IsAppRegistered,根據(jù)英文意思我們就可以推斷出這是個判斷是否注冊的函數(shù)。我們觀察發(fā)現(xiàn)這個call的返回值決定了程序是否跳轉(zhuǎn)到402087處,而402087處就是顯示“未注冊版本”的地方。

    我們跟隨進該call中進行查看,發(fā)現(xiàn)該call在最后將bl的值復制到al中結(jié)束。于是我們把這句話改為MOV AL, 0x1


    運行一次試試,大功告成

    總結(jié)

    以上是生活随笔為你收集整理的软件逆向—— ExifPro 2.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。