各位大俠,我手上有一個程式在運行的時候會讀取一個加過密的flash檔案,解密后在記憶體中創建了解密后的該檔案以供自身使用,我用monitor 查看到了改程式在記憶體中呼叫CreateFile在需要加密檔案夾同路徑的檔案夾中創建了解密后的檔案,一開始誤以為是在磁盤中創建了該檔案,高興地去讀發現根本沒有這個檔案,后來查詢CreateFile函式才知道,是在內核中創建了該物件;我想要讀取該解密后的檔案,請問應該怎么進行,各位大俠提供個方法,不勝感激。
注釋: CreateFile的涵義是創建File這個內核物件,而不是創建物理磁盤上的“檔案”。在Win32 API中有一系列操作內核物件的函式,創建內核物件的函式大多命名為CreateXxxx型。
uj5u.com熱心網友回復:
沒有大俠回復么?uj5u.com熱心網友回復:
你有程式的原始碼嗎?不然很難從記憶體中取到確切的檔案uj5u.com熱心網友回復:
大俠我來了!
ReadProcessMemory
uj5u.com熱心網友回復:
估計它是使用記憶體映射檔案做的uj5u.com熱心網友回復:
有原始碼的話,在對應地方創建個實際檔案。。。uj5u.com熱心網友回復:
調CreateFile前你篡改幾個引數,不就變成往磁盤上創建檔案了嗎?uj5u.com熱心網友回復:
如果有原始碼,這個可以
uj5u.com熱心網友回復:
用除錯器斷下CreateFile這個API,看下檔案路徑是怎么樣的uj5u.com熱心網友回復:
hook CreateFile函式 修改引數創建你想要的磁盤檔案uj5u.com熱心網友回復:
要是有源代碼這個事情就不會存在了,是別人的程式
uj5u.com熱心網友回復:
用除錯器斷下CreateFile這個API,看下檔案路徑是怎么樣的
檔案路徑是很明確的,不程序式是不在硬碟上產生真實的檔案的,在內核中創建了該物件
uj5u.com熱心網友回復:
大俠我來了!
ReadProcessMemory
大俠,這個函式能讀取別的行程的資源檔案么?
uj5u.com熱心網友回復:
大俠我來了!
ReadProcessMemory
大俠,這個函式能讀取別的行程的資源檔案么?
除非別的行程的資源檔案的內容不加載到記憶體。
uj5u.com熱心網友回復:
flash檔案 swf? flv? 檔案頭 記憶體塊搜索下。。也許就找到了uj5u.com熱心網友回復:
hook CreateFile函式 修改引數創建你想要的磁盤檔案
大俠我來了!
ReadProcessMemory
大俠,這個函式能讀取別的行程的資源檔案么?
除非別的行程的資源檔案的內容不加載到記憶體。
已經hook了 createfile,自己寫了一個程式驗證了,如果是創建了檔案,用自己寫的hook程式能夠拷貝這個檔案出來;但是在目標程式上我看到了類似這樣的事件如圖,但是在createfile的路徑上始終是看不到磁盤上的檔案的,于是寫了個hook注入了目標行程,去拷貝這個路徑上的檔案,也是沒有啥東西唄拷貝出來,各位大俠看看這是個什么操作??疏漏在哪里

uj5u.com熱心網友回復:
CreateFile的涵義是創建File這個內核物件,有了 File 還要 hook WriteFile(解密),得到 File info,再 跨行程 ReadFileuj5u.com熱心網友回復:
CreateFile的涵義是創建File這個內核物件,有了 File 還要 hook WriteFile(解密),得到 File info,再 跨行程 ReadFile
我也奇怪從頭到尾沒有監控到writefile操作,我目前在createfile操作下hook估計是還沒有等待檔案被寫入內容就開始復制了,所以沒得到
uj5u.com熱心網友回復:
還要帶 ex 的 WriteFileExuj5u.com熱心網友回復:
應該是它在CreateFile時設定了FILE_ATTRIBUTE_TEMPORARY,然后再CreateFileMapping,寫檔案是寫的記憶體映射檔案。uj5u.com熱心網友回復:
應該是它在CreateFile時設定了FILE_ATTRIBUTE_TEMPORARY,然后再CreateFileMapping,寫檔案是寫的記憶體映射檔案。
uj5u.com熱心網友回復:
在它“播放”時按“檔案頭標記”搜索行程記憶體,然后用ReadProcessMemory( )讀取那一片記憶體區的資料。
資料的總長度,應該是在“檔案頭”部分,有相應的資訊的。
(按具體“檔案格式”的不同,也許可以直接獲取大小、也許要通過計算)
uj5u.com熱心網友回復:
自己讀取這個加過密的flash檔案,解密 可行否 ?uj5u.com熱心網友回復:
自己讀取這個加過密的flash檔案,解密 可行否 ?
目前不知道他的加密演算法,對抗數學 不敢想
uj5u.com熱心網友回復:
簡單想法 DLL劫持加載進入EXE, inlinehook createfile 自寫函式 1執行寫磁盤檔案 2。呼叫原程式創建記憶體檔案 再跳轉回來,找對HOOK點uj5u.com熱心網友回復:
原exe中呼叫createfile應該是ff15 XXXX XXXX (地址1)修改為 E9 XXXX XXXX(HOOK函式地址)
函式內部 FF15 (修改過的createfile到磁盤)
FF15(原createfile記憶體映射)
e9 (地址1)
uj5u.com熱心網友回復:
哦,linux沒HOOK過,不知道,思路一樣,不過實作的話幫不上你uj5u.com熱心網友回復:
自己讀取這個加過密的flash檔案,解密 可行否 ?
目前不知道他的加密演算法,對抗數學 不敢想
用OD,或者其它反匯編工具,分析它的代碼、弄懂它的解密演算法。
然后自己寫解密程式,把它的檔案(或“資源資料”)解密。
uj5u.com熱心網友回復:
"一個程式在運行時解密了...."哪里有這個程式下載 ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/59488.html
標籤:硬件/系統
上一篇:ocx呼叫dll的問題
下一篇:在VS2015除錯器運行Release版本的程式代碼,和直接點Release生成的exe檔案速度差好多,這是什么原理??求
