Re: [PS3 ] Mathieulh補刀 Lv2 Loader與App. Load …

看板Modchip作者 (Savannah)時間13年前 (2011/01/02 22:48), 編輯推噓9(9021)
留言30則, 14人參與, 最新討論串2/5 (看更多)

01/02 14:09,
原po大概沒在寫code,變數用完是可以手動清記憶體的
01/02 14:09

01/02 14:09,
麻煩而已,不是辦不到
01/02 14:09

01/02 14:25,
那還不是要載到記憶體...
01/02 14:25

01/02 15:32,
原po是寫說會留存到其他資料蓋掉為止,我是針對這點提出
01/02 15:32

01/02 15:47,
樓上說得就是被資料蓋掉啊XD要嘛自己蓋掉要嘛被系統蓋掉
01/02 15:47

01/02 15:48,
所以原PO說得留存到被蓋掉為止沒錯啊。
01/02 15:48

01/02 15:49,
留存到被蓋掉是被動,手動去清是主動
01/02 15:49

01/02 16:05,
那還不是自己手動去蓋掉...
01/02 16:05
看來某人才真的是沒在寫程式, C語言裡面處理可以釋放的變數或陣列都是宣告 指標(pointer) ,宣告後電腦會去主記憶體裡面找一塊符合大小的記憶體,然後 把起始位置寫回指標。 舉個例子:如果今天我需要一個可釋放的陣列 A,大小 8 bits ,那我宣告後程 式會去記憶體裡面找個空間來存指標,假設指標記憶位址是0x0000,然後再去找 段夠大的空間,假設從0x0100開始一直到0x0108,於是指向 A陣列的指標內容就 會是0x0100。 記憶體位址跟內容的關係是這樣: 位址:0x0000┌→0x0100 0x0101 ... 0x0107 0x0108 內容:0x0100┘ 0x00 0x00 ... 0x00 0x00 然後我把某個解密金鑰01 23 45 67 89 AB CD EF 寫入這個陣列,所以0x0100到 0x0108的內容就會是01 23 45 67 89 AB CD EF 00。 於是乎,記憶體位址跟內容會變成這樣: 位址:0x0000┌→0x0100 0x0101 ... 0x0107 0x0108 內容:0x0100┘ 0x01 0x23 ... 0xEF 0x00 ←假設0x00是終止字元 到這裡為止0x0000裡面儲存的值會是0x0100,然後金鑰存在 0x0100~0x0108。好 了,那我金鑰用完要釋放怎麼辦? C語言的作法是用delete,執行結果就是把 0x0000裡面的值0x0100刪掉,然後將0x0000標記成未佔用。根本不會去管0x0100 到0x0107這段裡面東西還在不在。 記憶體位址跟內容變成這樣: 位址:0x0000 0x0100 0x0101 ... 0x0107 0x0108 內容:null 0x01 0x23 ... 0xEF 0x00 所以只要把整個記憶體讀出來,然後搜尋0x0100 ~ 0x0108 ,就可以得知金鑰的 內容。於是有人就會想到說,那我釋放時再重新宣告一個陣列 B,大小能夠把剛 剛這段內容蓋掉不就好了?是沒錯,但一般程式設計師根本不會去管剛剛陣列 A 到底是存在記憶體的哪個位置,自然也不會特別要求程式去填那個位置,那如果 去蓋呢? 這叫做「此地無銀三百兩」,真的去填就等於告訴駭客「那邊有我不想給你們看 的東西,沒有我的允許,絕對絕對不可以去看喔!」,下次駭客就會讓程式當在 填垃圾資料前,然後去把那段位址的內容讀出。人天生就有收集資訊充實自己的 本能,不然某數字週刊怎麼可能賣得這麼好,有道理吧? -- ____ _ _ _ _ ____ _ _ ____ _____ ____ (_ _)( \( )( \/ )( ___)( \( )(_ _)( _ )( _ \ _)(_ ) ( \ / )__) ) ( )( )(_)( ) / (____)(_)\_) \/ (____)(_)\_) (__) (_____)(_)\_) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.61.141 ※ 編輯: cassine 來自: 59.126.61.141 (01/02 22:51)

