准确点说是隐藏dll中的部分资源。
【问题1】现在要发布一些包含函数的文件,请问你用什么方法隐藏你不想让人家知道的函数呢?
     我的疑问,使用dll文件即可,将想发布的资源使用extent关键字声明,不想让人家知道当然就不使用extent。【问题2】用dll?具体点?就算你不是 extent 声明的资源,一样可以看到内容。
   一般都是用vc自带的Dependency,或者命令Dumpbin /exports XXX.dll 
 还有更强大的工具吗?网友你们有用过吗?

解决方案 »

  1.   

    你可以参考哈。NTSTATUS HideModule(IN HMODULE hModule)
    {
        NTSTATUS                  status = -1;
        DWORD                     dwReturnLen = 0;
        PLIST_ENTRY               ListHead = NULL;
        PLIST_ENTRY               Current = NULL;
        PPEB_LDR_DATA             pLdr = NULL;
        PLDR_DATA_TABLE_ENTRY     pstEntry = NULL;
        PROCESS_BASIC_INFORMATION processInfo;    ZeroMemory(&processInfo, sizeof(PROCESS_BASIC_INFORMATION));
        status = ZwQueryInformationProcess(
            GetCurrentProcess(), 
            ProcessBasicInformation, 
            &processInfo, 
            sizeof(PROCESS_BASIC_INFORMATION), 
            &dwReturnLen);
        if (!NT_SUCCESS(status))
            return status;    pLdr = (PPEB_LDR_DATA)(*(PULONG)((ULONG)processInfo.PebBaseAddress + 0x00C));    ListHead = &pLdr->InLoadOrderModuleList;
        Current = ListHead->Blink;
        while (Current != ListHead)
        {
            pstEntry = CONTAINING_RECORD(Current, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
            if (pstEntry->DllBase == hModule)
            {
                if (pstEntry->FullDllName.Length != 0)
                {
                    ZeroMemory(pstEntry->FullDllName.Buffer, pstEntry->FullDllName.Length);
                    pstEntry->FullDllName.Length = 0;
                    pstEntry->FullDllName.MaximumLength = sizeof(WCHAR);
                    pstEntry->BaseDllName.Length = 0;
                    pstEntry->BaseDllName.MaximumLength = sizeof(WCHAR);
                }            status = STATUS_SUCCESS;
                break;
            }        Current = pstEntry->InLoadOrderLinks.Blink;
        }    return status;
    }
      

  2.   

    通过def文件进行对函数序列的思想没有达到隐藏的目的,只能说是曲线救国。而且这样人家更能容易使用你的函数。现在的问题是先不让他知道有这个函数 。
      

  3.   

    ida是反汇编工具。用IDA+F5插件,然后打开DLL,找到你想查看的函数F5
      

  4.   

    模拟COM的方式, 只放出一个接口出来, 其他函数封装到接口里, 使用通过接口使用
      

  5.   

    模拟COM的方式, 只放出一个接口出来, 其他函数封装到接口里, 使用通过接口使用