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

LyScript實(shí)現(xiàn)繞過反調(diào)試保護(hù)的示例詳解

 更新時(shí)間:2022年08月12日 14:09:56   作者:lyshark  
LyScript插件中內(nèi)置的方法可實(shí)現(xiàn)各類反調(diào)試以及屏蔽特定API函數(shù)的功能,這類功能在應(yīng)對(duì)病毒等惡意程序時(shí)非常有效。本文為大家提供了LyScript實(shí)現(xiàn)繞過反調(diào)試保護(hù)的示例代碼,感興趣的可以了解一下

LyScript插件中內(nèi)置的方法可實(shí)現(xiàn)各類反調(diào)試以及屏蔽特定API函數(shù)的功能,這類功能在應(yīng)對(duì)病毒等惡意程序時(shí)非常有效,例如當(dāng)程序調(diào)用特定API函數(shù)時(shí)我們可以將其攔截,從而實(shí)現(xiàn)保護(hù)系統(tǒng)在調(diào)試時(shí)不被破壞的目的。

LyScript項(xiàng)目地址: https://github.com/lyshark/LyScript

繞過反調(diào)試機(jī)制: 最常用的反調(diào)試機(jī)制就是用IsDebuggerPresent該標(biāo)志檢查PEB+2位置處的內(nèi)容,如果為1則表示正在被調(diào)試,我們運(yùn)行腳本直接將其設(shè)置為0即可繞過反調(diào)試機(jī)制。

也就是進(jìn)程環(huán)境塊中+2的位置,此處是一個(gè)字節(jié)標(biāo)志,反調(diào)試的機(jī)制是,程序調(diào)用IsDebuggerPresent檢查此處的標(biāo)志,如果為1則說明程序正在被調(diào)試,為0則說明沒有被調(diào)試,只需要在運(yùn)行之前將其設(shè)置為0即可繞過反調(diào)試。

from LyScript32 import MyDebug

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()
    dbg.connect()

    # 通過PEB找到調(diào)試標(biāo)志位
    peb = dbg.get_peb_address(dbg.get_process_id())
    print("調(diào)試標(biāo)志地址: 0x{:x}".format(peb+2))

    flag = dbg.read_memory_byte(peb+2)
    print("調(diào)試標(biāo)志位: {}".format(flag))

    # 將調(diào)試標(biāo)志設(shè)置為0即可過掉反調(diào)試
    nop_debug = dbg.write_memory_byte(peb+2,0)
    print("反調(diào)試?yán)@過狀態(tài): {}".format(nop_debug))
    
    dbg.close()

將程序載入調(diào)試器,并運(yùn)行如上腳本,然后運(yùn)行程序,你會(huì)發(fā)現(xiàn)反調(diào)試被繞過了。

其次我們還可以動(dòng)態(tài)的在函數(shù)開頭位置寫入sub eax,eax,ret指令,這樣當(dāng)程序要調(diào)用特定函數(shù)時(shí),會(huì)直接返回退出,從而達(dá)到屏蔽函數(shù)執(zhí)行等目的。

from LyScript32 import MyDebug

# 得到所需要的機(jī)器碼
def set_assemble_opcde(dbg,address):
    # 得到第一條長(zhǎng)度
    opcode_size = dbg.assemble_code_size("sub eax,eax")

    # 寫出匯編指令
    dbg.assemble_at(address, "sub eax,eax")
    dbg.assemble_at(address + opcode_size , "ret")

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()
    dbg.connect()

    # 得到函數(shù)所在內(nèi)存地址
    process32first = dbg.get_module_from_function("kernel32","Process32FirstW")
    process32next = dbg.get_module_from_function("kernel32","Process32NextW")
    messagebox = dbg.get_module_from_function("user32.dll","MessageBoxA")
    messageboxw = dbg.get_module_from_function("user32.dll", "MessageBoxW")

    print(hex(messagebox)," ",hex(messageboxw))

    # 替換函數(shù)位置為sub eax,eax ret
    set_assemble_opcde(dbg, messagebox)
    set_assemble_opcde(dbg,messageboxw)

    dbg.close()

如上,我們?cè)趶棿拔恢脤懗龇祷刂噶?,然后運(yùn)行程序,你會(huì)發(fā)現(xiàn),彈窗不會(huì)出現(xiàn)了,這也就把這個(gè)函數(shù)給屏蔽了。

同理,繞過進(jìn)程枚舉,依然可以使用此方式實(shí)現(xiàn)。

繞過進(jìn)程枚舉: 病毒會(huì)枚舉所有運(yùn)行的進(jìn)程以確認(rèn)是否有調(diào)試器在運(yùn)行,我們可以在特定的函數(shù)開頭處寫入SUB EAX,EAX RET指令讓其無法調(diào)用枚舉函數(shù)從而失效。

from LyScript32 import MyDebug

