Study life

在結束了semantic的考試之後,在瑞典的學生生涯暫時告一段落(OS: 也許是最後一次的考試XD),就快要回台灣了,感覺時間過的真快,一晃眼就過去了,還記得當初出國的喜悅跟初到瑞典的興奮,一切好像都只是沒多久以前的事,很多人都不會在回來念書了,雖然只有短短的一年,還是蠻高興可以認識大家的,在這邊念書的一年中,接觸了不少人,也跟不少外國人一起共事,在不同的環境成長、有著不同的價值觀的人一起相處,這些都是難得的回憶,我想我應該是永生難忘了吧…

接下來就是thesis題目的選擇了,如果公司不願意提供我金援,那我應該就會在Chalmers研究funcitonal language吧,畢竟這算是我來Chalmers念的主要原因(OS: John 你怎麼都不回我QQ…)。

Advertisements

()

人生什麼是最重要的, 到了最近我才真的有所體悟,我所貪圖的就是跟家人在一起, 那個可以讓我恣意地耍任性的空間, 所有的一切都能包容我, 現在我突然驚覺到一切好像都要改變了, 我好害怕…害怕失去, 不想也不願意去思考, 突然覺得好無力、好無助…..無法形容我現在的心情, 原來我之前連自己能做的事都沒有做到阿,這種壓抑的感覺縈繞在心頭, 這是痛嗎? 不, 這是責備自己連最基本的事都沒有做到的後悔心情…

[Linux] Buffer overflow prevention technique (1)

首先介紹based on compiler上面的方法, 這種方法比較不會影響系統的效能.

SSP/ProPolice:

這個方法在GCC 4.1後就變成內建的, 只需要在compile時加上-fstack-protector就可以開啟,它總共有三種方式來預防bufferover flow.

  • Random Canary: 這種方法是在stack存放return address的前面放一個亂數值並且把值也存在global data中,並且在函數執行結束後比對檢查有沒有被改變,如果有的話,就代表有buffer overflow, 這時會強制程式結束並發出錯誤.

  • Variables reordering: 如果local variable中有function pointer的話, 有可能可以利用buffer overflow去改變此pointer所指向的function, 並且直接眺到具有惡意的函式去, 所以會把buffer放在其它變變數的後面, 這樣如果buffer overflow, 就不會改變到其它的local variable, 這種方法是根據Safety Function Model[1]所設計的.
  • Arguments copying: 因為參數還是有可能會傳function pointer, 為了避免利用buffer overflow改變它,並直接跳到有惡意的程式去, 把參數中所有的指標都copy到暫時變數中, 並且在之後都只利用這些暫時變數, 不會去動到原本的參數, 這樣attacker便無法利用這些function pointer.


References:
[1]http://www.trl.ibm.com/projects/security/ssp/node4.html

[survey] Buffer overflow

從以前都只聽過buffer overflow,然後某些function沒事不要亂用,最近因為某門課,而survey一些相關知識,才比較了解為什麼,其實基本上這東西算是針對C/C++這種對於記憶體存取沒有限制的語言,像是JAVA這種由VM幫你管理記憶體的語言就沒有這種困擾,下面先介紹最簡單的一種方式:stack smashing。

Stack smashing:

基本上電腦是以stack的方式在模擬執行,當要呼叫函數時,我們會把目前的記憶體位置(return address)存在stack中,然後才跳到要執行的函數foo去,等到函數foo執行完,它才會在跳回原本的位置,繼續執行接下來未完的指令,而stack smashing就是利用其實stack是一塊連續的記憶體區塊,它把之前存的return address改成存放惡意的程式碼位置,當你跳回去時,就跑去執行惡意的程式,對你的電腦造成傷害。

基本上在執行時的stack是往下長的, heap則是往上長的,stack會以frame來代表每一個function call, 而frame大概是以以下的順序組成:
(low memory address)

local variable
aved frame pointer
return address
arguments

(high memory address)

所以如果local variable有buffer的話, 我們可以利用buffer overflow去改變return address, 讓return address指向我們要執行具惡意的程式碼, 這樣就可以對系統造成傷害.

References:
http://insecure.org/stf/smashstack.html

2007/05/15 Jorgen 聚餐

