最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang hack插件開發(fā)動(dòng)態(tài)鏈接庫實(shí)例探究

 更新時(shí)間:2024年01月22日 14:28:46   作者:45度技術(shù)宅  
這篇文章主要為大家介紹了golang hack插件開發(fā)動(dòng)態(tài)鏈接庫實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

準(zhǔn)備工作

1. go1.8以上才支持動(dòng)態(tài)庫

2. linux 下動(dòng)態(tài)庫編譯  go build -buildmode=plugin

3. shard 下  go build -buildmode=c-shared

go加載動(dòng)態(tài)庫的過程

1.調(diào)用plugin.Open(filename) 打開共享對(duì)象文件,創(chuàng)建一個(gè)*plugin.Plugin實(shí)例

2. 在*plugin.Plugin實(shí)例上調(diào)用Lookup(symbolName string)

3. 使用類型斷言將泛型symbol轉(zhuǎn)換為所需類型

根據(jù)需要使用生成轉(zhuǎn)換對(duì)象

package main
import (
  "fmt"
  "goplugin/scanner"
  "io/ioutil"
  "log"
  "os"
  "plugin"
)
// 插件調(diào)用
const PluginDir = "./plugins/" // 定義放.so 文件的目錄
func main() {
  var (
    files []os.FileInfo
    err   error
    p     *plugin.Plugin
    n     plugin.Symbol
    check scanner.Checker
    res   *scanner.Result
  )
  // 獲取插件目錄所有文件
  if files, err = ioutil.ReadDir(PluginDir); err != nil {
    log.Fatalln(err)
  }
  // 遍歷所有的插件
  for idx := range files {
    fmt.Println("插件名", files[idx].Name())
    // 讀取插件
    if p, err = plugin.Open(PluginDir + files[idx].Name()); err != nil {
      log.Fatal(err)
    }
    // 加載插件中的New函數(shù)
    if n, err = p.Lookup("New"); err != nil {
      log.Fatalln(err)
    }
    newFunc, ok := n.(func() scanner.Checker) //類型斷言,檢查獲取到的n的類型,并返回
    if !ok {
      log.Fatal("new 函數(shù)檢查出錯(cuò)")
    }
    check = newFunc() // 調(diào)用newfunc
    res = check.Check("202.108.22.103", 80) // 調(diào)用插件中接口的check方法
    if res.Vulnerable {
      log.Println(res.Details)
    } else {
      log.Println("host not avalable")
    }
  }
}

goplugins/scanner

package scanner
// 插件的約束,插件實(shí)現(xiàn)對(duì)一個(gè)域名和port 的掃描,返回result
type Checker interface {
  Check(host string, port uint64) *Result
}
type Result struct {
  Vulnerable bool
  Details    string
}

以上就是golang hack插件開發(fā)動(dòng)態(tài)鏈接庫實(shí)例探究的詳細(xì)內(nèi)容,更多關(guān)于golang hack動(dòng)態(tài)鏈接庫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go內(nèi)存隊(duì)列l(wèi)ist VS slice實(shí)現(xiàn)方式對(duì)比分析

    go內(nèi)存隊(duì)列l(wèi)ist VS slice實(shí)現(xiàn)方式對(duì)比分析

    這篇文章主要為大家介紹了go內(nèi)存隊(duì)列l(wèi)ist VS slice實(shí)現(xiàn)方式對(duì)比分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作

    在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作

    正則表達(dá)式是處理字符串時(shí)一個(gè)非常強(qiáng)大的工具,而?Go?語言的?regexp?包提供了簡(jiǎn)單而強(qiáng)大的接口來使用正則表達(dá)式,本文將介紹如何在?Go?中使用?regexp?包來編譯和執(zhí)行正則表達(dá)式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧
    2023-12-12
  • Go語言Mock單元測(cè)試的實(shí)現(xiàn)示例

    Go語言Mock單元測(cè)試的實(shí)現(xiàn)示例

    Go語言Mock單元測(cè)試通過模擬外部依賴實(shí)現(xiàn)隔離測(cè)試,解決傳統(tǒng)測(cè)試中的環(huán)境依賴、結(jié)果不穩(wěn)定和效率問題,感興趣的可以了解一下
    2025-11-11
  • Go 語言中的空接口(推薦)

    Go 語言中的空接口(推薦)

    這篇文章主要介紹了Go 語言中的空接口的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 詳解Go中處理時(shí)間數(shù)據(jù)的方法

    詳解Go中處理時(shí)間數(shù)據(jù)的方法

    在許多場(chǎng)合,你將不得不編寫必須處理時(shí)間的代碼。在Go中處理時(shí)間數(shù)據(jù)需要你從Go標(biāo)準(zhǔn)庫中導(dǎo)入?time?包。這個(gè)包有很多方法和類型供你使用,但我選取了最常用的方法和類型,并在這篇文章中進(jìn)行了描述,感興趣的可以了解一下
    2023-04-04
  • golang日志包logger的用法詳解

    golang日志包logger的用法詳解

    這篇文章主要介紹了golang日志包logger的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go疑難雜癥講解之為什么nil不等于nil

    Go疑難雜癥講解之為什么nil不等于nil

    在日常開發(fā)中,可能一不小心就會(huì)掉進(jìn)?Go?語言的某些陷阱里,而本文要介紹的?nil?≠?nil?問題,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-10-10
  • Go中unsafe.Pointer類型的使用小結(jié)

    Go中unsafe.Pointer類型的使用小結(jié)

    unsafe.Pointer?是?Go?語言標(biāo)準(zhǔn)庫?unsafe?包中的一個(gè)特殊類型,用于在不同類型的指針之間進(jìn)行?無類型轉(zhuǎn)換,允許你繞過?Go?的類型系統(tǒng)進(jìn)行底層操作,感興趣的可以了解一下
    2026-02-02
  • Go 語言中和類型Sum Types的創(chuàng)新實(shí)現(xiàn)方案詳解

    Go 語言中和類型Sum Types的創(chuàng)新實(shí)現(xiàn)方案詳解

    本文介紹了Go語言中如何通過ProjectionStructs和SafeUnsafeConversion來實(shí)現(xiàn)和類型(SumTypes),該方案通過內(nèi)存布局相同的多個(gè)結(jié)構(gòu)體投影同一塊數(shù)據(jù),實(shí)現(xiàn)零自定義編解碼、編譯時(shí)類型安全和IDE自動(dòng)補(bǔ)全友好,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • go zero微服務(wù)框架logx日志組件剖析

    go zero微服務(wù)框架logx日志組件剖析

    這篇文章主要為大家介紹了go zero微服務(wù)框架logx日志組件剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

汤原县| 大田县| 乌拉特中旗| 马公市| 年辖:市辖区| 房山区| 耿马| 大同市| 厦门市| 聂拉木县| 鞍山市| 调兵山市| 勃利县| 丰宁| 和硕县| 乐至县| 天台县| 高雄县| 辽阳市| 澄城县| 武穴市| 三亚市| 蒲城县| 贡嘎县| 永登县| 通海县| 东乌珠穆沁旗| 绥江县| 吴忠市| 桑日县| 罗城| 太原市| 陵川县| 台东市| 温宿县| 金阳县| 文昌市| 公安县| 元氏县| 姚安县| 北宁市|