枚举导出的函数

//枚举导出的函数
//
#include <idc.idc>
static main()
{
	auto entrypoints,i,ord,addr,name,purged,file,fd;
	file = AskFile(1,"*.idt","Select IDT save file");	//打开文件对话框
	fd = fopen(file,"w");	//以写的方式打开
	entrypoints = GetEntryPointQty();	//返回共享库中导出的符号数量
	fprintf(fd,"ALIGNMENT 4\n");
	fprintf(fd,"0 Name = %s\n",GetInputFile());	//返回加载到IDA中的文件名称
	Warning("Name = %s\n",GetInputFile());	//返回加载到IDA中的文件名称
	for(i = 0 ; i< entrypoints; i++)
	{
		ord = GetEntryOrdinal(i);	//返回入口点(导出库)索引,如果没有返回0
		if(ord == 0) continue;
		addr = GetEntryPoint(ord);	//返回导出函数关联的地址
		if(ord == addr)
		{
			continue;
		}
		name = Name(addr);	//导出函数名字
		fprintf(fd,"%d Name = %s",ord,name);
		purged = GetFunctionAttr(addr,FUNCATTR_ARGSIZE);	//从堆栈中清除的字节数量
		if(purged > 0)
		{
			fprintf(fd," Pascal=%d",purged);
		}

		fprintf(fd,"\n");
	}
}

  

枚举导出的函数

时间: 2024-07-31 10:26:00

枚举导出的函数的相关文章

Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)

Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里面介绍了Dependency Walker这个小工具.但是实际操作起来并不理想,因为Dependency Walker将exe文件依赖的所有动态库以及动态库所依赖的动态库都列出来了.看得你一脸懵逼: 你很难分清楚:倒底哪些DLL是需要打包的,哪些DLL是系统自带的.而作为打包过程中的一个小步骤,我根

动态链接库中导出模板函数

动态链接库中导出模板函数 C++ 支持函数模板,利用函数模板,可以简化我们的程序代码.我在自己的代码中也经常用到函数模板,但是以前一直以为函数模板是要放到头文件中的,否则调用模板函数时,编译器会找不到函数模板的定义.今天闲暇,又翻了翻 C++ Primer,发现我以前的理解是有问题的.模板函数也可以像普通函数那样,将声明放在头文件中,定义放在.cpp 中.这时又想到另一个问题,DLL 中是否可以导出模板函数呢.如果可以的话,就可以将函数的实现代码真正隐藏起来了.经过一番实验,发现是可以的,但是有

导出的函数无法导入

#ifdef GLOBE_20150806 #define GLOBE_EXPIMP __declspec(dllexport) #else #define GLOBE_EXPIMP __declspec(dllimport) #endif GLOBE_EXPIMP extern std::string WideCharToMultiChar(std::wstring str);//宽字符转多字符 banlv error LNK2019: 无法解析的外部符号 "__declspec(dllimp

c# 二进制或算法实现枚举的HasFlag函数

from:http://www.cnblogs.com/icyJ/archive/2013/02/20/HasFlag.html 在权限的管理中,常常会出现一个权限包含的现象.例如,有三种基本权限:职员A.职员B.职员C.在此基础上,有经理权限,它包括A和B两种权限:还有老板权限,包含A/B/C三种权限. 在代码中,我们可以用枚举来管理这些权限. [Flags]public enum EnumHasFlag{    A = 1 << 0,    B = 1 << 1,    C =

明明导出的函数,无法导入

导出时是:[email protected]@[email protected] 导入时是:[email protected]@[email protected]_WU G和_W的区别,为了研究各字母的含义.做了如下实验: void fun()=> [email protected]@YAXXZ void fun(int)=> [email protected]@[email protected] void fun(int a,int b)=> [email protected]@[em

python之枚举--内置函数-enumerate()

python之枚举 内置函数 enumearate() enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerate多用于在for循环中得到计数 enumerate()使用 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写: list=["这","是","一个

C++ 纯虚函数接口,标准 C 导出 DLL 函数的用法

CMakeLists.txt project(virtual) # 创建工程 virtual add_library(virtual SHARED virtual.cpp) # 创建动态连接库 libvirtual.dll add_executable(main main.cpp) # 创建运行程序 main.exe target_link_libraries(main virtual) # 让 main.exe 连接 libvirtual.dll virtual.h #pragma once

PCB SQL SERVER 枚举分割函数(枚举值分解函数)

在SQL SERVER字段采用枚举值作为字段后,如果直接查看字段的值是很难判断这个字段的带表什么意思, 在这里介绍如用函数的方法实现枚举值分割,只有分割后才很方便知道枚举值的意思. 一.问题说明 1.如下为:单个枚举值清单如下 十进制带表枚举的值,每个值带表对应的工厂 单枚举: 1带表P1工厂,2带表P2工厂     ----通过对应,一眼看到对应关系 叠加枚举: 3带表P1与P2工厂                     ----简单叠加枚举,难度增大了就是不容易找到对应关系 难度再加大一点

frida so hook 未导出的函数

先分析encode. 发现是一个导出函数.ida找它,如图所示.查看引用,找到调用它的函数.获取它在文件中的偏移,如图所示.hook 地址时记得加1. # -*- coding: UTF-8 -*- import frida, sys jsCode = """ Java.perform(function(){ var soAddr = Module.findBaseAddress("libhello.so"); send('soAddr: ' + soAd