今天晚上Jorgen請我們nctu europe跟其它準備交換去交大的瑞典學生聚餐, 剛好游完泳肚子好餓, 不過吃的東西實在是蠻特別的, 都是冷盤吧, 中間小黃(原諒我這樣叫他…我還是記不起來名字QQ)聽到台灣女生喜歡撐傘出門, 覺得很奇怪, 他說瑞典女生都很想要曬太陽(get a sun tan), 一直很無法接受為什麼想要變白XD, 因為台灣男生就喜歡白一點的女生阿~看樣子他很想改正這個想法, 不過我想是改不了了吧~ 還有一個瑞典女生, 家裡有遊艇, 她有時會開去丹麥或是挪威, 感覺真是愜意阿, 我們應該要更努力的享受人生~~ 他們看了宣傳的海報都覺得台灣很漂亮, 但是其實都市跟郊區差太多了XD, 在新竹是不可能看到這種環境的。

後來沒想到我看到常常跟我上同一門課的一個瑞典學生, 原來他也是交換學生, 之前就一直覺得他很強的感覺, 看樣子透過這個機會, 有機會跟他打好關係:p, 他是主修network 跟language的, 難怪Haskell很強,  不過我出來瑞典之前,資工系根本就沒有幾門課是英文授課,不知道他們怎麼辦, 不過他問我說考試可以用英文寫嗎, 我說可以, 看樣子他已經打算不去上課了~~反正我本來就覺得上課只是去心安的, 大部分的課都不知道老師在上什麼…, 不過可惜的是他到台灣的時候, 我應該已經回到瑞典了>”<, 只可惜無緣了, 越跟他們聊天就越覺得他們都很知道自己喜歡的是什麼, 不像我們很多人到了大學都還是渾渾厄厄過日子, 真是覺得有機會能夠出來見識見識真是一件好事~

2007/05/12 Eurovision

今天晚上大家聚集在 L的廚房看eurovision,這是每年都會舉辦的歐洲歌唱比賽,首先從每個國家選出一隊,在經過層層比賽,最後到了總決賽共有24隊(有10隊去年前10的保障名額跟4隊贊助國家),其實大部分國家都唱的很不錯,都蠻有職業水準的說,今年是在芬蘭的Helsinki,我還從電視上面看到我去年去Helsinki時的白色教堂(真懷念阿XD),而且很難得的整個廣場全部都是人,這在歐洲算是很少見的,它投票方式是用手機,但是不能投自己國家,而且以國家為單位,最高票12分,以此類推,最後分數最高的就是冠軍,在一個一個國家開票出來,分數一直改變下,我們每個人都為自己所壓的國家加油XD,最後Serbia登上冠軍,我覺得她們唱的真的不錯,但是烏克蘭的超搞笑演出,讓我真是印象深刻,而且在開票過程我們發現,通常最高票都會投給鄰近國家XD,像北歐五國都是投給有進決賽的芬蘭跟瑞典~~ 今年瑞典的表演真是ooxx,一個男生打伴的不男不女= =,難怪聽說爭議很大,所以很可憐的英國跟愛爾蘭都沒什麼分數XD,可憐的李嘯阿…最後由fion所支持的Greece拿到我們之中最高名次,可惜我的 Slovenia只拿到13名吧, 殘念QQ

比賽網址

2007/05/12 marathon?

今天照往常一樣去大公園慢跑,但是突然看到地上畫著馬拉松的路線標記,想說試看看馬拉松的路線好了,就跟L兩個衝了,慢慢的不知不覺中我們跑出了公園,跑上了一座橋,就這樣到了對岸,越看越覺得眼熟…靠,我們跑到16路公車的終點了= =”, 在延著海岸跑,又跑到Lindholmen (Chalmers的另一個校區),路上的風光不錯,再過另一座橋到了Nordstaden,哇勒…這時候我們已經跑了14 km了吧, 破了我單趟最遠的紀錄XD,雙腳也起了水泡,風也很大,為了我的腳著想,不想又跟上次一樣水泡一堆,讓我好幾天不能運動,所以我們後來就用走的回到了家裡,不過我猜想那條路線總長應該有40 km(馬拉松標準距離),它帶著我們繞完整個哥特堡,也算是不錯,只不過空氣沒有像在大公園跑那麼好,路上還是有車子,不過這也算是我蠻特別的體驗,有機會想參加半程的馬拉松,看看自己這些日子的鍛鍊!!

p.s 回家仔細看地圖才發現真的是跑了很遠的距離阿XD