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函式
- Sql 中的 left 函式、right 函式SQL函式
- Rust中的into函式和from函式Rust函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式
- JavaScript中的compose函式和pipe函式JavaScript函式
- 箭頭函式中的this函式
- 【hive】中的concat函式Hive函式
- Nodejs中的require函式NodeJSUI函式
- JAVA中的Random()函式Javarandom函式
- SQL中的cast()函式SQLAST函式
- Haskell 中的日期函式Haskell函式
- python中的join()函式Python函式
- js函式中的this指向JS函式
- js中的匿名函式JS函式
- 淺談Swift中的函式式Swift函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- javascript函式中with的介紹JavaScript函式
- 理解Underscore中的_.bind函式函式
- JavaScript中的函式繼承JavaScript函式繼承
- Kotlin中的高階函式Kotlin函式
- 理解Python中的Lambda函式Python函式
- python中zip()函式的用法Python函式
- Rust中的函式指標Rust函式指標
- 淺談Kotlin中的函式Kotlin函式
- Pytorch中的損失函式PyTorch函式
- TypeScript中的函式詳解TypeScript函式
- C++11中的函式C++函式
- DDMP中的損失函式函式
- 理解Underscore中的flatten函式函式
- 程式中的函式引數函式
- C# 中的本地函式C#函式
- Python中的main函式解析PythonAI函式
- Oracle中Decode()函式的使用Oracle函式
- NumPy之:ndarray中的函式函式
- Matlab中erf函式的用法Matlab函式
- Django中F函式的使用Django函式