摘要:
PE32+ 是 Windows OS 使用的可执行文件格式. 64位 Windows OS 中进程的虚拟内存为16TB,其中低位的8TB供用户模式使用.高位的8TB供内核模式使用. IMAGE_NT_HEADERS IMAGE_FILE_HEADER x86 PE32 固定为 014C. x64 P 阅读全文
摘要:
64位系统中内存地址为64为,因此含有绝对地址的指令大小比原来增加4个字节. 64位可以表示的数为 264 = 16EB .考虑到实际性能,减少内存管理的开销.实际没用到这么多. 通用寄存器 通用寄存器大小扩展到64位,数量也增加到18个( 新增 R8~R15 寄存器 ).同时,64位本地模式不使用 阅读全文
摘要:
Intel 64 一般用于高性能服务器,平常很少见到. 所以32位源码移植到64位系统时,只需要转换一下指针的类型就可以了. WOW64: 两个文件夹中的 DLL 文件 的名字都一样,大小不同. 即32位程序返回的文件夹名会被修改成64位的文件夹名,但是文件内容依然是32位的. 并不是直接将上述的文 阅读全文
摘要:
Win 7 中 Process explorer 中 IE 浏览器所加载的 DLL 文件: 如何查看库文件的导出函数: 下载 VS 后直接在搜索栏输入 VS (第一个和第三个都可以),打开命令窗口,输入 命令 " dumpbin /exports 库文件绝对路径 " 就可以看到函数. 若后面再加上" 阅读全文
摘要:
OllyDbg 是有 Oleh Yuschuk 编写的一款具有可视化界面的用户模式调试器.可以在各种版本的 Windows 上运行,但在 NT 架构上是最好的. plugin 目录中存放插件,直接将插件放里面,OD即可检测到. Debug -> Select Import Librariers ,可 阅读全文
摘要:
前面的方法会频繁的进行脱钩和挂钩操作,并且在多线程环境中容易导致代码错误.因此使用 "热补丁" 技术就很必要了. 热补丁(Hot Patch/Fix ) 又称为7字节代码修改技术. 可以看到,前面七个字节并无实际意义.微软使用这种方法就是为了方便在不关机的情况下临时修改库文件,重启时修改的目标库文件 阅读全文
摘要:
全局钩取 API : ①Kernel32.CreatProcess() ,可以用来创建新进程,其它启动运行进程的 API ( WinExec() , ShellExecute() , system() ) 在其内部也是调用此 API . explorer.exe是 Windows 程序管理器或者文件 阅读全文
摘要:
x86系列的CPU采用 Little-ending 字节序,而网络协议采用的是 Big-ending. 用于16位 Windwos 的API称为 Win16 , 32/64位 的 API 称为 Win32 . Windows 运转的核心是动态链接. ①kernel32.dll 主要负责操作系统核心功 阅读全文
摘要:
隐藏进程(Stealth Process)在代码逆向分析领域中的专业术语为RootKit.它是指通过修改(hooking)系统内核来隐藏进程、文件、注册表等的一项技术. IAT钩取是通过修改IAT值来实现,而API代码修改则是通过将API代码的前五个字节修改为JMP xxxxxxx 指令来钩取API 阅读全文
摘要:
需要明确自己要修改的功能对应的API函数,这个需要经验积累. IAT钩取通过修改IAT中保存的API地址来钩取某个API. 大致流程如下: 1. 通过InjectDll 将自己写的DLL文件注入目标进程. 2. 在自己写的Dll Main函数中获取本进程中的 SetWindowTextW 的函数地址 阅读全文