首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在PE中隐藏导出表函数名称?

在PE中隐藏导出表函数名称有几种常用的方法:

  1. 修改导出表函数名称:通过修改导出表中函数名称的方式来隐藏函数名称。可以使用工具如Hex Editor或PE Editor等直接修改导出表的二进制数据,将函数名称改成随机的字符串,以使其不易被识别。
  2. 使用DLL代理:创建一个新的DLL文件,该文件作为一个代理来调用真正的函数。在导出表中,将新DLL中的函数名称设置为公开的,而实际函数则通过代理进行调用。这样可以隐藏真正函数的名称,只有代理的函数名称会被暴露出来。
  3. 使用名字混淆:对导出表函数名称进行名字混淆,使其难以被理解和识别。可以使用工具如Obfuscator等对函数名称进行混淆处理,生成一些难以理解的字符串或符号作为函数名称,增加逆向工程的难度。
  4. 使用导入表重定向:在导出表中,将函数的名称设置为空,然后在导入表中将函数的名称重定向到其他位置。这样,即使导出表中没有函数名称,程序在运行时仍然可以通过导入表找到正确的函数。

需要注意的是,以上方法都是用于隐藏导出表函数名称的技术手段,仍然无法完全避免被高级的逆向工程手段识别和破解。同时,这些方法也仅限于隐藏函数名称,在保护二进制代码和软件安全方面还需要综合其他技术手段进行综合防护。

推荐的腾讯云相关产品:腾讯云安全产品,如Web应用防火墙(WAF)、DDoS防护、云安全中心等可以提供全面的安全保护和威胁防御。

参考链接:腾讯云安全产品

注意:这里没有提及其他云计算品牌商,如有需要可以在真实场景中根据实际情况参考和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows黑客编程技术详解 --第四章 木马启动技术(内含赠书福利)

4.3.1 实现原理 要想完全理解透彻内存直接加载运行技术,需要对PE文件结构有比较详细的了解,至少要了解PE格式的导入导出以及重定位的具体操作过程。...因为内存直接加载运行技术的核心就是模拟PE加载器加载PE文件的过程,也就是对导入导出以及重定位的操作过程。 那么程序需要进行哪些操作便可以直接从内存中加载运行DLL或是exe文件呢?...PE结构使用导入来记录PE程序中所有引用的函数及其函数地址。在DLL映射到内存之后,需要根据导入的导入模块和函数名称来获取调用函数的地址。...但是为了避免调用敏感的WIN32 API函数而被杀软拦截检测,本书采用直接遍历PE结构导出的方式来获取导出函数地址,这要求读者熟悉导出的具体操作原理。...但是,只要熟悉PE结构,这个程序理解起来就会容易得多。对于重定位、导入,以及导出部分的具体操作并没有详细讲解。

3.9K50

IAT 三连之什么是 IAT?

导入存放了程序所有使用的 DLL 模块名称及导入的函数名称函数序号。 本文所用文件及源代码下载地址: https://pan.baidu.com/s/1o9360AI 学习 IAT 有什么用?...在脱壳和加壳的研究,导入是非常关键的部分,加壳要尽可能的隐藏或破坏原始的导入。脱壳一定要找到或者还原原本的导入。...在反病毒的静态分析,我们可以通过病毒的导入,初步确定病毒的行为。 在免杀也有对 IAT 的操作,比如隐藏导入,修改导入描述信息,移动导入函数等等。...上述的形态字符串都可以再加一个 b 字符, rb、w+b 或 ab+ 等组合,加入 b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。...mov ecx,[ebp+eax+0x78] //导入的指针 add ecx,ebp mov ebx,[ecx+0x20] //导出函数的名字列表 …… popad

