明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

容易Crack與Hacker思維打造靈巧后門

[摘要]適合讀者:破解迷、黑兵器庫老板 前置知識: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í)了安全知識,幾乎可以讓你免費電腦中毒的煩擾。