# 得到所需要的機(jī)器碼
def set_assemble_opcde(dbg,address):
    # 得到第一條長(zhǎng)度
    opcode_size = dbg.assemble_code_size("sub eax,eax")

    # 寫出匯編指令
    dbg.assemble_at(address, "sub eax,eax")
    dbg.assemble_at(address + opcode_size , "ret")

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()
    dbg.connect()

    # 得到函數(shù)所在內(nèi)存地址
    process32first = dbg.get_module_from_function("kernel32","Process32FirstW")
    process32next = dbg.get_module_from_function("kernel32","Process32NextW")
    print("process32first = 0x{:x} | process32next = 0x{:x}".format(process32first,process32next))

    # 替換函數(shù)位置為sub eax,eax ret
    set_assemble_opcde(dbg, process32first)
    set_assemble_opcde(dbg, process32next)

    dbg.close()

到此這篇關(guān)于LyScript實(shí)現(xiàn)繞過反調(diào)試保護(hù)的示例詳解的文章就介紹到這了,更多相關(guān)LyScript繞過反調(diào)試保護(hù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之

相關(guān)文章

  • python pytest進(jìn)階之fixture詳解

    python pytest進(jìn)階之fixture詳解

    這篇文章主要介紹了python pytest進(jìn)階之fixture詳解,學(xué)pytest就不得不說fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一樣,如果不學(xué)fixture那么使用pytest和使用unittest是沒什么區(qū)別的,需要的朋友可以參考下
    2019-06-06
  • pycharm配置anaconda環(huán)境時(shí)找不到python.exe解決辦法

    pycharm配置anaconda環(huán)境時(shí)找不到python.exe解決辦法

    今天來說一下python中一個(gè)管理包很好用的工具anaconda,可以輕松實(shí)現(xiàn)python中各種包的管理,這篇文章主要給大家介紹了關(guān)于pycharm配置anaconda環(huán)境時(shí)找不到python.exe的解決辦法,需要的朋友可以參考下
    2023-10-10
  • Python多線程原理與用法實(shí)例剖析

    Python多線程原理與用法實(shí)例剖析

    這篇文章主要介紹了Python多線程原理與用法,結(jié)合具體的爬蟲實(shí)例剖析了多線程的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • Python+Selenium鍵盤鼠標(biāo)模擬事件操作詳解

    Python+Selenium鍵盤鼠標(biāo)模擬事件操作詳解

    這篇文章主要帶大家一起學(xué)習(xí)一下Selenium的元素的基本操作與鼠標(biāo)鍵盤模擬事件的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-06-06
  • python異步的ASGI與Fast Api實(shí)現(xiàn)

    python異步的ASGI與Fast Api實(shí)現(xiàn)

    本文主要介紹了python異步的ASGI與Fast Api實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • python db類用法說明

    python db類用法說明

    這篇文章主要介紹了python db類用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python實(shí)現(xiàn)圖形用戶界面和游戲開發(fā)的方法和技巧

    Python實(shí)現(xiàn)圖形用戶界面和游戲開發(fā)的方法和技巧

    GUI圖形用戶界面編程,我們可以通過python提供的豐富的組件,快速的實(shí)現(xiàn)使用圖形的界面和用戶交互, GUI編程類似于“搭積?”,將?個(gè)個(gè)組件(Widget)放到窗?中,這篇文章主要給大家介紹了基于Python的GUI圖形用戶界面編程的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字

    Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字

    socket又叫套接字,實(shí)現(xiàn)網(wǎng)絡(luò)通信的兩端就是套接字。分為服務(wù)器對(duì)應(yīng)的套接字和客戶端對(duì)應(yīng)的套接字,本文給大家介紹Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字的相關(guān)知識(shí),包括套接字的基本概念,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Windows下Anaconda和PyCharm的安裝與使用詳解

    Windows下Anaconda和PyCharm的安裝與使用詳解

    這篇文章主要介紹了Windows下Anaconda和PyCharm的安裝與使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python實(shí)現(xiàn)鼠標(biāo)自動(dòng)在屏幕上隨機(jī)移動(dòng)功能

    Python實(shí)現(xiàn)鼠標(biāo)自動(dòng)在屏幕上隨機(jī)移動(dòng)功能

    這篇文章主要介紹了Python實(shí)現(xiàn)鼠標(biāo)自動(dòng)在屏幕上隨機(jī)移動(dòng)功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。還等什么?一起跟隨小編過來看看吧
    2020-03-03

最新評(píng)論

舞阳县| 三门县| 区。| 高尔夫| 棋牌| 公主岭市| 彰武县| 营山县| 大洼县| 吐鲁番市| 正镶白旗| 台湾省| 延川县| 潞西市| 石家庄市| 兰坪| 札达县| 利辛县| 阿拉善右旗| 富裕县| 三河市| 景宁| 沁水县| 南充市| 沂源县| 通河县| 额尔古纳市| 双城市| 洛浦县| 上高县| 高陵县| 瑞安市| 耿马| 和政县| 习水县| 荥阳市| 鄂托克旗| 九台市| 盐亭县| 莱西市| 大姚县|