1、定义
基地址重定位:当进行多个dll动态库合起来编译成一个exe文件的时候,每个dll和exe都有默认的基地址,当加载器加载exe的时候,其实的某个dll会发生基地址改变,因此当加载完后,之前dll里面的指令和加载之后的不一样,导致映像文件里的机器代码指令(包含的硬编码地址)与加载后的不一样,此时需要通过rebase进行基地址重定位。
2、常出现的地方&常见的打印错误方式
常出现的地址:
(1)git更新代码的时候
(2)mingw进行编译代码的时候
(3)其他进行代码操作的行为等
常见的打印错误方式:
xxxxxxxx....VirtualAlloc pointer is null, Win32 error 487
xxxxxxxx....Couldn‘t reserve space for cygwin‘s heap, Win32 error 0
等等
扫描二维码关注公众号,回复:
9973261 查看本文章
3、解决方法
基本都是由于编辑器或者工具bin下面的msys-1.0.dll这个库的基地址导致,因此需要重定位这个基地址。
网上可以下载rebase工具或者自己安装了对应出错问题对应的编辑器或者工具上面都会自带rebase.exe,都可以在相应的目录下面找到。
eg:
error 0解决方法:
rebase.exe -b 0 0x50000000 xxxxxx\bin\msys-1.0.dll
error 487解决方法:
rebase.exe -b 0x760000000 xxxxxxx\bin\msys-1.0.dll