X64下 FF 25 + 00 00 00 00 + 导出表函数地址小测试

在X64的情况下,JMP反汇编出来的 FF 25 后面加的是 00 00 00 00 和导出表函数地址

测试代码如下:

void JmpFunctionAddressOfExportTableInX64Using00()
{

    DWORD OldProtect;
    ULONG_PTR v1 = (ULONG_PTR)GetProcAddress(LoadLibrary(L"user32.dll"), "MessageBoxA");
    ULONG_PTR v2 = 0;

    printf("%p\r\n", v1);
    printf("%p\r\n", v2 = Sub_1());

    VirtualProtect((PVOID)v2, 0x1000, PAGE_EXECUTE_READWRITE, &OldProtect);
    memcpy((PVOID)((ULONG_PTR)v2 + 48), (PVOID)&v1, sizeof(ULONG_PTR));
    VirtualProtect((PVOID)v2, 0x1000, OldProtect, NULL);

    Sub_8InX64();
}

Sub_1和 Sub_8InX64同样是汇编

Sub_1 PROC

    lea rax, Sub_8InX64;
    inc rax
    mov ebx, [rax]

    lea rax, Sub_8InX64
    add rax, rbx
    add rax, 5
ret
Sub_1 ENDP

Sub_8InX64    PROC

    sub rsp,28H
    mov r9, 0
    mov r8, 0
    mov rdx, 0
    mov rcx, 0
    call Flag1
    add rsp,28H
    ret
Flag0 :

    db 0FFH
    db 25H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    db 00H
    Flag1:
jmp Flag0
Sub_8InX64 ENDP注:在这之前要调用下MessageBoxA函数。
时间: 2024-10-12 21:09:51

X64下 FF 25 + 00 00 00 00 + 导出表函数地址小测试的相关文章

X86下,FF 25+ 导入表函数地址小测试

在X86下,JMP反汇编出来的FF 25加的是导入表的地址 测试代码如下: void JmpFunctionAddressOfImportTableInWinXP_X86() { DWORD dwOld = 0; ULONG_PTR v2 = 0; void* v1 = NULL; GetFunctionByImport_X86(GetModuleHandle(NULL), "MessageBoxA"); v1 = lpAddress; printf("%p\r\n"

时间戳 判断在4个时间段 12:00-13:00;18:00-19:00;21:00-22:00 判断在那个时间段里

与上篇文章有些相同也有些学别,你们细细体会吧 程序如下: // var shijian = "12:00-13:00;18:00-19:00;21:00-22:00";//定义4个时间段 var tt = shijian.Split(new string[] { ";", ":" }, StringSplitOptions.RemoveEmptyEntries);//分割时间戳 foreach (var s in tt)//遍历tt在哪个时间段

2018-05-01T00:00:00.000+08:00转2018-05-01 00:00:00

/** * 2018-05-01T00:00:00.000+08:00转2018-05-01 00:00:00 * @param oldDateStr * @return * @throws ParseException */ public static String dealDateFormat(String oldDateStr) throws ParseException { if(oldDateStr.length()<=10){ return oldDateStr+" 23:59

[原创]MinHook测试与分析(x64下 E9,EB,CALL指令测试,且逆推测试微软热补丁)

依稀记得第一次接触Hook的概念是在周伟民先生的书中-><<多任务下的数据结构与算法>>,当时觉得Hook很奇妙,有机会要学习到,正好近段日子找来了MiniHook,就一起分享一下. 本篇文章是在x64下测试与分析jmp+offset类型的Hook,并且逆推测出热补丁的简单用法,MinHook它的中心就是覆盖重写并且可以复原.知道大概的思路后后让我们先来具体的实现MinHook再去做测试. 首先是堆的申请(申请PAGE_SIZE大小自动生长的堆),以下是实现与卸载 1 NTS

WIN10 X64下通过TLS实现反调试

目录(?)[-] TLS技术简介 1 TLS回调函数 2 TLS的数据结构 具体实现及原理 1 VS2015 X64 release下的demo 2 回调函数的具体实现 21 使用IsDebuggerPresent检测调试器 22 使调DebugPort检测调试器 实际测试 1 测试直接执行 2 测试用调试器加载 总 结 1 TLS技术简介 Thread Local Storage(TLS),是Windows为解决一个进程中多个线程同时访问全局变量而提供的机制.TLS可以简单地由操作系统代为完成

CentOS 5.5 x64下安装升级Python3.3

1.下载linux版本的Python3.3.5,以下是我共享的百度云盘的下载地址 http://pan.baidu.com/s/1kT3IHLH 2.解压: tar -zxvf Python-3.3.5.tgz 3.进入解压后的目录: cd Python-3.3.5 4.创建安装目录,这里我将其安装在/usr/local下 mkdir /usr/local/python3.3 5.编译python3.3 ./configure --prefix=/usr/local/python3.3 6.执行

x64系统的判断和x64下文件和注册表访问的重定向(举例了GetProcAddress后转成函数指针的用法)

判断一个32位应用程序是否运行在x64系统下,可以使用下面的代码: [cpp] view plain copy BOOL IsX64System() { BOOL bIsWow64 = FALSE; typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL); LPFN_ISWOW64PROCESS pfnIsWow64 = NULL; pfnIsWow64 = (LPFN_ISWOW64PROCESS)GetProcAddress( Ge

win x64下C++对象的内存布局的学习

这篇文章是在学习陈皓的一篇文章<C++对象的内存布局(上)>后,针对x64的下情况的学习笔记.他的文章的链接地址是:http://blog.csdn.net/haoel/article/details/3081328. 他的示例代码中有下列片段: 如果在vs2015社区版中以debug方式编译出x64版本的exe运行后会崩溃.经过调试发现在x64下地址是以unsigned long long表示的(如果测试发现,编译后台实际上会把unsigned long long 转换为unsigned _

VS2012在win7 64位机中x86和x64下基本类型的占用空间大小(转)

VS2012在win7 64位机中x86和x64下基本类型的占用空间大小 #include "stdafx.h" #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { int i = 0; i = sizeof(int); // x86:4 x64:4 i = sizeof(long); // x86:4 x64:4 i = sizeof(void*); // x86:4 x64:8 i = sizeof(s