您现在的位置是:首页 > 互联网 > 正文

脱壳软件怎么用(常见几种软件脱壳方法)

发布时间:2022-07-08 13:18:29编辑:来源:

大家好,小太来为大家解答以上问题。脱壳软件怎么用,常见几种软件脱壳方法这个很多人还不知道,现在让我们一起来看看吧!

一、概论

出于程序作者希望压缩和注册程序资源的目的,shell分为压缩shell和加密shell(强shell)。

'upx''aspcak''Telock''Pelite''NSPack(北斗)'.

犰狳''作为保护''Acrotect''EPE(国王)''SVKP'.

顾名思义,压缩外壳只是压缩资源来减少程序的体积,加密外壳就是程序输入表等等进行加密保护。

当然加密壳保护性强多了!

一、二、工具的认识

OllyDBGring3外壳级动态编译工具,

PEid,

ImportREC、

洛德普,

软许可0级调试工具

二、三、常见手动脱壳方法

三、预备知识

1.Pushhad(push/push)代表程序的入口点,

2.POPAD代表程序的出口点,与PUSHAD的想法相对应。一般这种OEP就在附近。

3.OEP:程序的入口点。当软件被加壳时,它会隐藏OEP(或者使用一个假的OEP/FOEP)。只要找到程序真正的OEP,就可以马上脱壳。

四、方法一:单步跟踪法

1.用OD加载,点击“不分析代码!”

2.一步跟踪F8向下,实现向下跳跃。也就是说,跳起来不会让它发生!(通过F4)

3.当程序跳回(包括循环)时,我们在下一个代码处按F4(或者右键单击代码并选择断点3354以运行到所选的那个)

4.绿线表示跳跃未实现,忽略不计,红线表示跳跃已实现!

5.如果程序刚加载完,附近有CALLone,我们就按F7跟着进去,否则程序就容易飞起来,这样就能很快到达程序的OEP。

6.跟踪时,如果运行到某个调用程序,在这个调用中按F7键进入。

7.一般都是大跳(大跨度),比如jmpXXXXXX或者JEXXXXXX或者有RETN的一般都会很快到了节目的OEP。

近呼F7,远呼F8

Btw:有些炮弹追踪不到的时候,可以找一个附近没有实现的大跳跃。右键-“跟随”,F2往下,ShiftF9停在“跟随”位置,然后取消断点,继续F8单步跟踪。总的来说可以轻松达到OEP!

五、方法二:ESP定律法

ESP的定理在壳外(ESP在OD的寄存器里。只要在命令行访问ESP硬件的断点,马上就来到程序的OEP!)

1.点击开头的F8,观察OD右上角的寄存器中是否弹出ESP(变红)。(这只是一般情况,更具体的说,我们选择的ESP值是关键句后的第一个ESP值)

2.在命令行:DDXXXXXX(指当前代码中的ESP地址,或者HRXXXXXX),回车!

3.选择下一个断点的地址,断点-硬件访问-字断点。

4.按F9运行程序,然后删除硬件访问断点,直接跳转到跳转点。按F8到达程序OEP。

六、方法三:两次内存镜像法

1:用OD打开软件!

2:点击选项3354调试选项3354异常,忽略上面所有内容!Ctrl重新加载程序!

3:按ALTM打开内存镜像,找到第一个。程序的rsrc资源。按F2中断该点,然后按SHIFTF9运行到断点,然后按ALTM打开内存映像并找到。代码在第一个之上。rsrc。的程序(即00401000个位置)。按F2破点!然后按SHIFTF9(没有异常就按F9)直接到达程序OEP!

七、方法四:一步到达OEP

1.开始按CtrlF,输入:popad(只适合少数shell,包括UPX和ASPACKshells),然后按F2和F9运行到这里。

2.来到大跳跃,点击F8,到达OEP!

方法:末次变态法。

1.用OD打开软件。

2:点击选项3354调试选项3354异常,去掉里面所有的!CTRLF2重载程序

3:一开始,程序是一个跳转。这里我们按SHIFTF9直到程序运行,记下从按SHIFTF9开始到程序运行的次数M!

4:CtrlF2重新加载程序,按SHIFTF9(这次的次数是程序运行m-1次的次数)

5:在OD的右下角,我们看到一个‘SE手柄’。这时候我们按CTRLG,在SE句柄前输入地址!

6:按F2破点!然后按SHIFTF9到断点!

7:去掉断点,按F8慢慢下去!

8:到达程序的OEP!

八、方法六:模拟跟踪法

Btw:大家在使用这个方法的时候,要理解他是要在怎么样的情况下才可以使用

九、软件破解常用汇编指令

cmpa,b//比较a与b mova,b//把b值送给a值,使a=b ret//返回主程序 nop//无作用,英文(nooperation)简写,意思“donothing”(机器码90) (ultraedit打开编辑exe文件看到90相当汇编语句的nop)

call//调用子程序,子程序以ret结尾 je或jz//相等则跳(机器码是74或84) jne或jnz//不相等则跳(机器码是75或85) jmp//无条件跳(机器码是EB) jb//若小于则跳 ja//若大于则跳 jg//若大于则跳 jge//若大于等于则跳 jl//若小于则跳 popxxx//xxx出栈 pushxxx//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而已所以只要清楚这5个跳转的条件即可,别的那些了解下就好了

十、下面开始说传递跟比较指令:

传递指令: mov 比较指令: Cmp 例: moveax,1 movecx,eax cmpecx,eax//这个就是标志位 我们已知eax跟ecx都是1

那就符合je的跳转条件

本文到此结束,希望对大家有所帮助。

标签:

上一篇
下一篇

最新文章