binfmt_elf.c中的函式移到binfmt_pe.c中就跑不通?
一模一樣的load_elf_binary函式移到其他檔案裡就跑不通?
這是因為#include<linux/elf.h>會將loc預編譯
elfhdr這個在elf.h預定義:
可以看到首先要滿足ELF_CLASS == ELFCLASS32才能被賦值成elf32_hdr,否則的話會被賦值成elf64_hdr,
所以一直到binfmt_pe.c裡面的時候實驗論證ELF_CLASS不是ELFCLASS32於是elf_hdr被賦值成了64位的,導致loc->elf_ex被從bprm->buf強制轉化過來的時候是64位的,而binfmt_elf.c裡面同樣的一句話卻是52位的,導致64位的elf_ex的有些欄位過不去load_elf_binary2裡面的一些判斷於是search_binary_loader在遍歷這個fmt->load_binary的時候失敗於是遍歷load_elf_binary,走的是load_elf_binary函式執行操作。
下面的問題是探討ELF_CLASS在哪裡被呼叫的,修改這歌ELF_CLASS
相關文章
- Oracle 遷移到 OB 過程中的函式改造案例Oracle函式
- 將DSP的flash裡面的函式轉移到ram中的步驟函式
- JS中的函式JS函式
- javascript中的函式JavaScript函式
- Rust中的into函式和from函式Rust函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式
- Sql 中的 left 函式、right 函式SQL函式
- JS中函式內套函式的呼叫JS函式
- Haskell 中的日期函式Haskell函式
- 箭頭函式中的this函式
- JAVA中的Random()函式Javarandom函式
- js中的匿名函式JS函式
- js函式中的this指向JS函式
- javascript中的原生函式JavaScript函式
- SQL中的cast()函式SQLAST函式
- css中的calc()函式CSS函式
- django中的url函式Django函式
- js中的phprand函式JSPHP函式
- php中的extract函式PHP函式
- Sql中的getDate()函式SQL函式
- PHP中的字串函式PHP字串函式
- js中的isNaN()函式JSNaN函式
- 分析函式中的KEEP函式
- javascript中的trim函式JavaScript函式
- 淺談Swift中的函式式Swift函式
- JavaScript中的compose函式和pipe函式JavaScript函式
- 只把Oracle的儲存過程或者函式全部遷移到其他的資料庫中Oracle儲存過程函式資料庫
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- Nodejs中的require函式NodeJSUI函式
- C++11中的函式C++函式
- TypeScript中的函式詳解TypeScript函式
- NumPy之:ndarray中的函式函式
- Django中F函式的使用Django函式
- JavaScript中的函式繼承JavaScript函式繼承
- 【hive】中的concat函式Hive函式
- 理解Underscore中的_.bind函式函式
- javascript函式中with的介紹JavaScript函式
- C# 中的本地函式C#函式