MT新知,MT3.0 Develop Edition 開始使用

Movable Type Publishing Platform

由酋長的部落格看到的

敲敲地,MT發表了3.0的Development Edition,一往以前好用的軟體都會開始收費的方式,到了3.0也開始比較強迫性的收費,其實根據那些收費的標準來看個人版$99.95 (美金) 實在是有點太貴,(商業版也才兩個個人版的價位????)有點讓我懷疑,MT的下一步是不是要讓一些大型的部落格獨佔優勢而讓像我們這些個人使用者慢慢消失ㄌㄟ??

不過收費標準裡面也有提到,如果要用免費的MT也是會有以下的限制(在3.0之前有許多似乎是沒有的)

  • 沒有來自於Six Apart的協助(那~~~~是幹嘛的?)

  • 不能存取安裝過程服務(也還好~~ 反正有 Jedi 大大)

  • 不能存取付費服務(這個還在看手冊~~ 似乎在舊版沒有什麼付費服務?)

  • 不能宣傳你的weblog 在一些網址(反正有很多群落格可以幫忙宣傳~~)

  • 不能作商業用途~~(現在BLOG 用商業用途的也很少~~~)

  • 不能超過三個Weblogs 與每個Weblogs 只能有一個作者 ( 個人認為,這個算是很大的限制~~個人用戶就忍耐點~~)

酋長的部落格感受到似乎很多人對於這樣收費措施有點不滿意,不過我對於這樣的收費措施是鼓勵的,只是到底Web Programming所產生出的服務有多少可以收費的空間,我還是一直很好奇,從以前一直在接CASE的時候就在想,常常思考把一些Include FILE設成遠端的,強制收費不然網站功能就會被 Disable掉, 但是又覺得網路程式的收費性實在很難去界定。

不過~~~ MT的收費實在是太貴了,不然我本身很想付費使用這套系統的說 :p

Buffer Overflow 的範例程式

關於buffer overflow的範例程式,就如同上一篇文章裡面有提到,buffer overflow 主要是利用C++對於陣列大小沒有限制的概念,當你輸入一個過大的數值,回傳值(return value)會被蓋掉,即使你輸入錯誤的數值,你會也因為這樣而成功的登入電腦(或是使某個安全認證通過~~~)

一個好朋友(生魚片)寫了一個範例程式,但是我看了一下總是覺得哪裡怪怪的,因為我記得雖然記憶return value會在記憶體位置之中,但是很難確切抓出function的回傳位置就在變數之後,並且他設定的函數為void,照理說也是無法回傳的才對~所以我大膽猜測他所寫的程式主要是將func的副程式加以執行過後的結果,與我們原先探討的Buffer Overflow有所差異,所以我寫了一個範例程式如下:

#include #include

char func(void) {

char *p; char r_c; char buf[1];

p=buf; *p=’N’; *(p+1)=’N’; *(p+2)=’N’; *(p+3)=’N’; *(p+4)=’N’; if (buf[0]==’y’){ r_c=’N’;} return r_c;

}

int main(int argc, char* argv[]) { char Return_char; if (func()==’N’){ printf(“system ~~~ passing~~~n”); } else{

		printf("system is not passing~~~n");
	}

}

在這個範例程式之中,副函示有數個變數宣告,buf[1],*p, r_c 所以記憶體分配方式如下_(先宣告的記憶體位址比較後面,後宣告的記憶體位置比較前面)_:

               |





                               +-----------------------+
                               | (other variable)      |
                               +-----------------------+
                               | 指標 p                |
                               +-----------------------+
                               | (other variable)      |
                               +-----------------------+
                               | r_c (1 bytes)         |
                               +-----------------------+
                               | (other variable)      |
                               +-----------------------+
                               | buf (1 bytes)         |
                               +-----------------------+
                               | (other data in stack) |
                               |           .           |
                               +-----------------------+
                               | return address of     |
                               | this function         |
                               |           .           |
                               |           .           |

