首页
社区
课程
招聘
DLL修改
发表于: 2013-7-31 03:44 5313

DLL修改

2013-7-31 03:44
5313
我知道我标题党了,先别急着喷啊,等我把话说完。
我是菜鸟,只知道DLL文件是函数接口啥的,但是里面的函数及参数以及文件名可以改么?要如何改?反汇编?或者有什么工具?如果是system32下的DLL可以改么?要不要什么权限?PE头文件是啥?该下载啥资料来学?问太多了怕你们不愿回答,就先问这么多吧。
如果你也有过和我这样的疑问,我想,你会理解的。。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
占楼备用,楼主是黑人.结贴谢谢!
2013-7-31 03:49
0
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
只知道DLL文件是函数接口啥的,但是里面的函数及参数以及文件名可以改么?
只要你有足够强大的汇编和反汇编能力,没有什么是不可能的..

要如何改?反汇编?或者有什么工具?
...你学习好了基础知识就知道怎么改,,工具无限制..你熟手就行.

如果是system32下的DLL可以改么?
建议你水平提高了再去研究这个问题...

要不要什么权限?
只能回答你基本上ring0就是天堂.

PE头文件是啥?该下载啥资料来学?
《PE结构详解》

总结,楼主问的问题行为和水平上来判断(恕我愚昧的感觉)像是向黑产进发的初学者...

循规渐进啊!
解决你目前及以后可能遇到的问题所需要学习的知识太多,面太广了..
简要概括:
汇编阅读能力
反汇编调试能力
数据结构
PE结构
系统原理
编程能力
2013-7-31 04:01
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我来简单说一下PE头吧,用C32ASM(16进制)打开一个EXE或者DLL,在菜单里(哪一个菜单忘了)->PE信息,可以查看一些内容,贴一下相关结构:
1.MZ头,首先看到的一堆HEX
typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
    WORD   e_magic;                     // Magic number(="MZ")
    WORD   e_cblp;                      // Bytes on last page of file
    WORD   e_cp;                        // Pages in file
    WORD   e_crlc;                      // Relocations
    WORD   e_cparhdr;                   // Size of header in paragraphs
    WORD   e_minalloc;                  // Minimum extra paragraphs needed
    WORD   e_maxalloc;                  // Maximum extra paragraphs needed
    WORD   e_ss;                        // Initial (relative) SS value
    WORD   e_sp;                        // Initial SP value
    WORD   e_csum;                      // Checksum
    WORD   e_ip;                        // Initial IP value
    WORD   e_cs;                        // Initial (relative) CS value
    WORD   e_lfarlc;                    // File address of relocation table
    WORD   e_ovno;                      // Overlay number
    WORD   e_res[4];                    // Reserved words
    WORD   e_oemid;                     // OEM identifier (for e_oeminfo)
    WORD   e_oeminfo;                   // OEM information; e_oemid specific
    WORD   e_res2[10];                  // Reserved words
    LONG   e_lfanew;                    // File address of new exe header(这个非常重要)
  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

2.PE头,紧跟着MZ头
//PE头成员就三个,但包含另外两个结构
typedef struct _IMAGE_NT_HEADERS {
    ULONG Signature;//="PE"
    IMAGE_FILE_HEADER FileHeader;
    IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
//文件头
typedef struct _IMAGE_FILE_HEADER {
    USHORT  Machine;
    USHORT  NumberOfSections;//区段数量
    ULONG   TimeDateStamp;
    ULONG   PointerToSymbolTable;
    ULONG   NumberOfSymbols;
    USHORT  SizeOfOptionalHeader;//头部总大小,也就是区段节表偏移
    USHORT  Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
//可选头(其实一点都不可选)
typedef struct _IMAGE_OPTIONAL_HEADER {
    //
    // Standard fields.
    //

    USHORT  Magic;
    UCHAR   MajorLinkerVersion;
    UCHAR   MinorLinkerVersion;
    ULONG   SizeOfCode;
    ULONG   SizeOfInitializedData;
    ULONG   SizeOfUninitializedData;
    ULONG   AddressOfEntryPoint;//入口地址
    ULONG   BaseOfCode;
    ULONG   BaseOfData;

    //
    // NT additional fields.
    //

    ULONG   ImageBase;//镜像基址
    ULONG   SectionAlignment;
    ULONG   FileAlignment;
    USHORT  MajorOperatingSystemVersion;
    USHORT  MinorOperatingSystemVersion;
    USHORT  MajorImageVersion;
    USHORT  MinorImageVersion;
    USHORT  MajorSubsystemVersion;
    USHORT  MinorSubsystemVersion;
    ULONG   Win32VersionValue;
    ULONG   SizeOfImage;//镜像大小
    ULONG   SizeOfHeaders;
    ULONG   CheckSum;
    USHORT  Subsystem;
    USHORT  DllCharacteristics;
    ULONG   SizeOfStackReserve;
    ULONG   SizeOfStackCommit;
    ULONG   SizeOfHeapReserve;
    ULONG   SizeOfHeapCommit;
    ULONG   LoaderFlags;
    ULONG   NumberOfRvaAndSizes;
    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];//输入表,输出表,重定位等信息都在这里
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;

关于PE格式的学习,你要对内存数据的排列有所了解,比对结构和数据会更好的理解。
还有OFFSET、VA、RVA等概念。
2013-7-31 06:29
0
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Sid ??147****38 ?? 奇迹般的看到你复活冒泡!小K读研了...你呢?
2013-7-31 12:04
0
雪    币: 11
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
建议学习一下反编译原理。
2013-8-2 16:47
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个提问的语气少说也有小学二年级了吧?
2013-8-2 20:29
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
动态链接库:链接库的函数接口都可以自己定义的,如果有自己编写生成过dll动态链接库的话,很简单就能理解里面的函数接口的,这里我建议去看下Win32环境下32位汇编语言程序设计这本书里面的第11章,里面有详细例子和说明。罗老师书中例子清楚明了,也很容易理解。
反汇编:指将一段汇编代码翻译成C语言代码然后去进行相关研究。这里我也可以介绍一本书 --- 谭文老师的天书夜读就是讲这方面的入门知识的,可以去学习下。
至于说System32.dll里面的文件能不能修改,这个我还没怎么去研究过,但是凭我自己现在的理解,应该是不能修改,如果有源代码的话,修改下源代码然后生成dll文件的话那另当一回事。我知道lib文件可以用来编译使用,dll连编译的资格都还没有轮到!只能在运行期使用。
PE:关于这方面的知识可以学下Windows PE这本书。里面有详细的介绍。
至于学习过程和资料查找过程,我想还是自己去体验吧!
希望能帮到你忙!
2013-8-9 20:06
0
游客
登录 | 注册 方可回帖
返回
//