驅動讀寫源碼
❶ 驅動源碼是什麼,是怎麼個概念,麻煩講的通俗點。
就是驅動程序的源程序
編寫驅動程序要先寫出源碼,然後編譯。編譯之前的代碼就是源碼。
你下載的驅動都是經過編譯的,是可執行文件,不是源碼。源碼只有編寫者手裡才有的。
❷ 怎樣讀取exe文件的源代碼
1、在網路上搜索下載反編譯工具ILSpy,解壓後如圖,雙擊.exe文件打開解壓工具
❸ 易語言內存驅動讀寫源碼,不要模塊
那個需要載入驅動(SYS文件),而易語言寫不出驅動,只有用VC++寫出以後導入易語言資源,然後寫出,用API調用,還是用模塊好點,別人都已經封裝好了,何必自己寫,麻煩。
❹ 易語言:內存_驅動讀寫1.寫位元組集源碼
.子程序讀位元組集,位元組集,公開,讀取位元組集數據(返回位元組集失敗返回空)
.參數進程ID,整數型,,進程ID
.參數內存地址,整數型,,內存地址
.參數長度,整數型,可空,可空。留空將智能讀取長度
.局部變數變數,位元組集,,,保存讀取數據的變數
.局部變數操作句柄,整數型
.局部變數內存塊信息,精易_內存屬性
操作句柄=OpenProcess(#PROCESS_ALL_ACCESS,0,進程ID)'取得操作句柄
.如果真(長度=0)
VirtualQueryEx(操作句柄,內存地址,內存塊信息,28)
長度=內存塊信息.區域長度+內存塊信息.區域地址-內存地址
.如果真結束
變數=取空白位元組集(長度)
ReadProcessMemory_位元組集(操作句柄,內存地址,變數,長度,0)
CloseHandle(操作句柄)
返回(變數).子程序寫位元組集,邏輯型,公開,寫入位元組集數據(成功返回真,失敗返回假)
.參數進程ID,整數型,,進程ID
.參數內存地址,整數型,,內存地址
.參數要寫入的數據,位元組集,,寫入數據
.局部變數操作句柄,整數型
.局部變數a,整數型
操作句柄=OpenProcess(#PROCESS_ALL_ACCESS,0,進程ID)
a=WriteProcessMemory_位元組集(操作句柄,內存地址,要寫入的數據,取位元組集長度(要寫入的數據),0)
CloseHandle(操作句柄)
.如果(a=0)
返回(假)
.否則
返回(真)
.子程序讀小數,小數型,公開
.參數進程ID,整數型
.參數內存地址,整數型
.局部變數臨時整數,小數型
.局部變數操作句柄,整數型
操作句柄=OpenProcess(#PROCESS_ALL_ACCESS,0,進程ID)'取得操作句柄
ReadProcessMemory_小數型(操作句柄,內存地址,臨時整數,4,0)
CloseHandle(操作句柄)
返回(臨時整數)
.子程序寫小數,邏輯型,公開
.參數進程ID,整數型,,進程ID
.參數內存地址,整數型,,內存地址
.參數要寫入的值,小數型,,寫入數據
.局部變數局_進程句柄,整數型
.局部變數a,整數型
.局部變數局_長度,整數型
局_進程句柄=OpenProcess(#PROCESS_ALL_ACCESS,0,進程ID)
a=WriteProcessMemory_小數型(局_進程句柄,內存地址,要寫入的值,4,0)
CloseHandle(局_進程句柄)
返回(a=1)
❺ linux 驅動程序開發,為什麼要編譯內核源碼樹
您好,這樣的情況建議您下載最新版本的驅動精靈,或是直接在線升級一下驅動精靈。希望可以幫到您。
❻ 新人求教 驅動源碼編譯安裝
1、安裝scons
(1) 下載python2.7, 使用x86_32位,因為scons只有32位安裝包可用;
(2) 下載scons2.3.0;
(3) 安裝python 和 scons, 將C:\Python27\Scripts寫入PATH;
(4) 下載安裝pywin32 ,It is recommended you install pywin32 if you want to do parallel builds (scons -j)
2、安裝boost庫(1.49版本).
解壓後雙擊bootstrap.bat,生成bjam.exe後,cd到目錄c:\boost下,(將boost_1_49更名為boost了)編譯boost。
編譯命令:C:\boost>bjam variant=release --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
這是使用VS2010環境編譯的release版本,編譯完成後,生成C:\boost\stage\lib文件夾,下面有6個lib庫:
如果要編譯成debug版本,使用命令:bjam variant=debug --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
編譯完成後,生成C:\boost\stage\lib文件夾,下面有10個lib庫和dll:
此處為MongoDB文檔中對於編譯boost庫的要求原文:
When using bjam, MongoDB expects
variant=debug for debug builds, and variant=release for release builds
threading=multi
link=static runtime-link=static for release builds
address-model=64 for 64 bit(64位的話,把32換為64)。link=static runtime-link=static,boost需要編譯成靜態庫,因為mongodb只會去鏈接boost的靜態庫
address-model=64在win7 64環境下此項必須,不加在編譯mongodb的c++ client時會出現鏈接錯誤。
3、下載mongo2.4.6源碼 http://www.mongodb.org/downloads官網下載
編譯Mongoclient.lib
cmd命令提示符下,cd到解壓後的文件目錄,例如我放在了E盤,E:\mongodb-src-r2.4.6,輸入命令:
scons –-dd --32 mongoclient.lib // build C++ client driver library
Add --64 or --32 to get the 64- and 32-bit versions, respectively. Replace --release with --dd to build a debug build.
編譯後在mongodb\build\win32\32\dd\client_build\生成mongoclient.lib.
4、測試程序
就用Mongodb自帶的例子吧,使用VS2010打開E:\mongodb-src-r2.4.6\src\mongo\client\examples中的simple_client_demo.vcxproj,編譯,會提示生成simple_client_demo.sln,保存。
使用debug模式,配置工程環境:打開工程->屬性,配置Configuration Properties下的VC++ Directories,頭文件路徑添加C:\boost,Lib庫路徑添加boost的lib,以及mongodb client的lib:
C:\boost\stage\lib
E:\mongodb-src-r2.4.6\build\win32\32\dd\client_build
進入C/C++下面的Code Generation,將Runtime Library設置為Multi-threaded Debug (/MTd)
進入Linker下面的Input,設置Additional Dependencies,添加ws2_32.lib,psapi.lib,Dbghelp.lib,mongoclient.lib
將E:\mongodb-src-r2.4.6\build\win32\32\dd\mongo\base下生成的error_codes.h和error_codes.cpp文件,拷貝到E:\mongodb-src-r2.4.6\src\mongo\base目錄下。
ok,編譯、運行.
5、問題解決
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(dbclient.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(assert_util.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(jsobj.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(status.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(mutexdebugger.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
VS的版本不匹配,lib是在更高級的版本中編譯生成的,而使用的時候,是在低級版本中使用的,所以出現了不匹配的錯誤。例如,我在VS2010 SP1和VS2012的環境下編譯的,而使用是在VS2010上使用,所以在編譯時,出現了以上問題。
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymGetMoleInfo64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr
在工程依賴庫中添加Dbghelp.lib
其它問題,看看你手頭的編譯器、編譯出來的boost庫版本、mongoclient.lib的版本,是否對應好了。
❼ 怎麼將驅動源代碼編譯進linux系統
一、 驅動程序編譯進內核的步驟
在 linux 內核中增加程序需要完成以下三項工作:
1. 將編寫的源代碼復制到 Linux 內核源代碼的相應目錄;
2. 在目錄的 Kconfig 文件中增加新源代碼對應項目的編譯配置選項;
3. 在目錄的 Makefile 文件中增加對新源代碼的編譯條目。
bq27501驅動編譯到內核中具體步驟如下:
1. 先將驅動代碼bq27501文件夾復制到 ti-davinci/drivers/ 目錄下。
確定bq27501驅動模塊應在內核源代碼樹中處於何處。
設備驅動程序存放在內核源碼樹根目錄 drivers/ 的子目錄下,在其內部,設備驅動文件進一步按照類別,類型等有序地組織起來。
a. 字元設備存在於 drivers/char/ 目錄下
b. 塊設備存放在 drivers/block/ 目錄下
c. USB 設備則存放在 drivers/usb/ 目錄下。
注意:
(1) 此處的文件組織規則並非絕對不變,例如: USB 設備也屬於字元設備,也可以存放在 drivers/usb/ 目錄下。
(2) 在 drivers/char/ 目錄下,在該目錄下同時存在大量的 C 源代碼文件和許多其他目錄。所有對於僅僅只有一兩個源文件的設備驅動程序,可以直接存放在該目錄下,但如果驅動程序包含許多源文件和其他輔助文件,那麼可以創建一個新子目錄。
(3) bq27501的驅動是屬於字元設備驅動類別,雖然驅動相關的文件只有兩個,但是為了方面查看,將相關文件放在了bq27501的文件夾中。在drivers/char/目錄下增加新的設備過程比較簡單,但是在drivers/下直接添加新的設備稍微復雜點。所以下面首先給出在drivers/下添加bq27501驅動的過程,然後再簡單說明在drivers/char/目錄下添加的過程。
2. 在/bq27501下面新建一個Makefile文件。向裡面添加代碼:
obj-$(CONFIG_BQ27501)+=bq27501.o
此時,構建系統運行就將會進入 bq27501/ 目錄下,並且將bq27501.c 編譯為 bq27501.o
3. 在/bq27501下面新建Kconfig文件。添加代碼:
menu "bq27501 driver"
config BQ27501
tristate"BQ27501"
default y
---help---
Say 'Y' here, it will be compiled into thekernel; If you choose 'M', it will be compiled into a mole named asbq27501.ko.
endmenu
注意:help中的文字不能加回車符,否則make menuconfig編譯的時候會報錯。
4. 修改/drivers目錄下的Kconfig文件,在endmenu之前添加一條語句『source drivers/bq27501/Kconfig』 對於驅動程序,Kconfig 通常和源代碼處於同一目錄。 若建立了一個新的目錄,而且也希望 Kconfig 文件存在於該目錄中的話,那麼就必須在一個已存在的 Kconfig 文件中將它引入,需要用上面的語句將其掛接在 drivers 目錄中的Kconfig 中。
5. 修改/drivers目下Makefile文件,添加『obj-$(CONFIG_BQ27501) +=bq27501/』。這行編譯指令告訴模塊構建系統在編譯模塊時需要進入 bq27501/ 子目錄中。此時的驅動程序的編譯取決於一個特殊配置 CONFIG_BQ27501 配置選項。
6. 修改arch/arm目錄下的Kconfig文件,在menu "Device Drivers……endmenu"直接添加語句
source "drivers/bq27501/Kconfig"