實戰破解思科模擬器packet tracer-去除登陸視窗
宣告:本人首發於合天智匯
當我們想要破解一個軟體時,個人認為最重要的就是對它的關鍵程式碼進行定位(ps:這裡的關鍵程式碼是相對於我們而言的,比如想要去掉軟體的啟動頁廣告,其中一個思路時可以找到它載入的地方。分析一下,判斷哪裡判斷是否啟動頁載入的邏輯 改掉它就好啦)
一,背景:因為學的專業開設有路由交換這門課,但是呢,每次啟動都有一個煩人的登入頁
每次都是選擇遊客模式,這不是最關鍵,關鍵就是必須等待15秒才可以進入
百度谷歌了一波,居然找不到破解版,也沒找到任何相關教程,心裡有點涼
不過作為一個逆向菜雞,真的是忍不了(ps: 好久沒實戰破解過了,拿來練練手也不錯嘛)
二,破解時用到的:環境(學校用的版本是6.3,我用的win10x64位系統),工具(PEiD,IDA Pro, Pexplorer,Olydbg,Spy++,x32dbg),方法(單步跟蹤,各種回溯,各種斷點等等),咳咳,最重要的就是眼手不能停,其他版本大家自己嘗試
三,最後想要實現:就是跳過等待時間,直接進入模擬器
最好是可以直接去除Nag(登陸頁面)
四,簡單說下過程:本例中採用最簡單的思路,就是查詢關鍵字串
首先觀察下這個頁面能挖出什麼資訊,這裡我主要就是利用這三個字串
軟體很大 IDA對於我這種菜雞也派不上用場,而且載入和OD一樣賊慢
這裡我選用x32dbg
反彙編視窗右鍵,選擇字串,所有模組
我先過濾了一下ollydbg,這裡就是過濾關鍵字元;
發現有以下兩個字串瞬間明白肯定是有對ollydbg的反除錯:發現有ollydbg,結用ollydbg沒辦法動態除錯,就是軟體的反除錯機制,有些公司會專門針對反編譯軟體做反除錯看一個程式有沒有對你的反編譯軟體做處理,過濾名字就是一種思路
難怪用ollydbg沒辦法進行動態除錯(ps:這裡沒有仔細研究是怎麼做的,不是本文重點)
再過濾一下Login,發現有Guess Login,還有一些網址之類的
本來想到可以直接從網址入手,但是不行,這個網址只是用來與伺服器互動的
我本來就不想登陸賬號
向下翻就突然發現 set login banner之類的
心想banner不是那個橫幅什麼的嘛,下了斷點,去試試
找到斷首,逐行向下單步分析,結果發現沒什麼用。。。
又回到字串那裡,乖乖的把所有的Guest Login下上了斷點
除錯到這裡的時候,突然Guest Login那個按鈕變灰並出現了15
這時候心裡非常開心,以為附近就是關鍵點
這樣就可以跳過這個計時器或者改變數值15為0
結果除錯著除錯著我就亂了
不知道程式執行到哪了,單步了估計300次,不變14。。。
然後重新載入,有些覺得和這個沒啥關係的call直接跳過(ps:好多可以根據註釋還有名字來判斷它的作用)
單步著,單步著,突然發現15變成14了
單步向下時多次在下面這兩個跳轉直間來回跳,將上面那個je跳轉雙擊改成jmp之後
F9執行兩次
發現按鈕上面的字元變了,從Guest變成了Gue
接著13,可以看到我將je跳轉還原之後,又變成了Gues
這裡簡單解釋一下
12了:
然後發現註釋窗口出現了“Time: %1“這樣的字串
想著這不是跟時間有關嘛
那這個倒計時處理函式肯定也在附近 (ps:這時候一直在找這個函式所在位置)
接著
又出現了一個“2timeout()“,不知道何方神聖,繼續單步
除錯到這裡的時候,發現了Guest Login(11)
就想著給它下一個記憶體斷點
右鍵選擇,在記憶體視窗中轉到雙字
右鍵設定硬體訪問斷點(Dword)
到這裡就徹底凌亂了,程式一個勁兒的暫停,不是異常就是記憶體短點
後來想著是不是太長了,就重新刪除,又只在11處下斷點
結果還是一樣,因為單步操作的快捷鍵是F8,所以我鍵盤的F8要炸了
滑鼠點選也可以單步,手指也有點涼
好吧,到這裡都要打算放棄了,因為機房9.30就鎖門了
回宿舍的路上感覺好不甘心呀
又想了想是不是思路有問題,換種思路行不行
一直都在想辦法找到控制倒計時的地方
那可不可以直接在載入這個登陸頁面的地方搞一下呢
回到宿舍後,立即進入狀態
重新載入,回到斷點視窗
雙擊進入
向上翻,發現全都是一些初始化的資訊,猜測是不是Nag(登陸視窗也會在這裡初始化)
後來發現這附近就這一個可能的跳轉,心想著試試吧,不行就洗洗睡了
修改下ZF標誌位的值使得je跳轉成立
方法:右側暫存器視窗,雙擊ZF後面的0使他變成1就可以,這時可以發現CPU視窗跳轉那條線變紅
接著直接F9執行,發現居然跳過了登入視窗,直接進入主程式了,哈哈哈,開心
好的,我們既然已經知道了這個je是決定時是否載入登入視窗的關鍵跳轉
那我們將這裡雙擊修改成jmp
接著選中被修改的部分(ps:這裡可以多選)
Ctrl + P開啟補丁視窗,點選修補檔案,選擇你想要修補的源程式(ps:這裡大家可以先備份下,這樣的話修改出錯能夠及時恢復)
總結一下:本來是想要改判斷倒計時的邏輯,結果不成,但是可以找到載入登入視窗的地方,改這裡同樣可以達到效果
修改的地方就這一處就好,但是除錯過程非常麻煩,需要大量時間,我用了好幾個小時才成功,其實還是太菜了,肯定有更簡單的方法,希望有師傅可以指點一下,還有就是分析過程肯定錯誤不少,希望可以指出,感激不盡。