> 文章列表 > 为了把焦点移到某个指定控件(焦点速递!常见几种软件脱壳方法)

为了把焦点移到某个指定控件(焦点速递!常见几种软件脱壳方法)

为了把焦点移到某个指定控件(焦点速递!常见几种软件脱壳方法)

大家好,综合小编来为大家讲解下为了把焦点移到某个指定控件,焦点速递!常见几种软件脱壳方法这个很多人还不知道,现在让我们一起来看看吧!

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的跳跃条件

本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。