//Bypass AntiDBG OEP.txt
data:
var hInstance
var codeseg
var vmseg
var ep
var oep
var temp
code:
gpa "VirtualFree","kernel32.dll" //取VirtualFree的API地址
bphws $RESULT,"x" //下VirtualFree的硬件断点
run
bphwc $RESULT
rtu
gmi eip,MODULEBASE //取当前EIP的模块基地址,实际就是取代码段地址base
mov hInstance,$RESULT
mov temp,$RESULT
add temp,3c //base+3c
mov temp,[temp] // [base+3c]
add temp,hInstance // base+[base+3c]
add temp,28 // (base+[base+3c])+28
mov temp,[temp] // [(base+[base+3c])+28]
add temp,hInstance // base+[(base+[base+3c])+28] 奥妙出来了
// 这里计算出来的就是原来EP处的CC断点
bc temp //去掉上面巧妙的计算出EP断点,这里得来的有点技巧,希望大家
//大家能学习,很多文章首先要求去掉EP的断点,而中断在系统断点
//而这个脚本巧妙的实现了这点.至于为什么是这个算法,大家可以
//去查阅一下资料,开卷有益.(温馨提示-加解密第二版268页)
mov ep,temp
gmemi eip,MEMORYBASE //取当前EIP的信息,也就是代码段的信息
mov codeseg,$RESULT
find $RESULT,#2ECC9D#
mov [$RESULT],#2ECC90# //这2句有点不明就里,希望各路大侠指正,我实验过程中,这
//两句始终没有起作用.
gpa "EnumWindows","user32.dll" //取EnumWindows的API地址
mov [$RESULT],#8BC09C85C09D0578563412C20800# //这里就是要改这个API了,如何改呢?如下
//(这里是原API)
//77D1CD97 > 8BFF mov edi, edi
//77D1CD99 55 push ebp
//77D1CD9A 8BEC mov ebp, esp
//77D1CD9C 33C0 xor eax, eax
//77D1CD9E 50 push eax
//77D1CD9F 50 push eax
//77D1CDA0 FF75 0C push dword ptr [ebp+C]
//
//(改成)
//77D1CD97 > 8BC0 mov eax, eax
//77D1CD99 9C pushfd
//77D1CD9A 85C0 test eax, eax
//77D1CD9C 9D popfd
//77D1CD9D 05 78563412 add eax, 12345678
//77D1CDA2 C2 0800 retn 8
//呵呵高手级别就是厉害,直接把这个API给整残废啦,没天理!
//照这个趋势,kernel32,user32会被被N多大侠替换,壳壳们
//这个冬天有点冷.
gpa "CreateThread","kernel32.dll"
find $RESULT,#FF7518#
mov [$RESULT],#6A0490# //同上
//7C81063F FF75 18 push dword ptr [ebp+18]
//被替换成了
//7C81063F 6A 04 push 4
//7C810641 90 nop
gpa "ZwCreateThread","ntdll.dll"
bp $RESULT //在ZwCreateThread处下CC断点,ANTI被一路扫过.
loop1:
run //其实,这个run有点不太好,会在过ANTI的时候,SEH给拦住
//如果改成ESTO,以下的都改成ESTO,那么就不用手工SHIFT+F9了
cmp eip,$RESUL
jne loop1
bc $RESULT //到达ZwCreateThread处,去掉断点
bp ep //下断点到EP处,呵呵,绕开了ANTI,前路一片光明
loop2:
run //可改ESTO
cmp eip,ep
jne loop2
bc ep //到达EP处,EXECryptor给扒的就差内裤了
mov temp,codeseg
sub temp,1 //原来codeseg楼上就是VM机!哈
gmemi temp,MEMORYBASE
mov vmseg,$RESULT
gmemi temp,MEMORYSIZE
bprm vmseg,$RESULT //下内存断点到虚拟机中
run //
bpmc
mov oep,eax //哈哈,从虚拟机中偷出了OEP,尽管可能是伪OEP
sti
bprm oep,1
loop3:
run
cmp eip,oep //猪八戒抢亲,不管三七二十一了。
jne loop3
bpmc
ret //到家,关门,放狗,成亲,熟米做成生饭。
我用了上面的代码 错误了
麻烦大牛帮忙看看 或者谁有脚本 我百度找不到
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课