當你在VC++編輯的時候,若是使用 [F11]來一個階段,一個階段的DEBUG,去一個個參照變數的位置(Address)的時候,你會發現以下的結果

[ 按下去看全圖

](http://www.evanlin.com/blog/archives/0514/0514-1.jpg)

也就是透過指標*p,回傳變數r_c會被該更改到,使得回傳的值變的有誤。

所以這個程式明明不該輸出『System passing 』卻因為回傳值變成r_c所以產生~~~~錯誤造成程式的錯誤

 

關於最近猖狂的病毒 Sasser Worm

~~Worm 也是很可怕的~~

聽說最近很猖獗的病毒Sasser Worm,根據微軟網站所提供的消息,為微軟程式內部LSASS(Local security authority subsystem service)的缺點

也就是利用 Buffer overflow來獲得系統控制權

微軟MS04-011安全性公告

偵測與移除Sasser Worm

或許大家講到這裡會跟我一樣好奇,為何Buffer Overflow會產生系統危險呢?

所以我去找了一個相關文件,請看下面那位大大的解說

> > 作者: tmg (海邊漂來的..海嘯) 看板: SobVersion > 標題: 說文解字: 何謂 buffer overflow > 時間: Wed Nov 13 20:50:24 1996 > > > 唉....... buffer overflow 這個洞, 大概是最難防備的一個洞, > 因為這個洞發生的原因純粹是因為程式的 bug, > 而這種 bug 你我三不五時就會犯這種錯, 非常難以在 coding 時就加以防備。 > 要防止這種洞, 只有非常小心仔細檢查 code........ > > 這種洞, 顧名思義, 就是利用 buffer overflow 的原理達成目的的...... > 比如, 一個陣列只有 100 bytes, 但我餵給它 200 bytes 的資料, > 於是這個陣列裝不下這些資料, 造成了 overflow...... > > 為什麼 overflow 會有 security hole 呢? > 首先, overflow 發生時, 多出來的資料會蓋到其它變數上, > 相信這一點大家早就知道了。 > > 問題是, 為什麼資料蓋到其它變數上時, 頂多使程式執行錯誤, > 會嚴重到出現 security 的問題嗎? 這時, 好玩的事情就發生了....... > > 當我們呼叫一個 function 時, 以組合語言的觀點, > 會將 return address 堆入 stack 中。 > 如果這個 function 宣告了一些 local 變數, > 那進入這個 function 之後, 會在 stack 中再空出一塊區域給這些 local 變數, > 當要從這個 function return 回去時, 就把這些在 stack 中的 local 變數清掉。 > > 現在好了, buffer overflow security hole 就是在這裡發生了....... > > 如果有某個 function 宣告了一個 local array, 如: > > int func() { > int i, j, k; > char buf[16]; > struct abc *x, *y, *z; > . > . > . > } > > 這時, 當這個 function 被呼叫時, stack 中的長像就像: > > +-----------------------+ > current stack pointer ----> | (other variable) | > +-----------------------+ > | buf (16 bytes) | > +-----------------------+ > | (other variable) | > +-----------------------+ > | some system data | > +-----------------------+ > | return address of | > | this function | > +-----------------------+ > | (other data in stack) | > | . | > | . | > | . | > > 嗯..... 這樣就很明顯了, 如果在這個 function 內有了 bug, 忘記去控制 > 資料餵給 buf 的長度, 那..... 當我資料餵長一點, 就可以蓋到這個 > function 的 return address 了.......... > > 這時, 我在餵資料給 buf 時, 順便將要執行的機器碼餵進去, > 當餵到 function 的 return address 時, 就把 return address > 指到自己所餵進去的 code 上...... > 這時, function 執行完畢, 要 return 時, 嘿嘿嘿, > 它就不會 return 到原來呼叫它的地方, 而會 "return" 到我所餵進去的那些 code... > 這時, 就可以為所欲為了....... 看我高興愛怎麼做就怎麼做了.......... > > 這實在有點可怕, 因為這種洞純粹是程式發展者的 "疏乎", > 不管系統管理再完善, 一但使用了這種程式, 就等於開了一個洞....... > 有這種洞的程式還不少, 比如早期的 fingerd, sendmail 8.6.xxx, Xt...... 等..... > 遇上這問題, 除了趕快找新版程式回來 compile 外, > 還要祈禱在你發現這個洞之前沒有 hacker 來鑽過這個洞........ > > > > >   > >

恭喜伍思凱得到金曲獎最佳男演唱人獎

我最愛的伍思凱得獎了

週六的夜晚,是金曲獎的頒獎典禮,由於思凱有入圍最佳男演唱,所以我們在電視前面不斷祈禱. 記得喜歡伍思凱的歌曲.是從[分享]這首歌曲開始的,他輕快的曲風,令人雋永的歌詞,總是讓國中時代的我(可見我多年輕阿 :P)再ktv裡面唱得多麼的開心,到了之後印象中總是記得伍思凱再金曲獎有入圍最佳男演唱人的獎項,但是不重視這些事情的我,也就沒記憶到底後來伍思凱有沒有抱回大獎. 直到今年在漁人碼頭聽過伍思凱的現場演唱的功力.我才深深的被他的歌聲吸引到,那個晚上聽著伍思凱唱著愛與愁,裡面一個個的歌詞彷彿也感動老天一樣,讓漁人碼頭的那天飄起了一場大雨,不過在那場大雨之下.我到也感受到一次獨特戶外演唱會的感動. 由於我們那麼喜歡著伍思凱,所以當男演唱人頒獎的時候,我與我女友在電視前面大聲的嘶吼,希望伍思凱能夠拿下最佳男演唱人獎項,當….宣佈得獎者的時候,我們除了大叫….就是留下了許多的[英雄淚]…是英雄淚…不然就是切到洋蔥了…

我也要學習『惜字如金』

一杯咖啡,看著字字如金的論文

(圖片:喝杯咖啡,慢慢檢驗著論文)

感謝之前有網友來鼓勵我多投幾個研討會,不過今天倒是收到一些好消息,讓我的心情瞬間好像到了天堂一樣,相當的開心。首先,有間T公司(外商公司、軟體產業,這樣應該知道是那間吧?)的第一階段筆試,我終於給他考過了,真是好險,這一些也是經過許多公司考出來的結果,到了後面幾間公司,考試的結果也越來越好(前幾家真的是太久沒看,之後努力K程式語言之下,總算有些記憶慢慢恢復),面試的態度自然而然會越來越自然(因為知道該怎麼談了吧~~~),再來我去景文的研討會文章也上了,其實也算是將心中一塊大石頭放了下來(因為老師希望每位同學都要有上研討會~~~)

講完了這兩天的近況,記得我之前看過Jedi大大的一篇關於『惜字如金』的文章,其實很感慨良多,漠然回首去看自己每一篇的Blog,內容乏善可陳,若要提到有關於將每一個文字之間掌握的最好的,在我看過的Blog之中的莫過於Chiron的30 sonthing,他也真的算是我看過的『字必慎重』的一位代表,很多時候不僅是閱讀他具有內涵的文章,連他所回的迴響也都透露出他寫作的風格,讓我十分的嚮往,看看自己寫下來的一些心情文章,世界實在小的可憐,也不知道為什麼最近的心中總是空蕩蕩的,腦袋瓜裡直直希望能早點畢業,早點能作一些自己喜歡的事情,於是啥也不想,啥也不作~~~

由於這個Blog的人氣慢慢有在提升,最近有一些人開始寫信詢問我是否可以用blog來建立個人網站,這個問題也讓我想起自己當初會將許多資料慢慢轉移到Blog的一些動機『我想用Blog來幫我作一種知識管理』,也就是藉由自己慢慢的所學到的資訊慢慢的紀錄下來,並且透過有條理、有系統的整理,讓整個Blog變成變成個人的形象網站(或許像Zonble一樣)。或許等這一段時間過後,我會慢慢的將自己個人網站上許多研究性的文章,或是一些作品慢慢的移植到這個網站來,並且逐步的去取代我的個人網站

 

是『重複』而非『重覆』~~

image-20210827123031164

中國字真是博大而精深的,尤其最近在打中文的論文上,更是有這種深刻的感受。因為許多字的用法,其實都被大家所通用化了,也就是本來的意義可能不是這樣,卻在大家經常用錯的情況下,『順理成章』的出現了新的用法。

拿這個詞來說好了,如過要形容有兩個一樣的事物,我們都會用『重ㄈㄨ』來講,但是那個『ㄈㄨ』是用那個字呢?印象中,我是用『重複』來代表有多個一樣的事物,但是常常有人將他們寫作為『重覆』,於是我去查了『教育部異字字典網站』,裡面告訴我們結果如下,頁面上的內容如下:

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​
字號 ​ ** ​ A03744** ​ ​ 正字 ​ ** ​ 【複】衣-09-15** ​
​ 音讀 ​ ​ ​ ㄈㄨˋ ​
​ 釋義 ​ ​ 有夾裡的衣服。說文解字:「複,重衣也。」三國志.卷  十一.魏書.管寧傳:「寧常著皁帽,布襦褲,布裙,隨  時單複。」 ​ 重疊。文選.張衡.東京賦:「複廟重屋,八達九房。   」宋.陸游.遊山西村詩:「山重水複疑無路,柳暗花   明又一村。」  繁雜的。與「單」相對。如:「複雜」、「繁複」、「   複比」、「複數」。 ​ 再、又。如:「重複思考」。 ​

而大家常用錯的重『覆』的註解如下:

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​
字號 ​ ** ​ A03765** ​ ​ 正字 ​ ** ​ 【覆】襾-12-18** ​
​ 音讀 ​ ​ ​ ㄈㄨˋ ​
​ 釋義 ​ ​ 翻倒、傾倒。如:「車翻覆了。」、「水可載舟,亦可   覆舟。」論語.子罕:「雖覆一簣,進,吾往也。」漢   書.卷四十八.賈誼傳:「前車覆,後車誡。」  反轉。如:「反覆無常」、「翻來覆去」。  毀滅、消滅。如:「傾覆」、「顛覆」。論語.陽貨:   「惡鄭聲之亂雅樂也,惡利口之覆邦家者。」新唐書.   卷一三六.李光弼傳:「光弼用兵,謀定而後戰,能以   少覆眾。」  回、還。同「復」。如:「答覆」、「覆信」。文明小   史.第二十九回:「這時適逢瓜代回國,到京覆命,請   假修墓來的。」  詳察。舊唐書.卷一一○.鄧景山傳:「以鎮撫紀綱為   己任,檢覆軍吏隱沒者。」  遮蓋。如:「覆蓋」。莊子.德充符:「夫天無不覆,   地無不載。」聊齋志異.卷五.陽武侯:「見舍上鴉鵲   群集,競以翼覆漏處。」  隱藏、埋伏。左傳.桓公十二年:「楚人坐其北門,而   覆諸山下。」魏書.卷八十九.酷吏傳.李洪之傳:「   乃夜密遣騎分部覆諸要路,有犯禁者,輒捉送州。」 ​ 重、再。同「複」。如:「重覆」。 ​

 

image-20210827123057443

image-20210827123129493

根據以上的意思,似乎大家將『重覆』用錯,用習慣之後,所以順理成章的也將這個詞放入了辭典之中,不過『國語辭典』內卻沒有這樣的詞,所以每日一辭就是這樣阿,請大家不要跟我一樣用錯阿~~~~ 是『重複』而非『重覆』~~