标题:[原创] 这个代码可让你无法调用API函数!
取消只看楼主
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
结帖率:100%
 问题点数:0 回复次数:6 
[原创] 这个代码可让你无法调用API函数!
//////////////////////////////////////////////////////////////////////////
// 说明:这个程序代码目前只能禁止自己的API调用,如果稍加修改就能禁止其他程序的API调用了。 恶劣吧
// 程序:flyue
// [url]http://www.bccn.net[/url]
//////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>

int main()
{
    HMODULE hModule = 0;
    FARPROC pfnOrig = 0;
    char strAPIName[256] = {0};
    char strDLLName[256] = {0};

    BYTE btNewBytes[8] = { 0xC2, 0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90 };
    /*
    btNewBytes对应的汇编代码:
    ret 0    ;返回该函数
    nop        ;nop为无操作,用来占位置的
    nop
    nop
    nop
    nop
    */

    bool bLoadType = false;

    printf("输入一个API名称(如 MessageBoxA):\n");
    scanf("%s", strAPIName);
    printf("输入一个DLL名称(如 user32.dll):\n");
    scanf("%s", strDLLName);

    hModule = ::GetModuleHandle(strDLLName);
    if(hModule) bLoadType = true;
    else hModule = ::LoadLibrary(strDLLName);
    if(hModule == NULL)
    {
        printf("读取DLL出错!\n");
        return 1;
    }
    pfnOrig = ::GetProcAddress(hModule, strAPIName);
    // 修改原API函数
    if(pfnOrig != NULL)
    {
        DWORD dwOldProtect;
        MEMORY_BASIC_INFORMATION mbi;
        ::VirtualQuery(pfnOrig, &mbi, sizeof(mbi));
        ::VirtualProtect(pfnOrig, 8, PAGE_READWRITE, &dwOldProtect);
        // 写入新的执行代码
        memcpy(pfnOrig, btNewBytes, 8);
        
        ::VirtualProtect(pfnOrig, 8, mbi.Protect, 0);
    }
    else
    {
        printf("找不到API函数入口点!\n");
        return 2;
    }

    // 测试用的API,如果禁止成功将不会弹出此消息框
    MessageBoxA(0,"AAA",0,0);
    //////////////////////////////////////////////////////////////////////////

    if(!bLoadType) FreeLibrary(hModule);
    return 0;
}
搜索更多相关主题的帖子: 代码 禁止调用API函数 flyue 核心编程 
2008-05-29 18:06
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
嘿嘿,某人比较懒,象算法一类的问题不喜欢动脑筋。搞这些“不务正业”的代码还是有一套的

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-29 18:50
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
家里没装杀毒软件,要不我还真想拿杀毒软件来开刀!!
要是因此而使世界上又产生了一个黑客……那真是罪过~~

“Loli”是“萝莉”的意思吧?你好象很喜欢在帖子后面贴张图,是为了增加你的poco空间的访问量吗?

[[it] 本帖最后由 flyue 于 2008-5-30 13:18 编辑 [/it]]

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-30 13:12
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
也是。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-30 13:41
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
我恰好有“打入系统ring0环”的代码,不过我可不想犯罪,要不早发出来了

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-30 17:46
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
其实Loli就是飞燕啊

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-02 19:05
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
嘿嘿,看哪个喜欢在帖子后面加一张图就知道谁是燕子了
以后要隐藏身份就别漏了马脚

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-03 17:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-216533-1-1.html




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

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