4、手脱ASPack以及变形壳的几种方法
恶意样本分析手册——常用方法篇
恶意样本分析⼿册——常⽤⽅法篇⼀、⽂件识别常见的可执⾏程序格式有PE,ELF,MACH-O等,不同的格式有不同的标志信息(参考理论篇),知道了⽬标⽂件的格式后才能确定对应的分析⽅法和分析⼯具。
可以使⽤16进制解析器载⼊可执⾏程序,然后查看是哪种类型的⽂件。
图:PE⽂件格式图:ELF⽂件格式⼀般⼆进制⽂件的前四个字节为⽂件格式的magic,可以通过从⽹络搜索获得⽂件的信息,或者使⽤相关的⼯具(PEID,file)等进⾏⾃动识别。
⼆、静态分析静态分析技术通常是研究恶意代码的第⼀步。
静态分析指的是分析程序指令与结构来确定⽬标程序的功能的过程。
在这个时候,病毒本⾝并不在运⾏状态。
我们⼀般采⽤以下⼏种⽅式进⾏静态分析:1. 采⽤反病毒引擎扫描如果尚不确定⽬标程序是否为病毒程序,我们可以⾸先采⽤多个不同的反病毒软件来扫描⼀下这个⽂件,看是否有哪个引擎能够识别它。
(、 )注意:只能通过MD5值查询,不允许将样本进⾏上传。
图:VitusTotal检测结果界⾯2. 计算哈希值哈希是⼀种⽤来唯⼀标识⽬标程序的常⽤⽅法。
⽬标程序通过⼀个哈希算法,会产⽣出⼀段唯⼀的⽤于标识这个样本的哈希值,我们可以将这个值理解为是⽬标程序的指纹。
常⽤的哈希算法有MD5、Sha-1以及CRC32等。
由于仅仅采⽤⼀种算法,特别是MD5算法,有可能使得不同程序产⽣同样的哈希结果,所以⼀般会运⽤多种哈希验证⽂件的唯⼀性。
图:计算⽂件校验码3. 查找字符串程序中的字符串就是⼀串可打印的字符序列,⼀个程序通常都会包含⼀些字符串,⽐如打印输出信息、连接的URL,或者是程序所调⽤的API函数等。
从字符串中进⾏搜索是获取程序功能提⽰的⼀种简单⽅法。
(在IDA和OD中都可以查找字符串)并不是所有的字符串都是有意义的,但是利⽤这个结果,也能够给我们的静态分析带来很⼤的便利了。
图:查看字符串信息4. 查找导⼊函数如果软件被加壳的话,那么导⼊表中的函数会很少,所以可以从这⾥判断⽂件是否被加壳。
软件破解脱壳法
软件破解脱壳法什么是脱壳技术?在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。
从功能上抽象,软件的壳和自然界中的壳相差无几。
无非是保护、隐蔽壳内的东西。
而从技术的角度出发,壳是一段执行于原始程序前的代码。
原始程序的代码在加壳的过程中可能被压缩、加密……。
当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。
软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念:作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。
于是需要用到一些软件,它们能将exe可执行文件压缩。
3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。
1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。
language2000中文版(专门检测加壳类型)。
Armadillo实用脱壳方法总结
(5) Enable Nanomites Processing(简称CC),就是把一些retn代码变成CC(INT型),解决方法:用Arminline工具或Enjoy工具。
(6)Enable Memory-Patching Protections(内存保护)
Armadillo实用脱壳方法总结
近日对Armadillo壳很感兴趣,缘于它的多种组合,但仔细看来,其保护的解决方法又有相对固定。方法无外乎那么几种脱壳方法,总结在一块吧,以方便大家。大家可以复制下来,放在手边,脱壳时按步骤来。我还是一小鸟,同大家一样在逐渐成长中,有不对的地方和不成熟的地方,望大家批评指正,共同进步。
00401000 60 pushad
00401001 9C pushfd
00401002 68 A0FD1200 push **x (注:此处的 **x为断下后name前的数值。)
00401007 33C0 xor eax,eax
方法三、除了用双变单的脚本外,还可以用一个工具ARMADETACH,将带壳的程序拖入,记下子进程的ID。
2、处理IAT,修改Magic Jump。
用OD附加该子进程,加载后,ALT+F9返回,修改前两个字节为加壳程序载入时的前两个字节。
下断点bp GetModuleHandleA, Shift+F9运行,一般是在堆栈窗口出现ASCII "kernel32.dll"和ASCII "VirtualFree“后,再运行一次,出现"kernel32.dll",就是返回时机,中断后alt+f9返回,在KERNEL32.LoadLibraryA下面找到Magic Jump!修改为jmp。再下断点bp GetCurrentThreadId/bp CreateThread(或往下拉找到两个salc,在其上面的jmp上下断,Shift+F9,断下!如果文件有校验,则要撤消Magic Jump处的修改!打开内存镜像,在00401000段下断。运行,中断后,删除断点,alt+f9返回),F8单步走,到第一个CALL ECX之类的东西时,F7进入。到oep。
手脱UPX的四种方法
0040E938 11C9 adc ecx,ecx //跳到这里,继续F8
0040E93A 75 20 jnz short NOTEPAD.0040E95C //跳
。。。。。。。。。。。
0040E9F4 F2:AE repne scas byte ptr es:[edi]
0040E9F6 55 push ebp
0040E9F7 FF96 A4EC0000 call dword ptr ds:[esi+ECA4]
0040E9FD 09C0 or eax,eax
0040E9EE ^ 74 DC je short NOTEPAD.0040E9CC
0040E9F0 89F9 mov ecx,edi
0040E9F2 57 push edi
0040E9F3 48 dec eax
0040E9E8 95 xchg eax,ebp
0040E9E9 8A07 mov al,byte ptr ds:[edi]
0040E9EB 47 inc edi
0040E9EC 08C0 or al,al
0040E976 ^ E9 63FFFFFF jmp NOTEPAD.0040E8DE
0040E97B 90 nop
0040E97C 8B02 mov eax,dword ptr ds:[edx] //在这里F4,继续F8
0040E97E 83C2 04 add edx,4
0040E981 8907 mov dword ptr ds:[edi],eax
0040E983 83C7 04 add edi,4
0040E986 83E9 04 sub ecx,4
如何轻松装卸iPhone 4 保护壳
如何轻松装卸iPhone 4 保护套
其实,安装卸载iPhone 4 套套很容易,一般的人安装了几遍就找到了窍门。
但是对于刚买到手的玩家,如果不知道怎么安装卸载,使用蛮力,可能导致保护套破,或者损害机身也是有的。
那么今天小编在此献丑了,为大家演示下如何带套,当然高手请绕道!
第一步:左手拿套套,右手拿手机。
第二步:将iPhone 4 左侧先装入,因为左侧有凸出的音量按键,直接按下去会卡住的。
全部入套。
第四部:检查,看机身是否完全贴合。
其实装套比较容易,关键是卸套难,本人刚入手的时候很轻松装进去了,但是卸下来的时候确实费了不少功夫。
接下来看看这种上下扣的保护壳吧。
第一步:装机,对准卡槽,在保护壳边缘处轻松往下按就可以了。
小缝隙,指甲沿着小缝隙往上推,一样很轻松的卸下来了。
普通壳的脱壳方法和脱壳技巧
普通壳的脱壳方法和脱壳技巧脱壳是指将普通壳(通常指硬壳类)从内部原材料中取出的过程。
这个过程既需要一定的方法,也需要一些技巧。
下面我将详细介绍普通壳的脱壳方法和技巧。
脱壳主要分为以下几个步骤:准备工作、撬开壳体、去除壳体和整理内部原材料。
首先,准备工作是非常重要的。
需要准备好必要的工具,例如锤子、螺丝刀、剪刀、塑料袋等,以及切割和清洁壳体的材料,如剪刀、刀片、洗涤剂等。
接下来,需要撬开壳体。
首先,要检查壳体是否有任何阻挡物,如胶水、胶带或其他附着物。
如果有,需要小心地切除或剥离它们。
然后,可以用螺丝刀或剪刀等工具轻轻撬开壳体的缝隙,逐渐将缝隙扩大,直到可以插入手指或其他工具。
使用锤子轻轻敲击壳体,有时会使壳体裂开,从而更容易打开。
脱壳之后,要去除壳体。
根据壳体的类型和材料,不同的方法和技巧可以选择。
例如,对于较薄的塑料壳体,可以用手指轻松地撕裂或剥离。
对于较厚的金属壳体,可能需要使用剪刀或刀片进行切割。
切割时要小心不要损坏内部的原材料,以及不要让手指受伤。
最后,需要整理内部原材料。
脱壳后,可能会有一些残留的胶水、胶带或其他附着物,需要用洗涤剂和水或其他清洁剂擦拭清除。
同时,还要注意保持内部原材料的完整和安全。
如果壳体中还有其他零部件或线路,要小心保护它们,以免损坏。
在脱壳的过程中,还有一些技巧可以使用。
首先,要注意避免使用过大的力量,以免损坏壳体或内部原材料。
其次,可以选择从壳体的较薄、较弱的部位开始撬开,比如角落或接缝处,这样更容易开启壳体。
另外,使用锤子时,要轻轻敲击,以避免壳体破裂或内部原材料受损。
最后,选择适当的工具非常重要。
根据壳体的类型和特性,选择合适的工具可以更有效地完成脱壳过程。
总的来说,普通壳的脱壳方法和技巧在于准备工作的细致、撬开壳体的谨慎、去除壳体的适当、整理内部原材料的细致和使用合适的工具等。
希望以上的介绍对您有所帮助!。
手动脱壳简简单单
手动脱壳简简单单在我们进行逆向分析的时候,通常会遇到有些文件被加密处理过,也就是我们通常所说的被加了壳,这时他的内部结构都已经改变,我们想要继续分析是很麻烦的,所以我们需要把它从壳中分离出来,也就是我们常说的脱壳。
现在越来越多的软件都使用了加壳的保护方法,所以脱壳是我们在逆向分析过程中很主要的步骤,掌握它至关重要壳是最早出现的一种专业加密软件。
不同的壳的侧重点也不同,有的侧重于压缩,有的侧重于加密,所以出现了压缩壳和加密壳。
压缩壳的特点是减小软件的体积,我们常见的有:UPX,ASPack,PECompack等。
加密壳的则侧重于加密,保护强度较大,常见的有:ASProtect,Armadillo,Themida等。
第一步寻找OEP★OEP(Original Entry Point):程序的原入口点,就是壳程序在完成了对原程序的还原后,开始跳转到刚还原的程序执行,此时的地址就是入口点的值。
1 单步跟踪首先,我们运行peid, 将我们要检测的程序拖到上面,可以看到它是用aspack加的壳,如图1。
我们运行OD,点击菜单栏中的“文件”→“打开”,把我们需要脱壳的文件加载进来,接着就会弹出一个对话框“模块……你仍要继续分析吗”,如图2,我们选择“否”(不管什么方法脱壳都要按“否”),程序就会停以下的代码处:01013001 > 90 nop01013002 60 pushad01013003 E8 03000000 call 0101300B01013008 - E9 EB045D45 jmp 465E34F80101300D 55 push ebp0101300E C3 retn0101300F E8 01000000 call 0101301501013014 EB 5D jmp short 01013073我们按F8来跟踪一下,当到了call 0101300B这里的时候,记事本自己打开了,我们按Ctrl+F2重新载入文件,再来跟踪,当我们再次遇到call 0101300B这一句的时候我们按F7跟进,代码会来到这里:0101300B 5D pop ebp0101300C 45 inc ebp0101300D 55 push ebp0101300E C3 retn我们继续F8来跟踪,当到了retn一句时,程序返回了,停在了call的下面一句jmp465E34F8上,跳转以后代码来到了下面的这一句call 01013015,继续F8,如果遇到程序往回跳,那么我们就在下一句代码处按F4,这样跟踪一段时间以后,我们会看到这样的代码:010133BB 68 9D730001 push 0100739D010133C0 C3 retn再F8一下我们的程序就返回了了这里:0100739D 6A 70 push 700100739F 68 98180001 push 01001898010073A4 E8 BF010000 call 01007568到这里,我们就已经到达OEP,单步跟踪法测试成功。
怎样脱用 Aspack2.12 加的壳
按 F8 跟进去(这时如果按 F10 的话程序会直接运行)
0167:0040D00A 5D POP EBP
0167:0040D00B 45 INC EBP
0167:0040D00C 55 PUSH EBP
返回到真正入口点后,下指令 suspend 挂起调试器,打开 PEditor,按下 tasks 按Fra bibliotek,在列表中选中
你的程序,点右键,选择菜单命令 dump(full) 把进程保存到文件中,保存后杀掉进程。
上面的方法对其它的程序也一样适用(我测试了好几个程序,它们在调试器所显示的代码形式都差不多
0167:0040D04F FF95490F0000 CALL Near [`KERNEL32!GetProcAddress`]
下断点后,按 F5,程序来到下面的代码处
0167:0040D39A B8CC100000 MOV EAX,000010CC
0167:0040D03B 50 PUSH EAX
0167:0040D03C FF954D0F0000 CALL Near [`KERNEL32!GetModuleHandleA`]
0167:0040D042 898526040000 MOV [EBP+00000426],EAX
OPTL5=00000000
Aspack的壳
作者:未知 来源:未知 加入时间:2003-11-14
工具 : softice, trw2000, procdump
procdump 到这边抓最新版 /wcx/exe/pd32-162.exe
0167:0040D3A7 0BC9 OR ECX,ECX
0167:0040D3A9 8985A8030000 MOV [EBP+000003A8],EAX
脱壳教程_精品文档
脱壳教程标题:脱壳教程引言:脱壳是指将软件或应用程序的包装层(也称为保护壳或加密层)移除,以便对其进行更深入的分析、修改或逆向工程。
脱壳过程可以帮助软件开发人员或安全研究人员理解程序的内部运行机制,发现其中的漏洞或者进行优化改进。
本文将介绍脱壳过程的基本原理和几种常见的脱壳工具以及其使用方法。
一、脱壳的基本原理脱壳的基本原理是通过破解或绕过软件的保护机制来移除保护壳。
保护机制通常包括各种检测和防御技术,如代码混淆、加壳、逆向工程等。
常见的保护壳有UPX、ASProtect、Enigma等。
脱壳的过程涉及对程序进行调试、分析和修改。
二、脱壳工具介绍及使用方法1. OllyDbgOllyDbg是一款著名的逆向工程和调试工具,也是脱壳过程中经常使用的工具之一。
它具有强大的调试和反汇编功能,可以帮助分析程序的执行流程、内存变化等。
使用OllyDbg进行脱壳时,首先需要加载待脱壳的程序,然后设置断点,跟踪程序执行,找到关键的保护机制的位置,最终移除保护壳。
2. IDA ProIDA Pro是一款功能强大的反汇编和逆向工程工具。
它可以将程序转换为易读的汇编代码,并提供强大的导航和分析功能。
脱壳时可以使用IDA Pro来分析和修改程序的内存和代码。
它可以帮助找到程序的入口点、解密过程等,从而移除保护壳。
3. x64dbgx64dbg是一款开源的调试器工具,适用于32位和64位的Windows系统。
它具有用户友好的界面和丰富的调试功能,并支持脱壳过程中的动态调试和反调试技术。
使用x64dbg进行脱壳时,可以跟踪程序的执行流程、查看内存变化,找到关键代码并进行修改。
三、脱壳过程示例以某款加壳的软件为例,介绍基本的脱壳过程。
1. 加载待脱壳的程序到脱壳工具中,并设置断点。
2. 运行程序,在断点处停下来,观察程序的状态和执行流程。
3. 跟踪程序的执行,查找关键的保护机制位置,例如解密函数、保护壳的入口等。
4. 分析并修改程序的内存和代码,移除保护壳。
关于ASPack2.12加壳软件的脱壳方法[图文]
关于ASPack2.12加壳软件的脱壳方法[图文]其实ASPack 2.12是比较简单的东西,可以说,很大程度上,它可以对程序的大小进行压缩,方便发布其实ASPack 2.12是比较简单的东西,可以说,很大程度上,它可以对程序的大小进行压缩,方便发布。
今天从实际的例子来说说如何进行手脱ASPack 2.12 壳。
当然,所谓的手脱,不是说完全靠手工,我们还需要一定的工具,首先是PEiD,大家可以在脚本之家上下载到,主要用于查壳的一种小工具。
第二个就是动态调试工具OD(ollydbg),这个工具同样可以自己再网络上找到下载。
我们以一个ascii转换的小工具为例子。
因为刚刚好是用aspack 加的壳。
所以我们就拿它开刀。
阴纯长痘痘视频教程棋牌游戏赚钱上图是软件的界面,这个时候的软件大小是846 KB (866,816 字节)是不是感觉很小呢?我们用peid进行查看壳。
可以清晰的看到是aspack的壳吧。
而且还有版本,我们使用OD 打开它。
对于是否继续分析,我们点否就可以。
然后我们就可以看到下面类似的代码。
我们可以看到入口是停止了pushad,也就是寄存器压统一入栈操作。
那么我们就可以轻松的使用所谓的ESP定律来搞定了。
按一下F7,到下一行,看寄存器窗口。
里面的ESP的值。
视频教程教程看到ESP寄存器是红色的了。
我们copy对应的0012FFA4,到我们的命令行窗口下硬件断点。
硬件断点就是hr ,然后加上我们刚刚copy的地址,然后回车,这个时候我们可以再菜单的。
调试》硬件断点中看到我们设置的硬件断点了。
设置好断点后,我们直接按F9运行程序,它会在断点处停下来。
大致的位置看截图好,我们可以高兴的看到,发生了jnz,就是不等于0就跳转,而且是红色的方向向下跳转。
红色代表跳转已经实现,方向是向下,就是到了地址为006AF3BA的地方,然后这个地方push压入一个地址,通过retn方式返回。
我们这个时候删除硬件断点。
破解之多种方法脱ASP壳
破解之多种方法脱ASP壳工具:PEID-经典查壳工具OD -动态调试工具理论知识:所谓壳即软件作者为防止软件被调试破解所用的一种的保护方法,分为压缩壳和加密壳,就安全性和破解 复杂性来说,加密壳要比压缩壳厉害的多。
OD界面:左上角为CPU窗口,分别为地址,机器码,汇编代码,注释右上角为寄存器窗口左下角为内存窗口右下角为当前堆栈情况和注释经常使用的快捷键:F2:在需要的地方下断点(INT3型断点) F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)USHAD (压栈) 代表程序的入口点,OPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真 正的OEP,就可以立刻脱壳。
二。
开始破解1。
单步跟踪法破解(最基本)载入PEID,显示:ASPack 2.12 -> Alexey Solodovnikov显然是ASPpack2.12版本的壳,今天我们的目标就是它了OD载入程序停在0040D001 > 60 pushad0040D002 E8 03000000 call NotePad_.0040D00A0040D007 - E9 EB045D45 jmp 459DD4F70040D00C 55 push ebp0040D00D C3 retn0040D00E E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D072pushad:程序入口点call :为调用即调用NotePad_.0040D00A这里用先用F8步进,F7进入call,继续F8步进,会遇到向下的箭头0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D014不用管它,我们破解断点只断向上的跳转到这里注意一下0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D0720040D015 BB EDFFFFFF mov ebx,-13注意这个call,要用F7进入,不然就要跑飞(程序运行起来) 继续F8步进,直到0040D12F /74 2E je short NotePad_.0040D15F0040D131 |78 2C js short NotePad_.0040D15F0040D133 |AC lods byte ptr ds:[esi]0040D134 |3C E8 cmp al,0E80040D136 |74 0A je short NotePad_.0040D1420040D138 |EB 00 jmp short NotePad_.0040D13A 0040D13A |3C E9 cmp al,0E90040D13C |74 04 je short NotePad_.0040D1420040D13E |43 inc ebx0040D13F |49 dec ecx0040D140 ^|EB EB jmp short NotePad_.0040D12D0040D142 |8B06 mov eax,dword ptr ds:[esi]向上的跳转,在向上箭头的下一行下断点,具体这么做:0040D142 8B06 mov eax,dword ptr ds:[esi]在这一行上点右键——断点——运行到选定位置F8继续步进以下还会遇到几处向上的跳转,仿照上述设置断点即可一直调试到这里0040D3A9 8985 A8030000 mov dword ptr ss:[ebp+3A8],eax 0040D3AF 61 popad0040D3B0 75 08 jnz short NotePad_.0040D3BA0040D3B2 B8 01000000 mov eax,10040D3B7 C2 0C00 retn 0C0040D3BA 68 CC104000 push NotePad_.004010CC0040D3BF C3 retn0040D3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+426]注意:0040D3BA 68 CC104000 push NotePad_.004010CC程序的OEP原因:一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
脱壳方法
手脱AHpack 0.1 -> FEUERRADER
建议不要单步跟踪 使用ESP定律能更快到达OEP SFX方法也可以 不过效率就 呵呵~
/*
Script written by VolX
Script : Aspr2.XX_unpacker
版本 : v1.0SC
日期 : 15-Jan-2007
调试环境 : OllyDbg 1.1, ODBGScript 1.47, WINXP, WIN2000
调试选项 : 设置 OllyDbg 忽略所有异常选项
看EP区段 显示 .!ep
突然发现peid 查壳很一般了 越来越不能相信它了
下面是我的脱壳手记:
用OD载入:
程序入口: 看壳的入口,好像是!EP(EXE Pack)1.4的,就暂且相信它吧
004B3000 > F8 clc
004B3001 57 push edi
004B301A 0BDB or ebx, ebx
004B301C 40 inc eax
004B301D 48 dec eax
004B301E 84D2 test dl, dl
软件名:锐速简历通
开始以为一次ESP定律就可以解决了,一看,OD断下来的时候和刚加载的一样,我马上想到是不是自己操作失误了?本来还想自嘲一下说老马失蹄,但是查看断点,这个软件唯一有点意思的地方是作者使用了两次一样的壳(不知道为什么,老觉得软件作者很会开玩笑),所以再使用一次ESP定律直接到达OEP dump 之后直接能使用 不用import修复
使用OllyDbg从零开始Cracking 第三十五章-手脱ASPack
第三十五章-手脱ASPack V2.12本章我们继续介绍脱壳,稍微增加一点难度。
我们要脱的壳是ASPack,比UPX稍微复杂那么一点点,拿UnPackMe_ASPack2.12.exe作为实验对象,这个程序我们在第三十二章介绍OEP的时候遇到过,大家应该还记得吧。
Dump的话我们用OD的插件OllyDump来完成,大家将其放到OD的插件目录下。
将OD的反反调试插件配置好,然后加载。
OD提示该程序入口点位于代码段之外,对于大部分加壳程序OD都会弹出此警告窗口,大家不必大惊小怪。
我们可以看到第一条指令是PUSHAD,按F7键执行PUSHAD。
在ESP寄存器值上面单击鼠标右键选择-Follow in Dump,就可以在数据窗口中定位到刚刚通过PUSHAD指令保存的寄存器环境了,选中前4个字节,单击鼠标右键选择-Breakpoint-Hardware,on access-Dword,这样就可以给这4个字节设置硬件访问断点了。
按F9键运行起来。
断在了POPAD指令的下一行,我们直接按F7键单步跟踪到OEP处。
这里我们到了OEP处,OD这里解析有误,将代码解析为数据了,我们在反汇编窗口中单击鼠标右键选择-Analysis-Remove analysis from module,删除掉OD的分析结果,这样就能正常解析了。
我们可以看到虽然已经被解析成代码了,但是解析的还不够完整,我们还需要解析一次,继续单击鼠标右键选择-Analysis-Analyse code。
现在我们可以对该进程进行dump了,在菜单栏中找到OllyDump插件。
该插件的窗口的弹了出来,有一些选项可供我们修改,我们可以对Base of Code进行修改,这里Base of Code = 4000(RV A),该选项相当于对代码段进行了指定,不需要像上一章那样在数据窗口中的PE头中去修改。
我们应该还记得ASPack加壳程序的原程序代码段并不是第一个区段,而是第三个区段,4000(RV A),即404000(V A),OEP也是404000,刚好在代码段中,所以Base of Code这一项我们不需要修改。
(完整版)常见几种脱壳方法
一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK北斗)"... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!---------- < 小A分割线> ------------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具------------ <小A分割> -------------------三、常见手动脱壳方法预备知识1. PUSHAD (入栈/压栈)代表程序的入口点,2. POPAD (弹栈/出栈)代表程序的出口点,与PUSHA想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOE P,只要我们找到程序真正的OEP就可以立刻脱壳。
---------- < 小A分割线> --------------------------1. 用OD载入,点“不分析代码!”2. 单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3. 遇到程序往回跳的(包括循环),我们在下一句代码处按F4 (或者右健单击代码,选择断点——>运行到所选)4. 绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5. 如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6. 在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7. 一般有很大的跳转(大跨段),比如jmp XXXXXX或者JE XXXXXX或者有RETN 的一般很快就会到程序的OEP。
(完整版)常见几种脱壳方法(可编辑修改word版)
----------------<小 A 分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!-----------<小 A 分割线>-------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具-------------<小 A 分割>-------------------三、常见手动脱壳方法预备知识1.P USHAD (入栈/压栈)代表程序的入口点,2.P OPAD (弹栈/出栈)代表程序的出口点,与 PUSHAD 想对应,一般找到这个OEP 就在附近3.O EP:程序的入口点,软件加壳就是隐藏了 OEP(或者用了假的 OEP/FOEP),只要我们找到程序真正的 OEP,就可以立刻脱壳。
------------<小 A 分割线>--------------------方法一:单步跟踪法1.用OD 载入,点“不分析代码!”2.单步向下跟踪 F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按 F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个 CALL 的,我们就 F7 跟进去,不然程序很容易跑飞,这样很快就能到程序的 OEP6.在跟踪的时候,如果运行到某个 CALL 程序就运行的,就在这个 CALL 中F7 进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的 OEP。
平板壳的几种折法
平板壳的几种折法
嘿,咱就说说平板壳的几种折法哈。
有一回啊,我买了个新平板,那可得好好保护起来呀。
于是就买了个漂亮的平板壳。
第一种折法呢,就是最简单的直接把壳往后一折。
这样平板就可以立起来啦,就像个小电视似的。
我有时候就这么放着看视频,可方便了。
有一次我躺在床上看电视剧,就用这种折法,把平板放在肚子上,那叫一个舒服。
第二种折法,把壳折成三角形。
这样平板就有一定的倾斜角度,可以放在桌子上写字或者画画。
我记得有一次我想画个画,就用这种折法,感觉角度刚刚好,手也不累。
第三种折法,把壳折成梯形。
这种折法可以让平板的高度更高一些,适合看一些需要离得远一点的内容。
有一次我在厨房做饭,想一边看菜谱一边做,就用这种折法把平板放在灶台上,看得可清楚了。
第四种折法,把壳折成不规则形状。
哈哈,这个就比较随意啦,可以根据自己的需要调整角度和高度。
有一次我在
沙发上坐着,想找个舒服的姿势看平板,就各种折壳,最后终于找到了一个满意的角度。
还有一种比较特别的折法,就是把壳折成一个小盒子的形状。
可以把一些小物件放在里面,比如耳机、充电器啥的。
我有一次出门,就把这些东西放在平板壳里,可方便了,不用担心弄丢。
总之啊,平板壳的折法有很多种,可以根据不同的场景和需求来选择。
让我们的平板使用起来更加方便和有趣。
塑料脱胶拆壳方法
塑料脱胶拆壳方法嘿,朋友们!今天咱就来聊聊塑料脱胶拆壳这事儿。
你说这塑料玩意儿,有时候粘得那叫一个紧啊,就跟热恋中的情侣似的,难舍难分!但咱可不能被它难住,得想办法把它们分开不是?想象一下,那粘得死死的塑料壳就像一座坚固的城堡,咱得想办法攻破它。
首先呢,咱可以试试用热水。
就像冬天里给咱自己泡个热水澡一样,让塑料也感受感受热水的温暖。
把粘住的塑料制品放到热水里泡一泡,说不定那胶就会变得软一些,这时候再去拆,可能就容易多啦。
或者呢,用吹风机呀!把吹风机调成热风档,对着胶的地方吹一吹。
这就好比给它来个热辣的日光浴,把那胶给烤得晕乎乎的,然后咱再趁机下手。
不过可得注意别吹太久,万一塑料被烤变形了,那可就不好啦,那不就成了拆东墙补西墙嘛!要是这俩招还不行,咱还有秘密武器呢!那就是酒精。
酒精这东西可神奇啦,就像一个小小的魔法师。
用棉签蘸点酒精,在胶的地方擦擦,让酒精去和胶较量较量。
说不定酒精就能把胶给溶解掉一部分,让拆壳变得轻松起来。
还有啊,白醋也能派上用场。
白醋的酸性有时候能起到意想不到的效果呢。
把白醋涂在胶上,让它慢慢渗透,就好像给胶打了一针软化剂。
但咱在拆壳的时候可得小心点,别毛手毛脚的。
就像拆礼物一样,得轻轻地、慢慢地,不然一不小心把里面的东西给弄坏了,那不就得不偿失啦?而且拆的时候要有耐心,别拆了几下没拆开就着急上火,这事儿啊,急不得!咱还可以借助一些工具,比如小刀片、镊子之类的。
但用这些工具的时候可得悠着点,别把塑料给划伤了呀。
不然好好的一个东西,拆完了变得破破烂烂的,多难看呀!总之呢,塑料脱胶拆壳这事儿,说难也不难,说简单也不简单。
关键是要找对方法,还要有耐心和细心。
大家想想,要是咱每次都能轻松地把那些粘得紧紧的塑料拆开,那多有成就感啊!是不是?所以啊,别害怕那些顽固的胶,咱有办法对付它们!让我们大胆地去尝试吧,把那些塑料壳都乖乖地拆开!。
取下饰盖的方法范文
取下饰盖的方法范文
1.按钮/开关式饰盖:
对于这种类型的饰盖,通常有一个按钮或开关,可轻松将饰盖从其固
定位置推动或旋转取下。
这种饰盖通常用于电子设备、家用电器等。
您只
需找到按钮或开关,在适当的方向上施加压力即可。
2.拧螺丝式饰盖:
对于那些使用螺丝固定的饰盖,您需要一把螺丝刀或螺丝起子来解开
螺丝。
首先,确定螺丝的类型(十字形、平头、六角等),然后选择相应
的工具。
将螺丝刀或螺丝起子插入螺丝孔中,逆时针转动,直到螺丝完全
松开。
然后,您可以轻松地将饰盖取下。
3.嵌入式饰盖:
嵌入式饰盖是密封固定在特定部件或设备上的饰盖,比如汽车引擎盖、洗衣机上盖等。
要取下这种饰盖,您需要先找到正确的位置,有时还可能
需要使用特殊工具。
根据不同的情况,您可能需要解开螺丝、拆卸卡扣、
拆下塑料夹子或是调整角度以实现饰盖的拆卸。
在进行操作之前,您可以
查阅相关的使用手册或者网络上的教程,以确保正确而安全地进行操作。
4.推拉式饰盖:
推拉式饰盖通常用于抽屉、衣柜、柜门等,您只需推动或拉动饰盖,
使其脱离原始位置并取下。
这种饰盖的固定方式通常非常简单,适用于家
具和其他日常用品。
5.热熔式饰盖:
热熔式饰盖通常用于塑料制品,如手机壳、电子产品等。
要取下这种
饰盖,您可以使用吹风机或电热枪加热饰盖四周的胶水或塑料,使其变软。
一旦变软,您可以使用细尖的工具(如塑料片或刀片)在饰盖和设备之间
轻轻插入,并小心地撬开饰盖。
请务必小心操作,避免损坏设备或擦伤自己。
ASPack以及变形壳的几种方法
---------------------------------------------------------------------------------“KillBox”用PEID查得是ASPack 2.12 -> Alexey Solodovnikov1、单步跟踪法2、ESP定律法00424001 K> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F800424002 E8 03000000 call KillBox.0042400A //到这里,注意寄存器提示ESP=0012FFA400424007 - E9 EB045D45 jmp 459F44F70042400C 55 push ebp0042400D C3 retn命令行下断hr 0012FFA4,F9运行!3、内存镜像法首先Alt+M打开内存镜像找到.rsrc区段内存映射,项目 29地址=004D3000大小=00241000 (2363392.)宿主=登陆器 00400000区段=.rsrc //F2下断,Shift+F9运行!包含=resources类型=Imag 01001002访问=R初始访问=RWE继续内存映射,项目 22地址=00401000大小=000BB000 (765952.)宿主=登陆器 00400000区段=CODE //F2下断,Shift+F9运行!直接到达OEP!包含=code类型=Imag 01001002访问=R初始访问=RWE********************************************************************************************"登陆器"其实是一个ASPack的变形壳今天我们使用2种方法快速搞定它!一、ESP定律法二、内存断点法******************************************************************************** **********************一、ESP定律法OD载入程序00717082 登陆> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F8 00717083 E8 00000000 call 登陆器.00717088 //到这里,注意寄存器提示ESP=0012FFA400717088 5D pop ebp00717089 81ED B6A4450>sub ebp,登陆器.0045A4B60071708F 8DBD B0A4450>lea edi,dword ptr ss:[ebp+45A4B0]00717095 81EF 8200000>sub edi,82命令行下断hr 0012FFA4,F9运行!00717374 - FFE0 jmp eax ; 登陆器.00714001 //到这里,单步F8 00717376 42 inc edx00717377 4B dec ebx00717378 2E:44 inc esp0071737A 41 inc ecx00714001 60 pushad //来到这里,仍然是关键提示,单步F800714002 E8 03000000 call 登陆器.0071400A //到这里,ESP=0012FFA4(和上面的一样),由于上一个硬件断点没删除所以到这里我们直接F9就可以了!00714007 - E9 EB045D45 jmp 45CE44F70071400C 55 push ebp0071400D C3 retn007143B0 /75 08 jnz short 登陆器.007143BA //到这里!删除断点,F8 007143B2 |B8 01000000 mov eax,1007143B7 |C2 0C00 retn 0C007143BA \68 D8BD4B00 push 登陆器.004BBDD8007143BF C3 retn //返回到 004BBDD8 (登陆器.004BBDD8),程序的OEP!004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的004BBDD9 8BEC mov ebp,esp004BBDDB 83C4 F0 add esp,-10004BBDDE B8 98B94B00 mov eax,登陆器.004BB998004BBDE3 E8 BCA5F4FF call 登陆器.004063A4004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]004BBDED 8B00 mov eax,dword ptr ds:[eax]004BBDEF E8 1073FAFF call 登陆器.00463104在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!测试正常运行,用PEID查看是Borland Delphi 6.0 - 7.0写的好了,ESP定律法就到这里,下面介绍的是内存断点法******************************************************************************** **********************二、内存断点法重新载入下吧,来实行我们的内存断点法首先Alt+M打开内存镜像找到.rsrc区段内存映射,项目 29地址=004D3000大小=00241000 (2363392.)宿主=登陆器 00400000区段=.rsrc //F2下断,Shift+F9运行!包含=resources类型=Imag 01001002访问=R初始访问=RWE77F764F3 66:8B50 0C mov dx,word ptr ds:[eax+C] //来到这里,我们不用管它77F764F7 8995 6CFFFFF>mov dword ptr ss:[ebp-94],edx77F764FD 8D70 10 lea esi,dword ptr ds:[eax+10]77F76500 89B5 68FFFFF>mov dword ptr ss:[ebp-98],esi77F76506 66:F747 02 F>test word ptr ds:[edi+2],0FFFF再次Alt+M打开内存镜像找到.code区段或者是.text区段(因为编写语言不一样所以区段名称的一样的,一般是00401000段)内存映射,项目 22地址=00401000大小=000BB000 (765952.)宿主=登陆器 00400000区段=CODE //F2下断,Shift+F9运行!直接到达OEP!包含=code类型=Imag 01001002访问=R初始访问=RWE004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的004BBDD9 8BEC mov ebp,esp004BBDDB 83C4 F0 add esp,-10004BBDDE B8 98B94B00 mov eax,登陆器.004BB998004BBDE3 E8 BCA5F4FF call 登陆器.004063A4004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!测试正常运行,用PEID查看是Borland Delphi 6.0 - 7.0写的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
---------------------------------------------------------------------------------
“KillBox”用PEID查得是ASPack 2.12 -> Alexey Solodovnikov
再次Alt+M打开内存镜像
找到.code区段或者是.text区段(因为编写语言不一样所以区段名称的一样的,一般是00401000段)
内存映射,项目 22
地址=00401000
大小=000BB000 (765952.)
宿主=登陆器 00400000
区段=CODE //F2下断,Shift+F9运行!直接到达OEP!
访问=R
初始访问=RWE
继续
内存映射,项目 22
地址=00401000
大小=000BB000 (765952.)
宿主=登陆器 00400000
区段=CODE //F2下断,Shift+F9运行!直接到达OEP!
包含=code
类型=Imag 01001002
004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]
004BBDED 8B00 mov eax,dword ptr ds:[eax]
004BBDEF E8 1073FAFF call 登陆器.00463104
首先Alt+M打开内存镜像
找到.rsrc区段
内存映射,项目 29
地址=004D3000
大小=00241000 (2363392.)
宿主=登陆器 00400000
区段=.rsrc //F2下断,Shift+F9运行!
包含=resources
类型=Imag 01001002
---------------------------------------------------------------------------------
黑鹰红客基地动画教程
黑鹰红客基地
专业的红客安全技术培训基地
多抽出一分钟时间学习.让你的生命更加精彩.
在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!
测试正常运行,用PEID查看是Borland Delphi 6.0 - 7.0写的
好了,ESP定律法就到这里,下面介绍的是内存断点法
******************************************************************************************************
00717083 E8 00000000 call 登陆器.00717088 //到这里,注意寄存器提示ESP=0012FFA4
00717088 5D pop ebp
00717089 81ED B6A4450>sub ebp,登陆器.0045A4B6
007143BA \68 D8BD4B00 push 登陆器.004BBDD8
007143BF C3 retn //返回到 004BBDD8 (登陆器.004BBDD8),程序的OEP!
004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的
004BBDDE B8 98B94B00 mov eax,登陆器.004BB998
004BBDE3 E8 BCA5F4FF call 登陆器.004063A4
004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]
在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!
测试正常运行,用PEID查看是Borland Delphi 6.0 - 7.0写的�
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE
77F764F3 66:8B50 0C mov dx,word ptr ds:[eax+C] //来到这里,我们不用管它
77F764F7 8995 6CFFFFF>mov dword ptr ss:[ebp-94],edx
00424007 - E9 EB045D45 jmp 459F44F7
0042400C 55 push ebp
0042400D C3 retn
命令行下断hr 0012FFA4,F9运行!
3、内存镜像法
二、内存断点法
重新载入下吧,来实行我们的内存断点法
首先Alt+M打开内存镜像
找到.rsrc区段
内存映射,项目 29
地址=004D3000
大小=00241000 (2363392.)
宿主=登陆器 00400000
区段=.rsrc //F2下断,Shift+F9运行!
004BBDD9 8BEC mov ebp,esp
004BBDDB 83C4 F0 add esp,-10
004BBDDE B8 98B94B00 mov eax,登陆器.004BB998
004BBDE3 E8 BCA5F4FF call 登陆器.004063A4
1、单步跟踪法
2、ESP定律法
00424001 K> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F8
00424002 E8 03000000 call KillBox.0042400A //到这里,注意寄存器提示ESP=0012FFA4
访问=R
初始访问=RWE
********************************************************************************************
"登陆器"其实是一个ASPack的变形壳
今天我们使用2种方法快速搞定它!
一、ESP定律法
0071400D C3 retn
007143B0 /75 08 jnz short 登陆器.007143BA //到这里!删除断点,F8
007143B2 |B8 01000000 mov eax,1
007143B7 |C2 0C00 re*************************************************************************************************
一、ESP定律法
OD载入程序
00717082 登陆> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F8
0071708F 8DBD B0A4450>lea edi,dword ptr ss:[ebp+45A4B0]
00717095 81EF 8200000>sub edi,82
命令行下断hr 0012FFA4,F9运行!
00717374 - FFE0 jmp eax ; 登陆器.00714001 //到这里,单步F8
00717376 42 inc edx
00717377 4B dec ebx
00717378 2E:44 inc esp
0071737A 41 inc ecx
00714001 60 pushad //来到这里,仍然是关键提示,单步F8
00714002 E8 03000000 call 登陆器.0071400A //到这里,ESP=0012FFA4(和上面的一样),由于上一个硬件断点没删除所以到这里我们直接F9就可以了!
00714007 - E9 EB045D45 jmp 45CE44F7
0071400C 55 push ebp
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的
004BBDD9 8BEC mov ebp,esp
004BBDDB 83C4 F0 add esp,-10
77F764FD 8D70 10 lea esi,dword ptr ds:[eax+10]
77F76500 89B5 68FFFFF>mov dword ptr ss:[ebp-98],esi
77F76506 66:F747 02 F>test word ptr ds:[edi+2],0FFFF