本帖最后由 冥界3大法王 于 2018-9-3 07:26 编辑
假设已知VA是: 0040100E
我想瞬间定位到WinHEX中的这个地方,楼下的你会怎么做?
请先思考,并说出几种方法来考考自己的基本功是否达标?
1. VA 、 RVA 、 文件偏移 的转换是否 熟练 ?
2. 只有熟练做到的,才可能会脱壳,懂得PE知识
3. 我们可以使用 https://bbs.pediy.com/attach-download-68459.htm 这个插件,但是!Win10中运行,你会发现,点击毫无反应
(内有源码)
第二种方法是 使用上图中的 那个 转换工具 这样就省去手工计算;但是你也得打开软件,粘入地址,粘回结果,打开WinHEX,ALT+G。。。
这样,我们的OD和WinHEX ,对比参考 和 对比修改起来并不十分方便~~
VA 和 RVA的计算,我们只要和基址相加或相减即可马上得到
但是! (节偏移:RVk 这个就得用工具查询所在区块,就这步最恶心) 或者 自己编程 或 改代码实现
第三种 我们利用机器码+ 16进制编辑器搜索 ,这种最为简单:
比如:OD中,我们选中几行后SHIFT+C 得到:8B 00 E8 80 AE FF FF 8B 0D 64 81 45 00 A1 74 80 45 00 8B 00 8B 15 60 65 45 00 E8 80 AE FF FF
这样的搜索字符串,WinHEX并不能直接接收,得干掉空格
[C] 纯文本查看 复制代码
;OD中shift+C,得到机器码传入剪贴板
StringReplace, 去空格后的字符串, clipboard, %A_Space%, , All ;这一步是去空格操作
clipboard = %去空格后的字符串%
来吧:
IfWinExist, ahk_class WHXMDI0
{
WinActivate
Sleep, 500
PostMessage,0x111,51,0,,ahk_class WHXMDI0 ;打开【搜索16进制代码】窗口
Sleep, 500
Send, ^v
;ControlSetText , Edit1, %clipboard%, 查找16进制数值 ;修改编辑框内容以便输入
ControlClick, Button7, 查找16进制数值
ExitApp
}
else
{
MsgBox, 262160, 不运行WinHEX, 耍我么`n趁早滚蛋~~?
InputBox, 变量名, 请输入WinHEX路径
Run,%变量名%, , UseErrorLevel
if UseErrorLevel <> 0
{
Run, D:\破解相关\修改_调试_监控\修改查看类\WinHEX18.7传说最后的稳定版\WinHex自制汉化修正版.exe
gosub, 来吧
ExitApp
}
}
这样机器码就马上过来搜索了
我们再从WinHEX 中的文件偏移 ,转换 回来 定位VA 那也只是1秒钟的事 。 就是这么简单,楼下你掌握了吗?
最后我们再把上面的AHK代码编译成EXE 并利用OllyMoreMenu_cn.dll 加进去
这样点下菜单也就完活了。
热键 :
shift +x
shift + c
shift+V
ctrl+X
看完操作动画,是不是很爽呢? 这就是编程的魅力~~ |