筱虎哟
发表于 2023-4-16 00:01
boot 发表于 2023-4-15 23:30
如果E模块看到基址为00401000 -> 这是模块基址 base(一般OD的模块“E”界面里可以查到,比如易语言的e ...
@boot
boot
发表于 2023-4-16 00:10
筱虎哟 发表于 2023-4-15 23:58
但是它的模块基址每次打开也是不一样的
所以我一再强调,先计算 相对偏移 rva。不管基址如何变,相对偏移rva是永远不会改变的。
在你的图例中,对于Hook.dll
其模块基址base是1B060000
其绝对地址(绝对偏移)va是1B0D3180
则相对偏移是 rva = va - base = 1B0D3180 - 1B060000 = 73180
前面我已经说过,相对偏移rva永远不变。
举例,
比如你下一次打开OD的时候,查看模块E。得到新的基址,比如看到的是1C060000
加上相对偏移 1C060000 + 73180 = 1c0d3180
则ctrl+g 跟随1c0d3180 ,这时就是当前的破解地址了。
boot
发表于 2023-4-16 00:12
boot 发表于 2023-4-16 00:10
所以我一再强调,先计算 相对偏移 rva。不管基址如何变,相对偏移rva是永远不会改变的。
在你的图例中, ...
@筱虎哟 详看这个回复。
筱虎哟
发表于 2023-4-16 00:15
boot 发表于 2023-4-16 00:12
@筱虎哟 详看这个回复。
我的意思是补丁里面的实时基址填哪个?补丁不会自动获取模块基址再加上你的偏移去找吧?{:5_187:}
boot
发表于 2023-4-16 00:18
筱虎哟 发表于 2023-4-15 23:58
但是它的模块基址每次打开也是不一样的
这个xh补丁工具,“实时基址”和“内存地址”按照当前OD里所看到的数据,如实填写。
实时基址 = 1B060000
内存地址 = 1B0D3180
筱虎哟
发表于 2023-4-16 00:32
boot 发表于 2023-4-16 00:18
这个xh补丁工具,“实时基址”和“内存地址”按照当前OD里所看到的数据,如实填写。
实时基址 = 1B06000 ...
这样下次运行dll的话也能实现补丁吗?
boot
发表于 2023-4-16 00:42
筱虎哟 发表于 2023-4-16 00:32
这样下次运行dll的话也能实现补丁吗?
可以。
但这个Hook.dll具体是那个exe调用的? 你运行补丁,启动exe后。附加exe,OD里核实Hook.dll模块是否被修改。
我记得baymax工具也可以补丁动态基址。或者你自己编译一份劫持补丁。
281028829
发表于 2023-4-16 13:08
用dll劫持吧,取模块基址+偏移,再补丁数据就好
筱虎哟
发表于 2023-4-16 17:29
281028829 发表于 2023-4-16 13:08
用dll劫持吧,取模块基址+偏移,再补丁数据就好
易语言吗?有源码吗?我不知道怎么取模块名称{:5_117:}
boot
发表于 2023-4-16 17:37
筱虎哟 发表于 2023-4-16 17:29
易语言吗?有源码吗?我不知道怎么取模块名称
易语言没有,只有c++的。
Edit:看错回复了...