容易Crack與Hacker思維打造靈巧后門
發(fā)表時間:2023-05-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]適合讀者:破解迷、黑兵器庫老板 前置知識:Crack工具的基本使用方法 Icefire:長久以來破解愛好者們都在不斷地尋求一種方式, 可以突破Cracker局限的方式, 可以不單單在各類軟件中隨...
適合讀者:破解迷、黑兵器庫老板
前置知識:Crack工具的基本使用方法
Icefire:長久以來破解愛好者們都在不斷地尋求一種方式, 可以突破Cracker局限的方式, 可以不單單在各類軟件中隨意馳騁, 更能在網(wǎng)絡(luò)這塊天地中自由翱翔。 或許本文就提供了一種讓二者結(jié)合更巧妙的方式
適合讀者:破解迷、黑兵器庫老板
前置知識:Crack工具的基本使用方法
Icefire:長久以來破解愛好者們都在不斷地尋求一種方式, 可以突破Cracker局限的方式, 可以不單單在各類軟件中隨意馳騁, 更能在網(wǎng)絡(luò)這塊天地中自由翱翔。 或許本文就提供了一種讓二者結(jié)合更巧妙的方式, 希望能給你一點啟發(fā)。
簡單Crack與Hacker思維打造靈巧后門
文/ dickboy
相信這篇文章的出現(xiàn)將造成網(wǎng)絡(luò)電視之類的東西漫天飛舞(或許還有一種新興后門), 我可沒有一點點私心啊, 知道這點東西就立刻和大家分享了。
同學(xué)想看網(wǎng)絡(luò)電視, 可惜程序要注冊, 把我這個義工叫了過去, 幾下搞定后, 一看注冊費……還真不是一般的貴!要不咱也寫一個得了?說不定也可以搞點錢花花。 住宿費還欠著呢, 不交錢不讓考試, 窮人家的孩子。↖cefire:同道同道!想當(dāng)初……唉, 還是不想了, 大過年的。 ), 5555……。 可惜我也不知道怎么寫, 我還沒有學(xué)過Windows編程, 還記得上期雜志我的文章《Crack新手進化篇》嗎?我的補丁程序可是黑忽忽的界面!哎, 沒有辦法啊, 不會Windows編程, 只好分析別人的程序了, 就拿網(wǎng)絡(luò)電視小精靈下手吧!
Peid檢查后發(fā)現(xiàn)是用Delphi編寫的, 郁悶, 很難找到是哪個函數(shù)自動打開Realplay或Media Player播放影音資料的, 要是用VC++編寫的就好了。 到網(wǎng)上找了幾個類似的網(wǎng)絡(luò)電視程序, 不是Delphi就是VB寫的。 沒有一個VC++的, 只好對網(wǎng)絡(luò)電視小精靈動真功夫了——按江湖規(guī)矩, 我們單挑……那個拿蔥的大嬸你過來!
Crack思維
用Dede反編譯, Tnit1的TForm1看到很多事件, 仔細(xì)看看, 看到了一個CCTV1Click事件, 雙擊來到對應(yīng)代碼:
004A1A80 53 push ebx
004A1A81 8BD8 mov ebx, eax
004A1A83 6A01 push $01
004A1A85 6A00 push $00
004A1A87 6A00 push $00
* Possible String Reference to: 'http://www.cctv.com/sports/'
004A1A89 68A01A4A00 push $004A1AA0
004A1A8E 6A00 push $00
004A1A90 8BC3 mov eax, ebx
* Reference to: QForms.TCustomForm.GetClientHandle(TCustomForm):QWorkspaceH;
004A1A92 E88501FAFF call 00441C1C
004A1A97 50 push eax
* Reference to: shell32.ShellExecuteA()
004A1A98 E89B94F8FF call 0042AF38
004A1A9D 5B pop ebx
004A1A9E C3 ret
嘿嘿, 原來用的ShellExecuteA。 打開Ollydbg, 載入網(wǎng)絡(luò)電視小精靈, 下斷點在004A1A80, 也就是CCTV1Click事件開始的第一條語句。 運行, 點擊中央一臺, 開始播放了……等等, 不對啊, 竟然沒有斷下?!仔細(xì)看看網(wǎng)址, 原來用的ShellExecuteA是打開網(wǎng)頁http://www.cctv.com/sports/的, CCTV1Click不是調(diào)用Media Player.exe打開中央一臺的事件, 那這個到底是什么東東呢?打開網(wǎng)絡(luò)電視小精靈看看, 在網(wǎng)絡(luò)導(dǎo)航的體育欄目看到了原來是點擊CCTV體育的事件, 暈倒。
繼續(xù), 再找一個熟悉的:BBC1Click, 從名字上看, 應(yīng)該是播放BBC電臺或者電視臺的事件(不知道有沒有BBC電視臺, 呵呵), 雙擊來到對應(yīng)的地方, 發(fā)現(xiàn)這次的代碼和上面的完全不同:
0048E298 BAB0E24800 mov edx, $0048E2B0
* Reference to control TForm1.WebBrowser1 : TWebBrowser
0048E29D 8B805C040000 mov eax, [eax+$045C]
* Reference to : TWebBrowser._PROC_0046395C()
0048E2A3 E8B456FDFF call 0046395C
0048E2A8 C3 ret
分析發(fā)現(xiàn)網(wǎng)絡(luò)電視小精靈似乎使用TWebBrowser構(gòu)件來播放網(wǎng)上的影音資料。 趕緊從網(wǎng)上找了一下TWebBrowser的資料, 原來是Delphi的一個控件……不會啊, 沒辦法。 不能死心, 再找其它的事件——12:00了, 還是睡覺再說, 明天早上還要上課呢!
剛躺到床上, 突然想起前面的ShellExecuteA不是可以打開網(wǎng)頁嗎?那還有沒有其它作用呢?趕緊起床!用IDA反匯編網(wǎng)絡(luò)電視小精靈, 找到ShellExecuteA(不要問我怎么找的, 在Names選項), IDA就是好啊, 給出了注釋:
jmp ds:__imp_ShellExecuteA ; Opens or prints a specified file
看到了嗎?簡單翻譯應(yīng)該是:打開或打印一個具體文件。
看來有希望, 網(wǎng)上看電影不也是打開一個具體文件嗎?還記得用Realone網(wǎng)上看電影吧, 突然掉線的時候, 是不是彈出一個對話框, 說什么*.rm不能播放。 趕緊用百度查了查ShellExecuteA的資料, 哇, 太多了, 大部分都是VB中怎么用這個控件, 沒有一個我要的。 靈機一動, 換一種思維方式:當(dāng)我們點擊一個電視臺或者廣播臺的時候, 不是用Media Player.exe打開就是用Realplay.exe打開的。 所以, 要是可以用ShellExecuteA并且用Realplay.exe作為參數(shù)可以打開一個網(wǎng)上的影音文件, 那么用“ShellExecuteA realplay.exe”搜索應(yīng)該是有結(jié)果的。
好了, 搜索“ShellExecuteA realplay.exe”, 沒有發(fā)現(xiàn), , 不會吧?Ok, 再來搜索ShellExecuteA Media Player.exe, 也是一個結(jié)果也沒有。 只好出絕招了, 拿出Cracker必備的API手冊, 查ShellExecuteA, 居然是用VB描述的……
第二天上課的時候沒有心思, 繼續(xù)想這個問題, 沒有什么結(jié)果, 回到寢室, 查MSDN, 有發(fā)現(xiàn)了:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
lpOperation支持的用法有:
edit
Launches an editor and opens the document for editing. If lpFile is not a document file, the function will fail.
explore
Explores the folder specified by lpFile.
find
Initiates a search starting from the specified directory.
open
Opens the file specified by the lpFile parameter. The file can be an executable file, a document file, or a folder.
print
Prints the document file specified by lpFile. If lpFile is not a document file, the function will fail.
英語菜, 就不翻譯了, 更具體請查閱MSDN, 我怕說我騙稿費。 到這里, 你有什么想法?lpOperation已經(jīng)指出了一些操作, 對編寫網(wǎng)絡(luò)電視有用的只有上面的“open”。 后來從網(wǎng)上找到了《深入淺出ShellExecute》:
Q:如何打開一個網(wǎng)頁?
ShellExecute(this->m_hWnd,"open","notepad.exe", "c:\\MyLog.log","",SW_SHOW );
As you can see, I haven't passed the full path of the programs.
ShellExecute(this->m_hWnd, "open", "http://www.google.com", "", "", SW_SHOW );
你覺得哪個更有用呢?第一個?實驗一下, 假如我替換Notepad.exe為Media Player.exe, 替換“c:\\MyLog.log”為“d:\\t.mid”, 當(dāng)然這里的“d:\\t.mid”是真實存在的MID音樂, 這樣行嗎?先簡單測試一下。 選擇開始菜單->運行, 輸入“Media Player.exe d:\t.mid”, 彈出Windows Media Player開始播放t.mid了。
趕快用VC新建一個Win32 Console Application工程, 輸入如下代碼:
#include <windows.h>
int main(int argc, char* argv[])
{
ShellExecute(0, "open", "Media Player.exe", "d:\\t.mid", "", SW_SHOW);
return 0;
}
執(zhí)行, 呵呵, 是不是一個黑忽忽的界面之后, 彈出Windows Media Player開始播放t.mid了?成功!
小提示:Windows 98不是Media Player.exe, 98下面是Mplayer2.exe, 請大家對照自己的機器做實驗。 文中的機器是Windows XP。
第二個例子打開一個網(wǎng)頁, 用什么打開呢?用IE, 確切的說是用默認(rèn)的瀏覽器, 因為這里沒有指定有什么打開, 也就是說打開網(wǎng)頁有一個關(guān)聯(lián)程序, 也就是默認(rèn)的瀏覽器。 發(fā)散一下思維, 如果把這里的http://www.google.com換成其它呢?這里我換成“d:\\t.mid”, 趕快用VC新建一個Win32 Console Application工程, 輸入如下代碼:
#include <windows.h>
int main(int argc, char* argv[])
{
ShellExecute(0, "open", "d:\\t.mid", "", "", SW_SHOW);
//注意與上面的不同之處,去掉了“Media Player.exe”, 同時要打開文件的具體位置成了第3個參數(shù)
return 0;
}
執(zhí)行, 呵呵, 是不是一個黑忽忽的界面之后彈出Windows Media Player開始播放t.mid了。 因為我測試的機器默認(rèn)MID關(guān)聯(lián)Windows Media Player。 這就是為什么我在上面強調(diào)“打開網(wǎng)頁關(guān)聯(lián)默認(rèn)的瀏覽器”, 如果你的機器默認(rèn)關(guān)聯(lián)其它的播放器(如豪杰系列), 則應(yīng)該彈出豪杰的超級音頻解霸播放t.mid。
已經(jīng)出現(xiàn)曙光了, 現(xiàn)在到Baidu找一首歌曲, 我找的是:陳慧琳-記事本。 查看屬性, 得到地址:http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash/ZzI$.mp3
繼續(xù)修改程序:
hellExecute(0, "open", "http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash//ZzI$.mp3", "", "", SW_SHOW );
小提示:這個地址是Baidu搜索的, 到讀者測試的時候可能已經(jīng)過時了。
運行, Windows Media Player開始播放陳慧琳的記事本了!成功!
Hacker思維
當(dāng)我們上網(wǎng)看電視的時候, Windows Media Player或者Realone會打開網(wǎng)絡(luò)電視內(nèi)置的網(wǎng)址, 這個網(wǎng)址是要作為Windows Media Player或者Realone的請求發(fā)給服務(wù)器的, 所以這里有兩個方法:
1. 既然是網(wǎng)絡(luò)電視內(nèi)置的網(wǎng)址, 那么我們可以先用W32dasm反匯編之后去找網(wǎng)址。
這里仍以網(wǎng)絡(luò)電視小精靈為例, 用W32dasm反匯編, 會發(fā)現(xiàn)大量的網(wǎng)址, 但是仔細(xì)看, 會發(fā)現(xiàn)幾乎沒有一個網(wǎng)址是用來看電視和聽廣播的, 都是網(wǎng)絡(luò)電視小精靈里面網(wǎng)絡(luò)導(dǎo)航提供的網(wǎng)址。 似乎此路不通?等等, 再用Ollydbg載入網(wǎng)絡(luò)電視小精靈, 查看字符參考, 沒有吃驚吧?基本可以找到所有的看電視和聽廣播的網(wǎng)址。
2. 既然這個網(wǎng)址是要作為Windows Media Player或者Realone的請求發(fā)給服務(wù)器, 所以我們可以用Sniffer獲得真實地址。
測試時我用的Commview, 個人覺得這是我等菜鳥最好用的Sniffer, 這里我簡單說一下, 設(shè)置過濾條件:IP為自己機器的IP, 只捕獲流出的數(shù)據(jù)包。 設(shè)置協(xié)議, 因為播放影音文件一般的協(xié)議有這些:mms://, rtsp://等。 如果捕獲不到地址, 放寬條件就可以了。
Ok, 現(xiàn)在解決了所有問題, 剩下的就是不停地加入網(wǎng)址, 寫代碼了。 下面談?wù)勗趺蠢肧hellExecute做一個屬于自己的隱蔽的后門, 這也是從上面的內(nèi)容中引發(fā)的靈感。 先看以下代碼:
// test.cpp:定義控制臺應(yīng)用程序的入口點
//
#include <windows.h>
int main(int argc, char* argv[])
{
ShellExecute(0, "open", "Media Player.exe", "d:\\t.mid", 0, SW_HIDE);
return 0;
}
測試上面的代碼, 運行, 有什么發(fā)現(xiàn)嗎?應(yīng)該有吧:黑忽忽的界面之后, 聽到音樂了吧!但是看到“Media Player”的界面了嗎?沒有!這是因為最后一個參數(shù)改為了SW_HIDE;如果這里第2個參數(shù)不用Open, 而用0則不會呈現(xiàn)“Media Player”的界面, 但是卻在播放音樂——想到了什么?仔細(xì)想想, 如果這里不是Media Player.exe, 而是你的木馬xx.exe?你用另外的一個正常的程序悄悄啟動xx.exe?呵呵, 這個想法不錯吧!這可是擁有不容易被殺死的極品后門!
好了, 文章到這里就結(jié)束了, 希望大家能看明白, 我要在上面寫出ShellExecute的原型就是因為我想讓朋友們?nèi)グl(fā)掘每一個參數(shù)的意義, 說不定就能發(fā)現(xiàn)寶藏哦!
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識,學(xué)習(xí)了安全知識,幾乎可以讓你免費電腦中毒的煩擾。