| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖
标题:DLL动持为这什么这代码劫持不了
只看楼主 加入收藏
chongle
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-13
收藏
 问题点数:0 回复次数:0 
DLL动持为这什么这代码劫持不了

#include "stdafx.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 头文件

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 头文件
#include <Windows.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
#pragma comment(linker, "/EXPORT:LpkPresent=_AheadLib_LpkPresent,@1")
#pragma comment(linker, "/EXPORT:ScriptApplyDigitSubstitution=_AheadLib_ScriptApplyDigitSubstitution,@2")
#pragma comment(linker, "/EXPORT:ScriptApplyLogicalWidth=_AheadLib_ScriptApplyLogicalWidth,@3")
#pragma comment(linker, "/EXPORT:ScriptBreak=_AheadLib_ScriptBreak,@4")
#pragma comment(linker, "/EXPORT:ScriptCPtoX=_AheadLib_ScriptCPtoX,@5")
#pragma comment(linker, "/EXPORT:ScriptCacheGetHeight=_AheadLib_ScriptCacheGetHeight,@6")
#pragma comment(linker, "/EXPORT:ScriptFreeCache=_AheadLib_ScriptFreeCache,@7")
#pragma comment(linker, "/EXPORT:ScriptGetCMap=_AheadLib_ScriptGetCMap,@8")
#pragma comment(linker, "/EXPORT:ScriptGetFontProperties=_AheadLib_ScriptGetFontProperties,@9")
#pragma comment(linker, "/EXPORT:ScriptGetGlyphABCWidth=_AheadLib_ScriptGetGlyphABCWidth,@10")
#pragma comment(linker, "/EXPORT:ScriptGetLogicalWidths=_AheadLib_ScriptGetLogicalWidths,@11")
#pragma comment(linker, "/EXPORT:ScriptGetProperties=_AheadLib_ScriptGetProperties,@12")
#pragma comment(linker, "/EXPORT:ScriptIsComplex=_AheadLib_ScriptIsComplex,@13")
#pragma comment(linker, "/EXPORT:ScriptItemize=_AheadLib_ScriptItemize,@14")
#pragma comment(linker, "/EXPORT:ScriptJustify=_AheadLib_ScriptJustify,@15")
#pragma comment(linker, "/EXPORT:ScriptLayout=_AheadLib_ScriptLayout,@16")
#pragma comment(linker, "/EXPORT:ScriptPlace=_AheadLib_ScriptPlace,@17")
#pragma comment(linker, "/EXPORT:ScriptRecordDigitSubstitution=_AheadLib_ScriptRecordDigitSubstitution,@18")
#pragma comment(linker, "/EXPORT:ScriptShape=_AheadLib_ScriptShape,@19")
#pragma comment(linker, "/EXPORT:ScriptStringAnalyse=_AheadLib_ScriptStringAnalyse,@20")
#pragma comment(linker, "/EXPORT:ScriptStringCPtoX=_AheadLib_ScriptStringCPtoX,@21")
#pragma comment(linker, "/EXPORT:ScriptStringFree=_AheadLib_ScriptStringFree,@22")
#pragma comment(linker, "/EXPORT:ScriptStringGetLogicalWidths=_AheadLib_ScriptStringGetLogicalWidths,@23")
#pragma comment(linker, "/EXPORT:ScriptStringGetOrder=_AheadLib_ScriptStringGetOrder,@24")
#pragma comment(linker, "/EXPORT:ScriptStringOut=_AheadLib_ScriptStringOut,@25")
#pragma comment(linker, "/EXPORT:ScriptStringValidate=_AheadLib_ScriptStringValidate,@26")
#pragma comment(linker, "/EXPORT:ScriptStringXtoCP=_AheadLib_ScriptStringXtoCP,@27")
#pragma comment(linker, "/EXPORT:ScriptString_pLogAttr=_AheadLib_ScriptString_pLogAttr,@28")
#pragma comment(linker, "/EXPORT:ScriptString_pSize=_AheadLib_ScriptString_pSize,@29")
#pragma comment(linker, "/EXPORT:ScriptString_pcOutChars=_AheadLib_ScriptString_pcOutChars,@30")
#pragma comment(linker, "/EXPORT:ScriptTextOut=_AheadLib_ScriptTextOut,@31")
#pragma comment(linker, "/EXPORT:ScriptXtoCP=_AheadLib_ScriptXtoCP,@32")
#pragma comment(linker, "/EXPORT:UspAllocCache=_AheadLib_UspAllocCache,@33")
#pragma comment(linker, "/EXPORT:UspAllocTemp=_AheadLib_UspAllocTemp,@34")
#pragma comment(linker, "/EXPORT:UspFreeMem=_AheadLib_UspFreeMem,@35")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义
#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
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AheadLib 命名空间
namespace AheadLib
{
    HMODULE m_hModule = NULL;    // 原始模块句柄
    DWORD m_dwReturn[35] = {0};    // 原始函数返回地址


    // 加载原始模块
    inline BOOL WINAPI Load()
    {
        TCHAR tzPath[MAX_PATH];
        TCHAR tzTemp[MAX_PATH * 2];

        GetSystemDirectory(tzPath, MAX_PATH);
        lstrcat(tzPath, TEXT("\\usp10"));
        m_hModule = LoadLibrary(tzPath);
        if (m_hModule == NULL)
        {
            wsprintf(tzTemp, TEXT("无法加载 %s,程序无法正常运行。"), tzPath);
            MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
        }

        return (m_hModule != NULL);   
    }
        
