标题:[原创] 这个代码可让你无法调用API函数!
只看楼主
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
结帖率:100%
 问题点数:0 回复次数:26 
[原创] 这个代码可让你无法调用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
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
得分:0 
看来LZ很喜欢研究系统低层嘛

[color=white]
2008-05-29 18:30
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
嘿嘿,某人比较懒,象算法一类的问题不喜欢动脑筋。搞这些“不务正业”的代码还是有一套的

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-29 18:50
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
得分:0 
2008-05-29 19:58
ONOSIN
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2007-6-16
得分:0 
2008-05-29 23:43
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
得分:0 
其实我也喜欢比较实用的技术```` 算法也一样喜欢了


How are you 怎么是你?
How old are you   怎么老是你?
2008-05-30 00:04
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
得分:0 
我吐了。。。。

[color=white]
2008-05-30 00:18
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
6楼你太强了,这图偶借用了,哈哈,以后与这只飞蛾有得一拼了,哈哈哈

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-05-30 08:48
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 
在上课没时间看 先收藏
2008-05-30 10:33
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
那个啥,何必呢?从400000开始(或者从MZ开始)找重定向表然后XXX都改掉,岂不是更好?
最好改成指向一个MessageBox(“对不起,您无权使用API函数“)的函数……
最好是WriteProcessMemory改掉其他程序的……
最好是改掉杀毒软件的……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-30 11:58



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




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

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