91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個python腳本看透Linux程序對庫的依賴

Linux閱碼場 ? 來源:cg ? 2018-12-24 13:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在下今天寫了一個小小的python程序,可以在完全不看源代碼的情況下,分析a如果調用b.so的時候,會引用b.so的哪些函數,它的用法如下:

./symbol-dep.py-sa-db.so

把a作為-s參數,把b.so作為-d參數。

它的原理如下:

用nm -D --undefined-only命令可以列出一個程序依賴的需要動態鏈接的庫函數,譬如:

用nm -D --defined-only命令可以列出一個動態鏈接庫給別人提供的函數,譬如:

我們只要把a依賴的函數,與b.so供給的函數中,求一個交集,即可在完全沒有源代碼的情況下,知道a會call到b.so的哪些函數。核心源代碼如下(部分用了省略號方便閱讀):

#!/usr/bin/python3

import sys, getopt, os

def main(argv):

...

try:

opts, args = getopt.getopt(...)

except getopt.GetoptError:

...

for opt, arg in opts:

if opt == '-h':

p...

elif opt in ("-s", "--sfile"):

srcfile = arg

elif opt in ("-d", "--dfile"):

dstfile = arg

# get the symbols srcfile depends on

src=os.popen("nm -D --undefined-only "+srcfile)

srclist=src.read().splitlines()

for sline in srclist:

neededsymbols.append(sline.split()[-1])

# get the symbols dstfile exports

dst=os.popen("nm -D --defined-only "+dstfile)

dstlist=dst.read().splitlines()

for dline in dstlist:

exportedsymbols.append(dline.split()[-1])

# intersection of src and dest

for symbol in neededsymbols:

if symbol in exportedsymbols:

print(symbol)

if __name__ == "__main__":

main(sys.argv[1:])

完整源代碼高亮后如下:

運行結果如下:

范例中a.out對應的源代碼如下:

so easy。

希望你能夠喜歡這個小工具。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11512

    瀏覽量

    213908
  • python
    +關注

    關注

    56

    文章

    4827

    瀏覽量

    86826

原文標題:宋寶華:一個簡單的python腳本看透Linux程序對庫的依賴

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Python如何管理所用的全部依賴

    Python 的項目中,如何管理所用的全部依賴呢?最主流的做法是維護份requirements.txt,記錄下依賴
    發表于 11-21 11:16 ?1573次閱讀
    <b class='flag-5'>Python</b>如何管理所用的全部<b class='flag-5'>依賴</b><b class='flag-5'>庫</b>

    10殺手級的Python自動化腳本

    今天浩道跟大家分享10日常工作中用到的python自動化腳本。讓你感受python簡單強大之處!
    發表于 11-28 11:07 ?838次閱讀

    13用于日常編程的高級Python腳本

    今天浩道跟大家分享13用于日常編程的高級python腳本。讓你不會寫腳本的也能感受到其魅力!
    發表于 12-09 11:47 ?766次閱讀

    查詢Linux應用程序運行依賴哪些的方法

    查詢Linux應用程序運行依賴哪些 法: $(CROSS_COMPILE)ldd AppName 如: arm_v5t_le-lld
    發表于 08-19 07:42

    常用Python有那些38常用Python的詳細概述

    Python作為設計優秀的程序語言,現在已廣泛應用于各種領域,依靠其強大的第三方類Python
    的頭像 發表于 11-03 10:28 ?3.2w次閱讀

    ldd命令:用于打印程序或者共享文件所依賴的共享列表

    1.命令簡介 ldd 命令用于打印程序或者共享文件所依賴的共享列表。注意,ldd 本身不是
    的頭像 發表于 02-02 11:37 ?2394次閱讀

    ADM1266 Linux API和Python簡介

    ADM1266 Linux API和Python簡介
    發表于 05-17 10:50 ?6次下載
    ADM1266 <b class='flag-5'>Linux</b> API和<b class='flag-5'>Python</b><b class='flag-5'>庫</b>簡介

    python程序在嵌入式linux系統運行。。

    最近在寫運行在嵌入式linux系統下的python程序。中間遇到很多坑,接下來我就一一說下。從windows編寫python
    發表于 11-01 16:32 ?12次下載
    <b class='flag-5'>python</b><b class='flag-5'>程序</b>在嵌入式<b class='flag-5'>linux</b>系統運行。。

    Python編寫的輕量級數據

    TinyDB 是Python 編寫的輕量級數據共只有1800行代碼,沒有外部依賴
    的頭像 發表于 02-24 10:32 ?1254次閱讀

    如何在Linux命令行中運行Python腳本

    Python種高級編程語言,被廣泛應用于數據科學、機器學習、Web 開發等領域。在 Linux 操作系統中,Python
    的頭像 發表于 05-12 14:49 ?2132次閱讀

    如何查看linux程序共享呢?

    linux系統中,程序通常需要依賴于外部來正常工作。這些可以直接編譯到程序中,也可以從共享
    的頭像 發表于 08-28 09:11 ?1991次閱讀
    如何查看<b class='flag-5'>linux</b><b class='flag-5'>程序</b>共享<b class='flag-5'>庫</b>呢?

    SQLite數據python的區別

    SQLite數據python的區別 SQLite是種輕量級關系型數據管理系統,是嵌入
    的頭像 發表于 08-28 16:41 ?1175次閱讀

    TinyDB :Python編寫的輕量級數據

    TinyDB 是Python 編寫的輕量級數據共只有1800行代碼,沒有外部依賴
    的頭像 發表于 10-21 10:22 ?1397次閱讀

    如何使用linux下gdb來調試python程序

    如何使用linux下gdb來調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試Python
    的頭像 發表于 01-31 10:41 ?3249次閱讀

    零基礎入門:如何在樹莓派上編寫和運行Python程序

    種非常有用的編程語言,其語法易于閱讀,允許程序員使用比匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux腳本
    的頭像 發表于 03-25 09:27 ?770次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b><b class='flag-5'>程序</b>?
    主站蜘蛛池模板: 久久国产精品永久免费网站 | 黄色片网站观看 | 5252色欧美在线激情 | 成人二区 | 亚洲一区二区三区四区在线观看 | 97色噜噜 | 国产色视频一区 | 黑人40厘米全进去xxxx猛交 | 四虎国产永久在线精品免费观看 | 国产剧情麻豆三级在线观看 | 欧美videos 另类| 视频网站免费看 | 丁香花五月婷婷开心 | 亚洲黄色高清视频 | 天天操天天操天天射 | 亚洲一区二区三区影院 | 免费人成网址在线观看国内 | 俄罗斯小屁孩cao大人免费 | 黄色在线观看视频 | 日日操夜夜骑 | 久操精品在线观看 | 国产精品美女www爽爽爽视频 | 能看毛片的网址 | 欧美性free免费 | 四虎影院免费观看视频 | 福利片在线观看免费高清 | 婷婷色亚洲 | 久草色在线 | 给我免费播放片黄色 | 天天操夜夜操天天操 | 欧美亚洲网站 | 久操操| 特级全黄一级毛片免费 | 国产美女激情视频 | 手机免费看大片 | 久久久噜久噜久久综合 | 天天插日日干 | www.xxx日本人 | 亚洲第一区精品日韩在线播放 | 98pao强力打造高清免费 | 成人性色生活影片 |