1.5K10
  • Oracle如何导出存储过程、函数、包和触发器的定义语句?如何导出的结构?如何导出索引的创建语句?

    今天小麦苗给大家分享的是Oracle如何导出存储过程、函数、包和触发器的定义语句?如何导出的结构?如何导出索引的创建语句?。 Oracle如何导出存储过程、函数、包和触发器的定义语句?...如何导出的结构?如何导出索引的创建语句?...---- 总体来说有两种方式来获取,第一,利用系统包DBMS_METADATA包的GET_DDL函数来获取,第二,利用exp或expdp来获取。...下面来看第一种方式,如何利用系统包DBMS_METADATA包的GET_DDL函数来获取对象的定义语句。...另外,使用imp工具的indexfile选项也可以把dmp文件和索引的创建语句导出而不导入任何对象,命令如下: imp userid/userid@service_name file=/tmp/exp_ddl_lhr

    5.2K10

    二进制技巧-利用非传统方法显示调用 api 函数

    利用非传统方法显示调用 api 函数 前言 本文将介绍一种在内存查找函数地址的方法,从而隐藏导入存在调用函数的痕迹。 下面将对该方法进行详细的介绍。...此处存储着当前找到的模块的所有的导出函数名称,通过与这些字符串逐个比较,可以找到指定的函数名称。...; // 导出函数具名的函数个数 DWORD NumberOfNames; // 导出函数地址数组 DWORD AddressOfFunctions;...edx+60] 拿到了PE头和DllBase,我们就能去获得导出函数表EAT 0x05 定位导出EAT ; DllBase+PE头RVA地址+120等于导出EAT的RVA地址...dec ecx ; ecx减一,即导出函数具名的函数个数NumberOfNames作为循环计数器 mov esi, [ebx+ecx*4] ; 获取导出函数函数名字符串

    1K40

    PE文件详解(七)

    本文转载自小甲鱼PE文件讲解系列原文传送门 这次主要说明导出导出一般记录着文件函数的地址等相关信息,供其他程序调用,常见的.exe文件中一般不存在导出导出更多的是存在于dll文件。...PE加载器加载到内存,然后再进行映射 导出结构 导出(Export Table)的主要成分是一个表格,内含函数名称、输出序数等。...这个只是一个导出序号导出给外部进行使用的,当我们在分析PE文件进行相关函数的定址时,不使用这个序号,也没有存储函数导出序号 AddressOfNames 和 AddressOfNameOrdinals...数组的项数等于NumberOfNames 字段的值,所有有名称导出函数名称字符串都定义在这个;后者指向另一个word 类型的数组(注意不是双字数组)。...从序号查找函数入口地址 定位到PE 文件头 从PE 文件头中的 IMAGE_OPTIONAL_HEADER32 结构取出数据目录,并从第一个数据目录得到导出的RVA 从导出的 Base

    96510

    PE知识复习之PE导出

    PE知识复习之PE导出 一丶简介  在说明PE导出之前.我们要理解.一个PE可执行程序.是由一个文件组成的吗....什么是导出:     导出就是当前的PE文件提供了那些函数.给别人用. 举个例子: PE文件相当于一个饭店.那么菜单就是导出....里面的RVA指向了当前导出函数函数名称. 例如上面已经算出 函数地址的FOA位置 函数名称 FOA == 0x76c5c 那么我们去函数名称查看. ? 存储的都是RVA....如果在内存.我们直接RVA + 当前PE的ImageBase就可以看到函数导出名称了.不过我们现在算一下....序号的个数跟函数名称个数是一样的.都依赖成员 导出.函数名称导出个数 这个成员来决定的. 序号是给名称的使用的. 序号占两个字节.存储序号.

    1.5K20

    PE格式:手写PE结构解析工具

    ,病毒分析,外挂技术等,在PE文件我们最需要关注,PE结构,导入,导出,重定位,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据....◆当PE文件执行时 Windows装载器将文件装入内存并将导入登记的DLL文件一并装入,再根据DLL文件函数导出信息对可执行文件的导入(IAT)进行修正。...导出函数的DLL文件导出信息被保存在导出导出就是记载着动态链接库的一些导出信息。...通过导出,DLL文件可以向系统提供导出函数名称、序号和入口地址等信息,以便Windows装载器能够通过这些信息来完成动态链接的整个过程。...导出函数存储在PE文件的导出表里,导出的位置存放在PE文件头中的数据目录,与导出对应的项目是数据目录的首个IMAGE_DATA_DIRECTORY结构,从这个结构的VirtualAddress

    1.5K20

    PE格式:手写PE结构解析工具

    ,病毒分析,外挂技术等,在PE文件我们最需要关注,PE结构,导入,导出,重定位,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据....◆ 当PE文件执行时 Windows装载器将文件装入内存并将导入登记的DLL文件一并装入,再根据DLL文件函数导出信息对可执行文件的导入(IAT)进行修正。...导出函数的DLL文件导出信息被保存在导出导出就是记载着动态链接库的一些导出信息。...通过导出,DLL文件可以向系统提供导出函数名称、序号和入口地址等信息,以便Windows装载器能够通过这些信息来完成动态链接的整个过程。...导出函数存储在PE文件的导出表里,导出的位置存放在PE文件头中的数据目录,与导出对应的项目是数据目录的首个IMAGE_DATA_DIRECTORY结构,从这个结构的VirtualAddress

    1K20

    逆向初级-PE(五)

    数据全部往后推移了40个字节) 在最后面添加1000h字节 5.11.导出 1、如何查找导出 扩展PE头最后一个成员是一个数组(包含16和元素),每个数组对应一个(每个占8字节),导出...AddressOfNames; // RVA from base of image 导出函数名称RVA DWORD AddressOfNameOrdinals; /...:导出函数的个数 2个 NumberOfNames:以函数名字导出函数个数 2个 AddressOfFunctions:导出函数地址RVA AddressOfNames:导出函数名称...序号是两个字节,序号的个数跟函数名称的个数相同 这里序号为0和1 4、参考 总共四个函数 所有导出函数的个数为5,因为序号中间隔了个14没有。...{ WORD Hint; //可能为空,编译器决定,如果不为空,是函数导出的索引 BYTE Name[1]; //函数名称,以0结尾 } IMAGE_IMPORT_BY_NAME

    1.2K30

    2.6 PE结构:导出详细解析

    导出(Export Table)是Windows可执行文件的一个结构,记录了可执行文件某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。...当PE文件执行时Windows装载器将文件装入内存并将导入登记的DLL文件一并装入,再根据DLL文件函数导出信息对可执行文件的导入(IAT)进行修正。...导出包含了三种信息:函数名称:记录了可执行文件中导出函数名称,在其他程序调用时需要用到这个名称函数地址:记录了可执行文件中导出函数的地址,使用时需要调用该函数的地址。...函数序号:记录了每个导出函数的序号,可以通过序号直接调用函数导出函数的DLL文件导出信息被保存在导出导出就是记载着动态链接库的一些导出信息。...导出函数存储在PE文件的导出表里,导出的位置存放在PE文件头中的数据目录,与导出对应的项目是数据目录的首个IMAGE_DATA_DIRECTORY结构,从这个结构的VirtualAddress

    43810

    Hells Gate的一次尝试入门

    IMAGE_OPTIONAL_HEADER:File头基址 + File头大小便是扩展PE头的地址。 根据这个逻辑,我们可以在扩展头的DataDirectory,拿到导出的所在地址。...对导出函数进行遍历,我们可以通过: FunctionNameAddressArray 一个包含函数名称的数组 FunctionOrdinalAddressArray 充当函数寻址数组的索引 FunctionAddressArray...PDWORD pdwAddressOfNames = (PDWORD)((PBYTE)(ImageBase + ExportTable->AddressOfNames)); //导出函数名称序号...,在自己程序执行了NTDLL的导出函数而不是直接LoadLibrary然后GetProcAddress做IAT隐藏 3.2 代码实现 我们在进行操作时,需要定义一个与syscall相关联的数据结构:_...图片 取得导出后,我们需要循环遍历导出内的导出函数名称与地址,根据djb2算法加密函数名称拿到指定的导出函数 //利用djb2算法提前加密好dwhash,等待后续与后期导出函数名称进行对比查找指定函数

    1.1K20

    2.6 PE结构:导出详细解析

    导出(Export Table)是Windows可执行文件的一个结构,记录了可执行文件某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。...当PE文件执行时Windows装载器将文件装入内存并将导入登记的DLL文件一并装入,再根据DLL文件函数导出信息对可执行文件的导入(IAT)进行修正。...导出包含了三种信息: 函数名称:记录了可执行文件中导出函数名称,在其他程序调用时需要用到这个名称函数地址:记录了可执行文件中导出函数的地址,使用时需要调用该函数的地址。...函数序号:记录了每个导出函数的序号,可以通过序号直接调用函数导出函数的DLL文件导出信息被保存在导出导出就是记载着动态链接库的一些导出信息。...导出函数存储在PE文件的导出表里,导出的位置存放在PE文件头中的数据目录,与导出对应的项目是数据目录的首个IMAGE_DATA_DIRECTORY结构,从这个结构的VirtualAddress

    21120

    Wannacry深度解析:第一阶段tasksche

    写注册 提取Payload 将Bitcoin钱包地址写入c.wnry 将当前工作目录隐藏 将当前目录授权所有人完全访问权限 初始化系统调用 这里面隐藏工作目录,提权,以及初始化系统调用都没有什么好说的...一次是0, 2代指针当前位置是Buffer的末尾,0代指针的值是一个绝为位置。...AESKey加密的PE文件读取到内存,并用初始化后的AESKey进行解密,这个函数返回一个在内存PE文件,接下来就轮到PeBuilder上场了。...上面这个函数接受CPeBuilder以及一个Func Name作为参数,程序在PE的Export搜索名为FuncName的导出函数,并返回这个导出函数。 ? 这部分代码就是在搜索导出函数表。 ?...调用导出函数,攻击开始。 至此,tasksche悄无声息的将一个PE dll加载并运行,整个过程无法通过Proc monitor等软件发现。

    1.3K60

    PE知识复习之PE的导入

    PE知识复习之PE的导入 一丶简介   上一讲讲解了导出. 也就是一个PE文件给别人使用的时候.导出函数 函数的地址 函数名称 序号 等等.   ...一个进程是一组PE文件构成的. PE文件需要依赖那些模块.以及依赖这些模块的那些函数.这个就是导入需要做的. 确定PE依赖那个模块. 确定PE依赖的那个函数. 以及确定函数地址....高位两个字节,是函数导出导出索引. 后面就是以0结尾的函数名称了. 总结来说: 不管是INT还是 IAT. 主要看其高位值,高位为1,那么去掉高位,就是函数的序号....高位为0.指向一个结构.这个结构保存了函数导出序号.以及函数名称. 在IMAGE_IMPROT_BY_NAME 结构的 HINT 如果不是空,那么这个序号(索引) 就是导出函数地址的索引....指向函数名称.           函数名称             HINT 当前函数导出函数地址的索引             Name 当前函数名称.

    1.1K20

    DLL依赖查看神奇CFF Explorer

    PE(Portable Execute)文件被称为可移植的执行体,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,DLL)...,就是修改PE文件输入函数地址 2.不改变函数输入,修改函数最开始的内存数据,增加JMP语句跳转到自己的函数,执行完后再恢复内存数据....使用JMP语句的方法是比较灵活的,所以通过API CreateRemoteThread 可以把自己的DLL注入到另一个进程,然后再使用JMP方法来实现API的截获,这种技术的另一个用处就是隐藏进程,很多病毒木马也是利用这个技术来隐藏自己...这里就要介绍一个大名鼎鼎的工具:CFF Explorer,是Explorer Suite(http://www.ntcore.com/)的一个工具 用于PE文件的修改,同时也可以对原PE文件增加函数输入...,我们只要写好一个DLL文件,然后实现一个导出函数,就可以用这个工具对PE文件增加对自己的DLL的加载,下面这个操作就是让notepad.exe加载rand.dll的操作: ?

    3.7K40

    免杀基础之一文学废PE文件格式

    导出PE文件为其他应用程序提供自身的一些变量、函数以及类,将其导出给第三方程序使用的一张清单,里面包含了可以导出的元素。...结构如下: 从逻辑上来说,导出名称函数表与序号组成。函数表和序号必不可少,名称则是可选的。序号名称的作用是索引,找到真正需要的函数表,函数表中保存着被导出函数的地址信息。...导出地址(EAT) 序号 导出名称(ENT) 0x00010000(某函数地址) 0x0001 FunName_A 0x00025000(某函数地址) 0x0002 FunName_B 0x00050000...(某函数地址) 0x0003 FunName_C 这里写一个有导出函数的测试dll: 在loadPE打开,打开导出,可以看到有导出函数: 现在就是和导入一样,找导出到文件头的偏移,然后手写代码获取相关信息...(PDWORD)(RvaToOffset(pExport->AddressOfFunctions, buffer) + buffer); //导出名称 PDWORD pENt32 =

    1.4K20

    PE数据目录表解析

    导出PE文件为其他应用程序提供自身的一些变量、函数以及类,将其导出给第三方程序使用的一张清单,里面包含了可以导出的元素。...结构如下: 从逻辑上来说,导出名称函数表与序号组成。函数表和序号必不可少,名称则是可选的。序号名称的作用是索引,找到真正需要的函数表,函数表中保存着被导出函数的地址信息。...导出地址(EAT) 序号 导出名称(ENT) 0x00010000(某函数地址) 0x0001 FunName_A 0x00025000(某函数地址) 0x0002 FunName_B 0x00050000...(某函数地址) 0x0003 FunName_C 这里写一个有导出函数的测试dll: 在loadPE打开,打开导出,可以看到有导出函数: 现在就是和导入一样,找导出到文件头的偏移,然后手写代码获取相关信息...)buffer; //PE PIMAGE_NT_HEADERS pNt = (PIMAGE_NT_HEADERS)(pDos->e_lfanew + buffer); //定位数据目录导出

    1.7K20

    PE文件和COFF文件格式分析——导出

    以我电脑上desktmon.dll为例,我们看一下该文件该结构的布局 ?         我们再用一个图来描述一下PE导出在View dependencies显示的相关关系 ?        ...最后说一下,我们如何辨别这个字段保存的是函数的入口地址的RVA还是字符串呢?只要判断该偏移不在导出即可:指向的地址在节中就是字符串的RVA;在节外是函数入口的RVA。 导出名称。...你想,当我们调用GetProcAddress时,我们在导入名称中找到该名称对应的index,然后再返回导出函数地址该index的数据即可。...其实这类文件挺多,mfc40u.dll,见下图 ?         通过以上分析,我们可以得出,我们还是要一个能在导出函数地址导出函数名称建立纽带的结构体。...我们继续看上面那个例子,从我们DEF文件中看出,我们希望导出的4个函数的序号分别是2、4、8、6。我们看下PE文件的布局 ?

    55410

    【DB笔试面试436】Oracle如何导出存储过程、函数、包和触发器的定义语句?如何导出的结构?如何导出索引的创建语句?

    题目 Oracle如何导出存储过程、函数、包和触发器的定义语句?如何导出的结构?如何导出索引的创建语句?...答案 总体来说有两种方式来获取,第一,利用系统包DBMS_METADATA包的GET_DDL函数来获取,第二,利用exp或expdp来获取。...下面来看第一种方式,如何利用系统包DBMS_METADATA包的GET_DDL函数来获取对象的定义语句。...另外,使用imp工具的indexfile选项也可以把dmp文件和索引的创建语句导出而不导入任何对象,命令如下: imp userid/userid@service_name file=/tmp/exp_ddl_lhr...& 说明: 有关导出数据库存储过程、函数、包、触发器、和索引原DDL定义语句的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2152892

    5.3K10
    领券