[/size]
[size=14px]
使用到的脚本 [/size][size=14px]
//start
msg "upx (3.91) unpacker" 这明白弹框信息
msg "make sure you're at the entry point of the program before you continue"这明白弹框信息
pause
//clear breakpoints
bc //清全部cc断点
bphwc //清全部硬件断点
//script start
step //单步
bphws csp,r //为csp设一个硬件访问断点,但csp? 有这个寄存器吗 ?
erun 无视异常运行
bphwc 清全部硬件断点
//find oep jump 查找oep
find cip,"80E9" // 在内存页中 找代码码,cip又迷糊了,有这个寄存器???
cmp $result,0 //不太理解,看了帮助,也就知道 无非比较 两变量,细节糊涂。
je error
//go to OEP
bp $result+1
erun
bc
sti
//finish script
ret
error:
msg "didn't find oep jump"
ret
// Author: Thomas Thelen
// Contact: https://github.com/ThomasThelen
// Comment: Takes you to the OEP of files packed with UPX from versions 2.02 to 2.03
// Date: 8/12/2015
// Instructions: Open the file in x64dbg and run the script.
//Begin Script
run
bc
bphwc
//Find the OEP
find CIP, E91B33FFFF// Signature of OEP jump 我不明白CIP是啥?无论是32位的调试器还是64位的了,哪有去?
我也试过 findallmem esp,"E9 98 72 FF FF"这样搜索一页变多页就只有一个结果了。但是问题来,如何把这个的结果传给$result ?
网上x32dbg中仅有那么几个少的可怜的破脚本,还没有一个入门的详解。
je error // Error otherwise
bp $result // Set a breakpoint on the jump 这个是设一个断点 (加上那个结果的变量) 怎么加,不明白。 我找了个upx3.95的做试验,卡住了。
run
st
sti // Take jump to OEP
bc // Clear Breakpoints
ret
error:
msg "Could not find the OEP."
ret
// Author: Thomas Thelen
// Contact: https://github.com/ThomasThelen
// Comment: Takes you to the OEP of files packed with UPX from versions 3.06 to 3.09
// Date: 8/12/2015
// Instructions: Open the file in x64dbg and run the script.
//Begin Script
run
bc
bphwc
//Find the OEP
find CIP, E9BA31FFFF// Signature of OEP jump====》还是上面的那些问题。
cmp $result, 0 // Check for success
je error // Error otherwise
bp $result // Set a breakpoint on the jump
run
st
sti // Take jump to OEP
bc // Clear Breakpoints
ret