原创 elf文件got/plt機制

文章目錄實驗 實驗 readelf -r 查看使用了哪些共享庫地址;

原创 ARM 指令

跳轉指令 B/BL label:跳轉到label指令地址處執行,會首先把該指令的下一條指令地址保存到lr寄存器。 label偏移地址的計算: A: B/BL指令的地址;B:即將要跳轉到的函數地址 label = (B - A)

原创 Linux Trace總結

Utrace 論文地址 1. 暫未合入kernel主線,最終Ptrace底層可由utrace實現,Ptrace可作爲utrace的客戶端 2. uprobe是utrace的客戶端 Ptrace 系統調用,主要用來實現debug工

原创 Intel pin

基於Intel Pin的論文書寫此文。論文地址 背景 Pin是一款軟件測量工具,主要可以用來做性能優化以及bug的發現。Pin使用了ATOM模型。Pin使用動態編譯手段來探測目標程序。 對標的工具:Valgrind,Dyna

原创 Linux進程調度

進程調度時機 1. 進程主動調用nanosleep(sleep),pause,read,write等系統調用時,有可能會主動讓出CPU時,會引起系統的進程調度; 2. 時鐘中斷服務,當從系統空間返回用戶空間時,系統有可能會發生調度

原创 Linux 動態庫hook注入

由於工作上的需要,之前只是對大概的原理了解,現對此進行詳細的分析。 涉及到的關鍵API以及數據結構: 1. ptrace PTRACE_ATTACH:掛載到指定的pid進程上 PTRACE_GETREGSET:讀取目標進程的寄存器

原创 vim插件配置

vim插件配置 安裝vundle git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 使用vundle進行插件安裝: "n

原创 Linux錯誤碼以及exitCode

Linux錯誤碼: 詳見鏈接 程序退出碼: 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT

原创 Debug程序的常規命令總結

1. file : 查看應用程序類型,符號信息是否被stripped 2. readelf :查看elf文件 -h:查看程序的入口地址 -e:查看所有的段信息,包括-S信息 -s:顯示所有符號信息 -r:查看需要重定位的符號信息 -

原创 C++: 外部函數調用類成員函數的方式

普通函數(入參一定)調用類成員函數 pthread_create的鉤子函數,void ()(void * data)-> void 可傳入this指針 ,進而調用類成員函數 signal的鉤子函數,void (*)(int si

原创 TCP_NODELAY配置選項

最近遇到一個問題:unix socket使用TCP進行通信,發的都是小的數據報文,在發送多個(未知)數據報文後,偶現其中一個數據報文,開始調用send接口到返回,花了將近2s左右;recv端結束數據報文正常,也沒有出現丟失數據包報文的

原创 android使用systrace框架sampling 手動蒐集數據並分析

前話:計算機行業需要學習的知識太多,有時遇到一個不熟悉問題,只能依靠網絡;網絡上的答案有好有壞,也可能是環境與自己的環境不一樣,導致給出的解決辦法不適用。但是網絡上有80%的答案都是拷貝粘貼,而且都不適用,不知道給出這些答案的人,最後到底

原创 Memory

valgrind 實現原理:標記程序的所有虛擬內存使用情況,具體到每一個bit位的值是否有效,每一個地址是否可以被使用,變量是否初始化; massif KASAN https://www.ibm.com/developerworks/

原创 linux下root目錄滿導致整個分區數據滿:掛載硬盤擴容

問題背景: 收到一臺環境ubuntu,df 查看如下: root@ubuntu-110:/mnt# df -h Filesystem Size Used Avail Use% Mounted on udev

原创 linux 編程實現異步機制-信號

基本概念 異步,相對於同步。簡單來說,就是不需要等直到達到某一種狀態,才能夠繼續往下執行;而是當該種狀態達到時,會被自動通知,然後進行處理。不需要等意味着可以進行其他的工作,提供CPU的利用率或者是程序的性能。 技術 引用:http