    // 释放原始模块
    inline VOID WINAPI Free()
    {
        if (m_hModule)
        {
            FreeLibrary(m_hModule);
        }
    }

    // 获取原始函数地址
    FARPROC WINAPI GetAddress(PCSTR pszProcName)
    {
        FARPROC fpAddress;
        CHAR szProcName[16];
        TCHAR tzTemp[MAX_PATH];

        fpAddress = GetProcAddress(m_hModule, pszProcName);
        if (fpAddress == NULL)
        {
            if (HIWORD(pszProcName) == 0)
            {
                wsprintf(szProcName, "%d", pszProcName);
                pszProcName = szProcName;
            }

            wsprintf(tzTemp, TEXT("无法找到函数 %hs,程序无法正常运行。"), pszProcName);
            MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
            ExitProcess(-2);
        }

        return fpAddress;
    }
}
using namespace AheadLib;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef int(*lpAddFun)(int, int);
void download() //注入使用的下载函数
{

MessageBox(NULL, TEXT("我只是一个简单的提示框演示了下自动附加DLL,现在没啥功能,后期可以添加上读写内存,HOOK函数等功能"), TEXT("VB梦工厂提示"), MB_OK);
       //参数 MB_OK 为按钮的类型
      
DWORD dwStart = GetTickCount();
  DWORD dwEnd = dwStart;
  do
  {
  dwEnd = GetTickCount()-dwStart;
  }while(dwEnd <100);
   //char str[10];
   //char JB[50]="网络句柄:";
  //sprintf(str,"%d",s);   //数值转化为字符串

 HINSTANCE hDll; //DLL¾ä±ú

    lpAddFun addFun; //oˉêyÖ¸Õë

    hDll = LoadLibrary("hook.dll");
   
        addFun = (lpAddFun)GetProcAddress(hDll, "dllmain");
    return;
}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 入口函数
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        if(Load())
        {
            //LpkEditControl这个数组有14个成员,必须将其复制过来   
        download();

        }
        else

            return FALSE;


    }   
    else if (dwReason == DLL_PROCESS_DETACH)
    {
download();
        Free();
    }
    return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_LpkPresent(void)
{
    GetAddress("LpkPresent");

    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptApplyDigitSubstitution(void)
{
    GetAddress("ScriptApplyDigitSubstitution");

    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptApplyLogicalWidth(void)
{
    GetAddress("ScriptApplyLogicalWidth");

    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptBreak(void)
{
    GetAddress("ScriptBreak");

    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptCPtoX(void)
{
    GetAddress("ScriptCPtoX");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptCacheGetHeight(void)
{
    GetAddress("ScriptCacheGetHeight");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptFreeCache(void)
{
    GetAddress("ScriptFreeCache");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptGetCMap(void)
{
    GetAddress("ScriptGetCMap");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptGetFontProperties(void)
{
    GetAddress("ScriptGetFontProperties");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptGetGlyphABCWidth(void)
{
    GetAddress("ScriptGetGlyphABCWidth");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptGetLogicalWidths(void)
{
    GetAddress("ScriptGetLogicalWidths");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptGetProperties(void)
{
    GetAddress("ScriptGetProperties");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptIsComplex(void)
{
    GetAddress("ScriptIsComplex");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptItemize(void)
{
    GetAddress("ScriptItemize");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptJustify(void)
{
    GetAddress("ScriptJustify");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptLayout(void)
{
    GetAddress("ScriptLayout");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptPlace(void)
{
    GetAddress("ScriptPlace");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptRecordDigitSubstitution(void)
{
    GetAddress("ScriptRecordDigitSubstitution");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptShape(void)
{
    GetAddress("ScriptShape");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringAnalyse(void)
{
    GetAddress("ScriptStringAnalyse");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringCPtoX(void)
{
    GetAddress("ScriptStringCPtoX");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringFree(void)
{
    GetAddress("ScriptStringFree");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringGetLogicalWidths(void)
{
    GetAddress("ScriptStringGetLogicalWidths");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringGetOrder(void)
{
    GetAddress("ScriptStringGetOrder");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringOut(void)
{
    GetAddress("ScriptStringOut");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringValidate(void)
{
    GetAddress("ScriptStringValidate");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptStringXtoCP(void)
{
    GetAddress("ScriptStringXtoCP");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptString_pLogAttr(void)
{
    GetAddress("ScriptString_pLogAttr");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptString_pSize(void)
{
    GetAddress("ScriptString_pSize");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptString_pcOutChars(void)
{
    GetAddress("ScriptString_pcOutChars");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptTextOut(void)
{
    GetAddress("ScriptTextOut");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_ScriptXtoCP(void)
{
    GetAddress("ScriptXtoCP");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_UspAllocCache(void)
{
    GetAddress("UspAllocCache");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_UspAllocTemp(void)
{
    GetAddress("UspAllocTemp");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_UspFreeMem(void)
{
    GetAddress("UspFreeMem");
    __asm JMP EAX;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

搜索更多相关主题的帖子: include 
2012-04-27 14:45
快速回复:DLL动持为这什么这代码劫持不了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved