原创 mac os x 自定義入口與弱鏈接

自定義入口libhello.c #include <stdio.h> void my_start(void) { printf("my_start\n"); } void hello(void) { printf("He

原创 mac os x使用授權服務(提權)

// testright.c #include <stdio.h> #include <stdlib.h> #include <CoreFoundation/CoreFoundation.h> #include <Security/Aut

原创 android源碼調試

源碼版本5.1.1手機n4已經編譯了整個源碼刷入手機現在我們基於原來的項目創建源碼索引。第一步初始化各種環境變量。 export CLASSPATH=/home/haidragon/Desktop/java-7-openjdk-amd64/

原创 mac os x dyld 插件

// libinterposers.c #include <stdio.h> #include <unistd.h> #include <fcntl.h> typedef struct interpose_s { void *n

原创 mac os x使用Mach調用設置時間警報(回調)

// host_alarm.c #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <mach/mach.h> #include <mach/cloc

原创 mac os x在Mach中獲取時鐘基本屬性和時間值

// host_clock.c #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <mach/mach.h> #include <mach/cloc

原创 mac os x打印棧幀

// stacktrace.c #include <stdio.h> #include <dlfcn.h> void printframeinfo(unsigned int level, void *fp, void *ra) {

原创 mac os x使用Mach獲取調度和虛擬內存統計信息

// host_alarm.c #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <mach/mach.h> #include <mach/cloc

原创 android中so函數動態獲取問題

由於二進制中的函數是被粉碎過的,假如我要獲取libart.so中的OpenMemory函數(這個看源碼),我們可以這樣找。 nm -a '/home/haidragon/Desktop/android-5.1.1_r1/out/target

原创 android中的context源碼分析

https://duanqz.github.io/2017-12-25-Android-Contexthttps://www.jianshu.com/p/5ff04d5fe218設計模式:https://www.jianshu.com/p/

原创 Android系統從bootloader到system_server啓動過程

https://www.jianshu.com/p/9f978d57c683

原创 android5系統源碼分析點擊app圖標啓動過程

從點擊桌面app圖片開始看,代碼如下: //源碼路徑D:\dow\android-5.1.1_r1\android-5.1.1_r1\packages\apps\Launcher2\src\com\android\launcher2\Lau

原创 android5系統 getSystemService源碼分析

先看用法,如圖所示。進去一層層的看,發現頂層是一個抽象類,如圖所示。我們看getBaseContext方法返回的是基類。我們繼續看基類發現是一個抽象函數。而android的設計實現其實是在程序啓動的時候會去設置這個mBase;也就是調用的是

原创 NEXUS 5爲驅動硬件抽象層添加服務

接上面的文章,這篇是爲抽象層添加服務,同樣是羅老師的代碼。先定義硬件訪問服務接口,如圖所示。添加配置項。 初始化環境。 source build/envsetup.sh export PATH=/home/haidragon/Desktop

原创 NEXUS 5驅動開發

環境:n5手機 內核是3.4.0先在drivers目錄下新一個文件夾。 裏面放自己的驅動文件。代碼在最後面,編寫Kconfig文件。 config FREG tristate "Fake Register Driver" d