01/02 23:01, , 1F
雖然我好幾年沒寫程式了,C大說的跟我猜想一樣
01/02 23:01, 1F

01/02 23:01, , 2F
只要存在~就有可能讀出來~~
01/02 23:01, 2F

01/02 23:13, , 3F
你的看法太理想了吧,記憶體內就沒有其他資料會變動嗎
01/02 23:13, 3F

01/02 23:14, , 4F
書讀很多也要實際操作一下,真有那麼容易從mem讀,早就讀出
01/02 23:14, 4F

01/02 23:14, , 5F
來了,還需要去拆解演算法嗎
01/02 23:14, 5F

01/02 23:14, , 6F
這一點都不理想,現實狀況就是如此,有很大的機會不被蓋掉
01/02 23:14, 6F

01/02 23:15, , 7F
拆解演算法可以分析資料的格式,利用特殊的標記來加速搜尋
01/02 23:15, 7F

01/02 23:16, , 8F
不然要怎麼解釋geohot的漏洞存在的事實?
01/02 23:16, 8F

01/02 23:16, , 9F
等著被蓋掉是被動,主動去清掉是主動,操一點就是把所有變數
01/02 23:16, 9F

01/02 23:16, , 10F
照你這樣講geohot的漏洞應該不可能存在才對,那這樣$QNY也
01/02 23:16, 10F

01/02 23:17, , 11F
沒必要拿掉OtherOS,也才不會導致今天這種局面。
01/02 23:17, 11F

01/02 23:17, , 12F
都這樣處理,干擾的目標就能達成
01/02 23:17, 12F

01/02 23:19, , 13F
好啦,樓上趕快去教$QNY的程式設計師寫程式,這樣就不會被
01/02 23:19, 13F

01/02 23:19, , 14F
破解了。
01/02 23:19, 14F

01/02 23:22, , 15F
我想$QNY現在肯定非常後悔當初沒有請到某t去當他的的顧問
01/02 23:22, 15F

01/02 23:33, , 16F
放大絕中…
01/02 23:33, 16F

01/02 23:44, , 17F
真那麼理想還會被人撈到喔...
01/02 23:44, 17F

01/03 00:29, , 18F
藍光影片一開始也是從windvd這軟體的記憶體撈key才破
01/03 00:29, 18F

01/03 00:31, , 19F
而anydvd則是a走powerdvd的key 所以實務上是有發生過
01/03 00:31, 19F

01/03 00:57, , 20F
慢慢撈是撈的到啊,所以才要做防護
01/03 00:57, 20F

01/03 10:08, , 21F
C大打這篇真辛苦 順便學習一下
01/03 10:08, 21F

01/03 10:14, , 22F
每次進來都看到某個人在跳...
01/03 10:14, 22F

01/03 13:46, , 23F
100分~(雖然看無)
01/03 13:46, 23F

01/03 16:40, , 24F
推!
01/03 16:40, 24F

01/03 19:09, , 25F
動不動在這邊嗆別人沒寫過code才會被打臉...
01/03 19:09, 25F

01/03 19:10, , 26F
不過新世代很多寫code的人其實已經不需要懂底層了
01/03 19:10, 26F

01/03 21:14, , 27F
感動阿
01/03 21:14, 27F

01/04 01:57, , 28F
推cassine 大絕 GJ
01/04 01:57, 28F

01/07 08:38, , 29F
推兩位!互相激盪才能讓大家懂更多!
01/07 08:38, 29F

01/07 12:32, , 30F
你以為每次都會alloc到頭一個位置嗎?
01/07 12:32, 30F
文章代碼(AID): #1D890tn8 (Modchip)
討論串 (同標題文章)
文章代碼(AID): #1D890tn8 (Modchip)