为了把焦点移到某个指定控件(焦点速递!常见几种软件脱壳方法)
大家好,综合小编来为大家讲解下为了把焦点移到某个指定控件,焦点速递!常见几种软件脱壳方法这个很多人还不知道,现在让我们一起来看看吧!
Shell出于程序作者希望压缩和注册程序资源的目的,分为压缩shell和加密shell(强shell)。
upx ' ' aspcak ' ' Telock ' ' Pelite ' ' NSPack ' '
犰狳' ' aspire'' acprotect'' EPE(国王)' ' SVKP '
[资料图]
顾名思义,压缩外壳只是压缩资源来减小程序的大小,加密外壳是加密保护的程序输入表。
当然加密壳的防护能力强多了!
第二,对工具的理解
Ollydbg Ring3外壳级动态编译工具,
PEid,
ImportREC、
洛德普,
0级调试工具
三、常见的手工脱壳方法
基本原理
1.Pushed表示程序的入口点。
2.POPAD (pop-up/pop-up)代表程序的退出点,与PUSHAD的思路相对应。一般这种OEP就在附近。
3.OEP:程序的切入点,软件外壳就是隐藏OEP(或者用假的OEP/FOEP),只要我们找到程序的真实OEP,就可以马上外壳。
方法1:一步跟踪法
1.用OD加载,点击“不要分析代码!”
2.单步跟踪F8实现向下跳跃。也就是说,跳起来不会让它发生!(途经F4)
3.当程序跳回(包括循环)时,我们在下一个代码处按F4(或者右键单击代码并选择断点——运行到所选的那个)。
4.绿线表示跳跃未实现,忽略不计,红线表示跳跃已实现!
5.如果刚加载完程序,附近就有电话,我们就跟着F7,否则程序很容易跑偏,所以很快就能到达程序的OEP。
6.在跟踪的时候,如果你运行到一个调用程序,你将通过在这个调用中按F7进入它。
7.一般都是大跳(跨度大)的,比如jmp XXXXXX或者JE XXXXXX,或者有RETN的马上就到节目的OEP了。
近呼F7远呼F8
Btw:当一些炮弹无法追踪到时,我们可以在附近找一个未实现的大跳跃,右键——“跟随”,然后F2分解,Shift F9停在“跟随”位置,然后取消断点,继续F8单步追踪。总的来说可以轻松达到OEP!
方法二:ESP法律方法
ESP定理被炮轰(ESP在OD的寄存器里,我们只需要在命令行访问ESP的硬件断点,就会突然来到程序的OEP!)
1.首先单击F8,观察OD右上角的寄存器中是否弹出ESP(变为红色)。(这只是在一般情况下,或者说,我们选择的ESP值是关键句后的第一个ESP值。)
2.在命令行:dd XXXXXXXX(引用当前代码中的ESP地址,或者hr XXXXXXXX),然后回车!
3.选择断地址,断点-硬件访问-字断点。
4.按F9运行程序,然后删除硬件访问断点,直接跳转。按F8到达程序OEP。
方法3:两次内存镜像方法
1:用OD打开软件!
2:点击选项——调试选项——异常,忽略里面所有的!CTRL F2使程序过载!
3.按ALT M打开内存映像并找到第一个。程序的rsrc资源。按F2到断点,然后按SHIFT F9运行到断点,然后按ALT M打开内存映像并找到。代码在第一个之上。rsrc。程序的(即00401000)。按F2断开点!然后按SHIFT F9(没有异常就按F9)直接进入程序OEP!
方法4:一步达到OEP
1.开始按Ctrl F,输入:popad(只适合少数shell,包括UPX和ASPACK shells),然后按F2和F9运行到这里。
2.来大跳,点击F8,到达OEP!
方法五:最后一种异常方法
1:用OD打开软件。
2:点击选项——调试选项——异常,去掉里面所有的!CTRL F2重载程序
3.一开始,程序是一个跳转。这里我们按SHIFT F9直到程序运行,记下从按SHIFT F9到程序运行m的次数!
4: Ctrl F2重新加载程序,按SHIFT F9(这次按的次数是程序运行的次数m-1)。
5:在OD的右下角,我们看到一个‘SE句柄’,然后我们按CTRL G,在SE句柄前输入地址!
6:按F2断点!然后按SHIFT F9到断点!
7:去掉断点,按F8慢慢下去!
8:达到节目的OEP!
方法六:模拟跟踪法
1.先试运行,按照程序看看是否有SEH隐藏桩等等。
2: alt m打开内存镜像并查找(包括=SFX,imports,relocations)。
内存镜像,项目30
地址=0054B000
Size=00002000 (8192。)
所有者=支票00400000
Section=。阿斯帕克
Include=SFX、导入、重定位。
Type=Imag 01001002
Access=R
初始访问=RWE
3:地址是0054B000。如果我们在命令行输入tc eip0054B000,并按回车键,我们正在跟踪ing。
Btw:在使用这种方法的时候,你要了解在什么情况下可以使用。
软件破解通用汇编指令
Cmp a,b //比较a和b
Mov a,b //把B的值发给A的值,这样A=B。
Ret //返回主程序
Nop //no effect,是no operation的缩写,意思是“什么都不做”(机器码90)
(ultraedit打开edit exe文件并看到90条等效汇编语句的nop)
Call //调用子程序,以ret结束。
Je或jz //等于跳转(机器码为74或84)。
如果jne或jnz //不相等,则跳转(机器代码为75或85)
Jmp //无条件跳转(机器码是EB)
Jb //小于则跳转。
Ja //大于则跳转。
Jg //大于就跳。
Jge //大于或等于时跳转
Jl //小于时跳转
从堆栈中弹出xxx //xxx
推送xxx //xxx堆栈
jmp无条件跳转是指飞到哪里,有的杂志上直飞光明顶是指~光明顶一般是指爆破地址根据条件跳转的指令:
JE;等于跳
JNE;不等于跳
JZ;如果为0,则跳转。
JNZ如果不为0,则跳转。
JS;如果是负数,就跳。
JNS;不是负数就跳。
JC;进位跳跃。
JNC无进位跳跃
JO;溢出跳转。
JNO;无溢出跳转
JA;无符号大于号跳转
JNA;如果无符号不大于,则跳过
JAE;无符号大于或等于跳转
JNAE无符号不大于或等于跳转
JG;如果符号大于,则跳转。
JNG;如果符号不大于,则跳转。
JGE;如果有符号大于或等于,则跳转。
JNGE如果有符号不大于或等于,则跳转。
JB;无符号小于跳转
JNB;如果无符号不小于,则跳过
JBE;无符号小于或等于跳转
JNBE无符号不小于或等于跳转
JL;如果符号小于,则跳转
JNL;如果符号不小于,则跳转
JLE;如果有符号小于或等于,则跳转
JNLE;如果有符号不小于或等于,则跳转。
JP;奇偶校验位跳跃。
JNP;清除奇偶校验位并跳转。
JPE;如果奇偶校验位相等,则跳转。
JPO;如果奇偶校验位不相等,则跳转
我们实际上只用到了jmp,je,jne,jz,jnz,所以只需要知道这五个跳转的条件,知道其他的就好了。
让我们从传递和比较指令开始:
转账说明:
mov
比较说明:
金属波纹管
示例:
mov eax,1
mov ecx,eax
Cmpcx,eax //这是标志位。
我们知道eax和ecx都是1。
这符合je的跳跃条件
本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。