.Net真是逆向的時候和寫的時候一樣爽www
ComicDown最以前是一個(腐)妹紙推薦給我的,說是神器;一用,果然是神器;現在我也還用著。能在我電腦上留它這麼久的軟體也算屈指可數了-w-
(好了馬屁拍完了
現在把以前的comicdown翻出來看,發現那時它還用的是.net 2.0的框架,用的是飛信一樣的自帶vm;現在名字改成了千尋漫畫盒,換了.net 4.0,但是代碼還是沒有被混淆(笑
因為隨手用7zip打開了站點包cdp文件,但是無法解壓提示校驗失敗,甚覺気になります,準備干點猥瑣的事情(๑>◡<๑)
於是用.Net Relector,從主程序開始順藤摸瓜,摸啊摸啊……
摸到了這個庫ComicDown.Plugin, 在裡面定義了四個類
1 2 3 4 5 6 7 8 9 10 |
namespace ComicDown.Plugin { public sealed class CdpFile [JsonObject(MemberSerialization.OptIn)] public sealed class CdpHeader public static class CdpLoader public static class LocalConfig public static class SiteLoader } Expand Types |
就是它了。在CdpLoader類中即為cdp文件的加解密實現。實際上就是交換了7z數據段的某兩段。在這裡不想詳細描述文件的結構,有一點很有趣的是,cdp的文件結構利用了壓縮文件的文件頭,因為解壓縮軟體在確定壓縮文件格式的時候,都會從頭開始掃描標誌位(比如7z的就是0x377a),因此可以在標誌位前添加任意奇怪的東西,解壓時會被當做自解壓頭而被忽略。其實利用這個的很有名的例子就是圖種
這裡是一個cdp解包的python的實現,輸入cdp,輸出是正常的7z文件
cdp中一個clst文件是網站所有漫畫的名稱和url,一個超長的json;另一個dll也是.net的,繼承ComicDown.Core.Interface下的一些類來提供正則匹配網頁內容的介面;都是可以利用的資源ww
逆向.net寫的程序超沒成就感的.(。→‿←。)
順帶一提,最以前的comicdown是這個樣子的
是不是該給xeHentai加個界面了呢( ´◔ ‸◔’)
360zip
哈哈哈哈這個是作者的截圖
yeyy me – 看片你懂的,me前面加點
太喜歡了