打造自己的網路電視(菜鳥級)
標 題:打造自己的網路電視(菜鳥級)
發信人:ngaut
時 間:2005-01-04,11:05
詳細資訊:
相信這篇文章的出現將造成網路電視之類的東西漫天飛舞
1.事情起因
同學想看什麼網路電視,要註冊,把我這個義工叫了過去,幾下搞定了,一看註冊費,嘿嘿,要不我也寫一個得了,說不定我也可以搞點錢花花,住宿費還欠著呢,不交錢不讓考試,窮人家的孩子啊,5555~。可是,我也不知道怎麼寫啊,我還沒有學過windows程式設計啊,還記得上期雜誌我的文章《crack新手進化篇》嗎?我的補丁程式是黑忽忽的介面啊,哎,沒有辦法啊,不會windows程式設計,只好分析別人的程式了,就拿網路電視小精靈下手,peid檢查,delphi編寫,鬱悶,很難找到是哪個函式自動開啟realplay或wmplayer播放影音資料的,要是vc++編寫的就好了啊,只要作者不刻意加密,嘿嘿,到網上找了幾個,我暈,不是delphi就是vb寫的。沒有一個vc++的,當然了,我沒有找所有的網路電視程式(PS:要是你有信心和耐心,不妨找找)要vb就不說了,太混亂了。只好對網路電視小精靈動真功夫了。
2.Cracker思維:
用dede反編譯,過程,Tnit1的TForm1看到很多事件,仔細看看,看出不少東西啊,看到了一個cctv1Click事件,雙擊來到對應程式碼:
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,載入網路電視小精靈,下斷004A1A80,也就是cctv1Click事件開始的第一條語句。執行,點選中央一臺,開始播放了,不對啊,竟然沒有斷下,仔細看看網址,原來用的ShellExecuteA開啟網頁 http://www.cctv.com/sports/ 的,cctv1Click不是呼叫wmplayer.exe開啟中央一臺的事件,那這個到底是什麼東東呢?開啟網路電視小精靈看看,在網路導航的體育欄目看到了原來是點選cctv體育的事件,果然如此,昏到。
繼續,再找一個熟悉的,BBC1Click,從名字上看,應該是播放bbc電臺或者電視臺(不知道有沒有bbc電視臺,呵呵)的事件,雙擊來到對應的地方,有發現,這次的程式碼和上面的完全不同:
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
分析發現網路電視小精靈似乎使用TWebBrowser構件,來播放網上的影音資料。趕緊從網上找了一下
TWebBrowser的資料,原來是delphi的一個控制元件,不死心,再找其他的事件,不是網頁的基本都是用TWebBrowser構件,看來沒有戲唱了。
不管了,12:00睡覺在說,明天早上還要上課呢?
剛躺到床上,突然想起前面的ShellExecuteA不是可以開啟網頁嗎?那還有沒有其它作用呢?用ida反彙編網路電視小精靈,找到ShellExecuteA(不要問我怎麼找的啊,呵呵,在names選項),ok,ida就是好啊,給出了註釋:
jmp ds:__imp_ShellExecuteA ; Opens or prints a specified file
看到了嗎?簡單翻譯應該是:開啟或者列印一個具體檔案。(應該沒有翻譯錯吧,英語太差,4級才考了42分)
看來有希望,網上看電影不也是開啟一個具體檔案嗎?還記得你用realone網上看電影吧,突然掉線的時候,是不是彈出一個東東,說什麼......*.rm不能播放了,這就是一個具體檔案啊,呵呵。
趕緊用百度查了查ShellExecuteA的資料,哇,太多了,大部分都是vb中怎麼用,沒有一個我要的,靈機一動,換一種思維方式,當我們電擊一個電視臺或者廣播臺的時候,不是用wmplayer.exe開啟就是用realplay.exe開啟的(什麼?不知道上面2個是什麼東西,我暈,就是xp系統自帶的Windows Media Player和realone),所以,要是可以用ShellExecuteA 並且用 realplay.exe作為引數可以開啟一個網上的影音檔案,那麼用ShellExecuteA realplay.exe搜尋應該是有結果的。
好了,搜尋ShellExecuteA realplay.exe,哇,沒有發現,,不會吧。Ok,再來搜尋ShellExecuteA wmplayer.exe,也是一個結果也沒有。
只好出2招了,拿出cracker必備的api手冊,查ShellExecuteA,我暈,居然是用vb描述的。
算了。睡覺了。
第2天上課的時候沒有心思,繼續想這個問題,沒有什麼結果,回到同學寢室(因為我沒有電腦啊,只好用別人的了)查MSDN,有發現了:
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已經指出了一些操作,好象對編寫網路電視有用的只有上面的"open"啊。
還有以下幾個例子,這個函式非常有用,
如下:
To explore a folder,To open a folder,To launch the Shell's Find utility for a directory(沒有給出具體例子,請查閱msdn)
如果你看過:《自己試試:為OICQ新增顯示IP和埠功能》,《用pediy實現為程式新增對話方塊和網址的功能》,你就知道這個函式的功能實在太強大了,如過你看完了本文,你會發現ShellExecuteA的功能超級強(個人看法啊,沒有什麼windows程式設計經驗)。
後來從網上找到了《深入淺出ShellExecute》,這兩個值得借鑑(因為這個才有了我自己的測試和發現):
Q: 如何開啟一個網頁?
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為wmplayer.exe,替換
"c:\\MyLog.log"為"d:\\t.mid", 當然這裡的"d:\\t.mid"是真實存在的mid音樂,這樣行嗎?先簡單測試一下,開始選單,執行,輸入wmplayer.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", "wmplayer.exe", "d:\\t.mid", "", SW_SHOW);
return 0;
}
執行,呵呵,是不是一個黑忽忽的介面之後,彈出
Windows Media Player開始播放t.mid了.成功
注意:windows98不是wmplayer.exe,98下面是mplayer2.exe,windows2000不清楚,未具體測試.請大家對照自己的機器做實驗,PS:我同學的機器是xp
簡單思維,第2個例子開啟一個網頁(廢話),用什麼開啟的呢?用ie(我同學的機器),確切的說是用預設的瀏覽器,因為這裡沒有指定有什麼開啟,也就是說開啟網頁有一個關聯程式,也就是預設的瀏覽器。(一個磚頭飛過來,啊!, 借用周星馳的《整鬼專家》裡話(稍做修改)說:我拼了命的教你們,你們還拍板磚。)
是啊,大家都知道這個,可是,發散一下思維,如故把這裡的 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);
//注意與上面的不同之處,去掉了"wmplayer.exe",同時要開啟檔案的具體位置成了
//第3個引數
return 0;
}
執行,呵呵,是不是一個黑忽忽的介面之後,彈出
Windows Media Player開始播放t.mid了。因為我測試的機器預設mid關聯Windows Media Player,這就是為什麼我在上面強調“開啟網頁關聯預設的瀏覽器“,如果你的機器預設關聯其它的播放器(如豪傑系列),則應該彈出豪傑的超級音訊解霸播放t.mid
已經出現曙光了,現在到baidu找一首歌曲,我找的是:陳慧琳 - 記事本,檢視屬性,的到地址: http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash/ZzI$.mp3 ,ok,繼續修改:
ShellExecute(0, "open", "http://mp3.baidu.com/u?u=http://www.jsshmzx.com/zhuwei/geci/flash/
/ZzI$.mp3", "", "", SW_SHOW );
注意:這個地址是baidu搜尋的,到你測試的時候可能已經過時了。
執行,如何,呵呵,Windows Media Player開始播放:陳慧琳 的 記事本了吧。
那麼如果網上的檔案不被Windows Media Player支援呢?比如說:rm格式呢,那就用realone啊,這就是為什麼網路電視小精靈的幫助要提到的必被軟體。但是前提是realone關聯了rm格式,測試時請注意,具體測試我就不寫了,原理是一樣的。
但是請不要就此滿足,你可能覺得我要講的已經過了,但是我先想你可能沒有想過下面的東西:
ShellExecute(0, "open", "realplay”, "d:\\t.mid", 0, SW_MINIMIZE);
這裡強行指定播放器為realplay,現在你可能覺得真的夠了,如果我告訴你沒有,呵呵,是不是有中想扁我的衝動,沒有關係,還是那句話:“我拼了命的教你們,你們還拍板磚。”仔細的發覺一下,還會有讓你吃驚的東西,一會我會講到,我希望這篇文章能夠讓你覺得實踐和思維的重要性,我想做到授人以漁,而不是授人以魚,I am tring to free you mind。希望我可以做得到。
希望你還沒有忘記文章的標題,我們要打造自己的網路電視,關鍵技術已經解決了,不是嗎?
現在用任何視覺化程式設計工具打造你自己我網路電視吧,這裡我用vc++,因為我正在學c++啊,用MFC畫個介面,不要問我怎麼畫的,我也不會,我讓我同學幫我劃的,基本就是照著嚮導做的。然後新增程式碼。等等,這裡有個問題,我怎麼知道那麼多電視臺的網址呢?嘿嘿,這就是下面要說的問題了。
簡單hacker思維,當我們網上看電視的時候,Windows Media Player或者realone會開啟網路電視內建的網址,這個網址是要作為Windows Media Player或者realone的請求發給伺服器的。所以這裡有2個方法:
既然是網路電視內建的網址,那麼我們可以w32dasm反彙編之後去找網址,這裡仍以網路電視小精靈為例,反w32dasm彙編,會發現大量的網址,但是仔細看,會發現幾乎沒有一個網址是用來看電視和聽廣播的,都是網路電視小精靈裡面網路導航提供的網址。似乎此路不同,是嗎?用ollydbg載入網路電視小精靈,檢視字元參考,沒有吃驚吧,基本可以找到所有的看電視和聽廣播的網址。為什麼w32dasm不可以,而ollydbg可以呢?(注:我用ollydbg僅僅是載入,還沒有開始除錯,這個時候應該也相當於靜態反彙編,經測試ida靜態反彙編也不能獲取看電視和聽廣播的網址)
其實我也不知道,還請大家指點啊。
當然還有可能就是軟體對網址進行了加密處理,但是這個加密必定是可以還原的,要不Windows Media Player或者realone怎麼識別呢?高手還原演算法就可以了,這個不是我能力範圍的事情。
2.既然這個網址是要作為Windows Media Player或者realone的請求發給伺服器,所以我們可以用sniffer獲得真實地址,測試時我用的commview,個人覺得這是我等菜鳥最好用的sniffer,這裡我簡單說一下,設定過濾條件,ip為自己機器的ip
,只捕獲流出的資料包,請設定協議,因為播放影音檔案一般的協議有這些:mms://, rtsp://等
如果捕獲不到地址,請放寬條件。
Ok,現在解決了所有的問題,剩下的就是不停的加入網址,寫程式碼了。
qq:254128123 email:ngaut@126.com
相關文章
- 菜鳥處女作--飛翔鳥衛星網路電視機2005-01-08
- 程式猿菜鳥打怪升級—一路火花帶閃電2019-09-08
- 菜鳥網路今日釋出超級機器人旗艦倉2018-03-16機器人
- 【菜鳥筆記|機器學習】神經網路2020-10-29筆記機器學習神經網路
- 神經網路的菜鳥入門祕籍2018-12-19神經網路
- 菜鳥筆記之計算機網路(4)2020-11-13筆記計算機網路
- 菜鳥學網路——HTTPS是怎麼實現的?2018-05-18HTTP
- 中國郵政菜鳥網路合作:5000個網點代收包裹2015-04-12
- c#入門教程(菜鳥級)2018-12-06C#
- MFC入門——菜鳥級筆記2016-11-30筆記
- 菜鳥級問題,不能執行2007-04-29
- 菜鳥網路:大資料賦能網際網路+物流(附下載)2016-07-06大資料
- 手把手 | 神經網路的菜鳥入門祕籍2018-12-19神經網路
- 鳥哥的Linux私房菜 -- 電子書(pdf)2019-03-09Linux
- 菜鳥學網路之 —— 長連線和短連線2018-05-22
- 菜鳥網路:2017包裹“最”排行 天秤最能買2018-01-05
- Linux“菜鳥”到“菜鳥的一些建議2020-10-15Linux
- 菜鳥破解之軟體自己顯示註冊碼2015-11-15
- Linux菜鳥入門級命令大全(轉)2007-08-10Linux
- JIVE用MYSQL資料庫的問題(菜鳥級)2003-07-02MySql資料庫
- 跨境物流鏈路怎麼做?菜鳥工程師打造了全球通關“神器”2018-12-03工程師
- IT菜鳥的學習生活2012-06-08
- 2個菜鳥級軟體 (1千字)2001-03-26
- Linux菜鳥到老鳥的那些建議2020-10-15Linux
- SuperCleaner演算法分析----菜鳥級
(12千字)2015-11-15演算法
- 菜鳥理解的區塊鏈2019-01-16區塊鏈
- 菜鳥的架構師之路2018-06-27架構
- 菜鳥的讀書筆記2017-06-24筆記
- 核心菜鳥的成長之路2016-12-31
- 鳥哥的 Linux 私房菜2006-11-14Linux
- 菜鳥的Node.js之旅2015-11-26Node.js
- 菜鳥看前端(Git)2020-11-21前端Git
- java菜鳥入門2020-10-16Java
- Python菜鳥--模組2016-11-02Python
- 做了三年還覺得自己是菜鳥程式設計師2020-04-22程式設計師
- 菜鳥網路釋出配送機器人 快遞小哥恐丟飯碗2016-09-06機器人
- 菜鳥網路“首秀”天貓雙11 大資料操盤全國快遞2013-11-07大資料
- HotkeyMaster演算法分析----菜鳥級
(4千字)2015-11-15AST演算法