DLL文件脱壳 请教各位高手?谁能详细解说下脱壳步骤和软件
本文目录
DLL文件脱壳 请教各位高手
UPX 0.80 - 1.24 DLL -》 Markus & Laszlo鸟壳ESP定律或者内存镜像法都可以简单脱壳DLL和EXE脱壳没有什么不同的教程::8、手脱UPX的DLL 天草的
我也求脱壳啊,有没有高人指点,拜师也行啊
谁能详细解说下脱壳步骤和软件
【目标软件】WINME下的记事本 【加壳方式】Armadillo3.60 CopyMem-ll Debug-Blocker 【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F 1.前言 为了练习脱壳,前一段时间从网上下了一个Armadillo3.60,然后给记事本加壳,当然本人初学破解,参考了很多大虾们的文章,然后自己模仿脱壳,可是当我修改了Magic Jump后,用401000段“内存断点”大法想到达那个盼望已久的OEP的时候,意外出现了:程序终止,退出!是我做法错误,然后我又实验了N遍,依然如此,为什么?随后又在论坛不停的搜索着,想找一些有关的知识,终于找到了(抱歉,忘记了作者是谁),而且解决了这个问题,为了使象我一样初学者不要重蹈覆辙,我决定详细的写一写,也许你认为很简单,那么请略过。 2.脱壳过程(分以下几步进行) 设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。 (1)查找OEP 用OD中载入程序,下bp WaitForDebugEvent,F9运行,中断如下: 77E93A07 k》 55 push ebp 《====中断在此处,清除断点 77E93A08 8BEC mov ebp,esp 77E93A0A 83EC 68 sub esp,68 77E93A0D 56 push esi 77E93A0E FF75 0C push dword ptr ss: 查看堆栈窗口: 0012DAC0 00423D67 /CALL 到 WaitForDebugEvent 来自 NOTEPAD.00423D61 0012DAC4 0012EB84 |pDebugEvent = 0012EB84 《====注意这里 0012DAC8 000003E8 \Timeout = 1000. ms 在0012EB84所在的行上点击右键选“转存中跟随”。 然后再下bp WriteProcessMemory,F9运行 77E41A90 k》 55 push ebp 《====中断在此处 77E41A91 8BEC mov ebp,esp 77E41A93 51 push ecx 77E41A94 51 push ecx 77E41A95 8B45 0C mov eax,dword ptr ss: 看数据转存窗口: 0012EB84 01 00 00 00 40 07 00 00 ...@ .. 0012EB8C 5C 01 00 00 01 00 00 80 \ .. .. 0012EB94 00 00 00 00 00 00 00 00 ........ 0012EB9C CC 10 40 00 02 00 00 00 ?@. ... 0012EBA4 00 00 00 00 CC 10 40 00 ....?@. 0012EBAC CC 10 40 00 00 00 00 00 ?@..... 红色字体的4010CC就是OEP,这样我们接着来第2步 (2)dump文件 现在我们重新用OD中载入程序,下硬件断点,he WaitForDebugEvent,F9运行,中断如下: 77E93A07 k》 55 push ebp 《====中断在此处,删除断点 77E93A08 8BEC mov ebp,esp 77E93A0A 83EC 68 sub esp,68 77E93A0D 56 push esi 77E93A0E FF75 0C push dword ptr ss: Alt F9返回,搜索常数FFFFFFF8,来到(004243D6处): 0042438A 》 \83BD D0F5FFFF》cmp dword ptr ss:,0《====参考文章里提到的关键代码 00424391 . 0F8C A9020000 jl NOTEPAD.00424640《====跳转到00424640处,因此在00424640处下断点 00424397 . 8B8D D0F5FFFF mov ecx,dword ptr ss: 0042439D . 3B0D E4454500 cmp ecx,dword ptr ds: 004243A3 . 0F8D 97020000 jge NOTEPAD.00424640 004243A9 . 8B95 44F6FFFF mov edx,dword ptr ss: 004243AF . 81E2 FF000000 and edx,0FF 004243B5 . 85D2 test edx,edx 004243B7 . 0F84 AD000000 je NOTEPAD.0042446A 004243BD . 6A 00 push 0 004243BF . 8BB5 D0F5FFFF mov esi,dword ptr ss: 004243C5 . C1E6 04 shl esi,4 004243C8 . 8B85 D0F5FFFF mov eax,dword ptr ss: 004243CE . 25 07000080 and eax,80000007 004243D3 . 79 05 jns short NOTEPAD.004243DA 004243D5 . 48 dec eax 004243D6 . 83C8 F8 or eax,FFFFFFF8《=====搜索来到这里,向上看 004243D9 . 40 inc eax 004243DA 》 33C9 xor ecx,ecx 004243DC . 8A88 802A4500 mov cl,byte ptr ds: 004243E2 . 8B95 D0F5FFFF mov edx,dword ptr ss: 004243E8 . 81E2 07000080 and edx,80000007 004243EE . 79 05 jns short NOTEPAD.004243F5 004243F0 . 4A dec edx 004243F1 . 83CA F8 or edx,FFFFFFF8 004243F4 . 42 inc edx 004243F5 》 33C0 xor eax,eax 004243F7 . 8A82 812A4500 mov al,byte ptr ds: 004243FD . 8B3C8D 60E244》mov edi,dword ptr ds: 00424404 . 333C85 60E244》xor edi,dword ptr ds: 0042440B . 8B8D D0F5FFFF mov ecx,dword ptr ss: 00424411 . 81E1 07000080 and ecx,80000007 00424417 . 79 05 jns short NOTEPAD.0042441E 00424419 . 49 dec ecx 0042441A . 83C9 F8 or ecx,FFFFFFF8 0042441D . 41 inc ecx 0042441E 》 33D2 xor edx,edx 00424420 . 8A91 822A4500 mov dl,byte ptr ds: 00424426 . 333C95 60E244》xor edi,dword ptr ds: 0042442D . 8B85 D0F5FFFF mov eax,dword ptr ss: 00424433 . 99 cdq 00424434 . B9 1C000000 mov ecx,1C 00424439 . F7F9 idiv ecx 0042443B . 8BCA mov ecx,edx 0042443D . D3EF shr edi,cl 0042443F . 83E7 0F and edi,0F 00424442 . 03F7 add esi,edi 00424444 . 8B15 D4454500 mov edx,dword ptr ds: 0042444A . 8D04B2 lea eax,dword ptr ds: 0042444D . 50 push eax 0042444E . 8B8D D0F5FFFF mov ecx,dword ptr ss: 00424454 . 51 push ecx 00424455 . E8 FF1F0000 call NOTEPAD.00426459 0042445A . 83C4 0C add esp,0C 0042445D . 25 FF000000 and eax,0FF《====从这里开始修改 00424462 . 85C0 test eax,eax 00424464 . 0F84 D6010000 je NOTEPAD.00424640 在0042438A处下 硬件执行 断点,F9运行到0042438A处,得到ebp-A30=12EB70,这样上述的修改地方修改为: 0042445D FF05 70EB1200 inc dword ptr ds: 00424463 90 nop 00424464 ^ E9 21FFFFFF jmp NOTEPAD.0042438A 把12EB70处置0,去掉所有断点,并在00424640处下断,F9运行,断住。好了,所有代码都强制解压完成。 运行LordPE,有2个关于NOTEPAD的进程,选择第2个,即可完全dump出来了。 (3)修复IAT表 因为Armadillo的壳使得ImportREC的"IAT AutoSearch"失效,所以必须确定IAT的RAV以及大小,为此我们用OD载入刚刚DUMP出来的文件,来确定IAT的RAV以及大小,载入之前先修改入口点为10CC,然后载入: 004010CC d》 55 push ebp 004010CD 8BEC mov ebp,esp 004010CF 83EC 44 sub esp,44 004010D2 56 push esi 004010D3 FF15 F4734000 call dword ptr ds:《====注意这里 004010D9 8BF0 mov esi,eax 我们可以随便找一个CALL入手确定IAT的RAV以及大小(不妨找看到的第一个CALL)。光标定位到数据转存窗口中,然后 Ctrl G,4073F4,可以看到: 004072E4 BE 7D 00 00 00 00 00 00 缄...... 004072EC D7 23 DA 77 46 BA 3C 00 ?赵F?. 004072F4 F0 59 DA 77 CC 5E DA 77 餣赵蘜赵 ..........(省略若干) 004073DC 7D 15 F5 77 90 9B 3C 00 } 鮳悰《. 004073E4 03 38 E5 77 67 31 E5 77 8鍂g1鍂 004073EC 3C 51 E5 77 97 2D E5 77 《Q鍂?鍂 004073F4 C7 C3 3C 00 45 9A E5 77 敲《.E氩w《====到达这里,由此处向上和向下看 004073FC 91 B2 3C 00 8D B8 3C 00 懖《.嵏《. 00407404 50 88 3C 00 CE 8A 47 77 P?.螉Gw ..........(省略若干) 00407504 EC 72 D1 77 11 9A D1 77 靣褀 氀w 0040750C 06 81 D1 77 D3 3D D1 77 布w?褀 00407514 37 89 3C 00 B3 22 32 76 7?.?2v 0040751C 39 DC 33 76 3B C2 32 76 9?v;?v 00407524 10 1D 34 76 D6 8B 32 76 4v謰2v 0040752C B7 44 33 76 70 1B 32 76 稤3vp 2v 00407534 8B 88 3C 00 00 00 00 00 媹《..... 这样IAT的大小是终点-始点=00407530-004072EC=244,RVA=72EC。为什么是这样呢,我们看到很多77XXXXXX之类的,而到了00407534处是8B 88 3C 00,为了确定其是否在IAT内,我们可以在OD的CPU窗口内定位光标到401000处,然后Ctrl B,填入 34 75 40,结果搜索不到,而30 75 40能够搜索到,是JMP ,因此确定IAT的终点点是407530,用同样的方法可以确定起点点是4072EC。 好了,IAT的RAV以及大小确定了,现在就要修复IAT了,用OD再一次载入未脱壳的程序,bp DebugActiveProcess,F9断下。看堆栈窗口: 0012DAC4 00423BDB /CALL 到 DebugActiveProcess 来自 NOTEPAD.00423BD5 0012DAC8 00000324 \ProcessId = 324《=====子进程句柄 0012DACC 0012FF2C 打开另一个OD附加324这个子进程。然后ALT+F9返回程序: 00433999 N》 - EB FE jmp short NOTEPAD.《ModuleEntryPoint》《====中断在此处,还原代码 0043399B EC in al,dx 0043399C |. 6A FF push -1 0043399E |. 68 503C4500 push NOTEPAD.00453C50 还原00433999处代码代码,EB FE改为55 8B,接下来就要按照FLY等大虾们的方法了。在接下来的步骤中前一部分可以参考Fly的《壹次脱壳法——Armadillo 双进程标准壳 快速脱壳》,我们从Magic Jump,避开IAT加密开始,取消以前断点,下断:BP GetModuleHandleA 5, 77E59F98 /0F84 23060000 je kernel32.77E5A5C1《====中断在此处,注意看堆栈 77E59F9E |FF7424 04 push dword ptr ss: 77E59FA2 |E8 55080000 call kernel32.77E5A7FC 77E59FA7 |85C0 test eax,eax 在这里中断若干次,注意堆栈窗口的变化,当出现: ...... 0012BF20 00AAC807 返回到 00AAC807 来自 kernel32.GetModuleHandleA 0012BF24 00ABD6C8 ASCII "kernel32.dll" 0012BF28 00ABE67C ASCII "VirtualAlloc" 0012BF20 00AAC824 返回到 00AAC824 来自 kernel32.GetModuleHandleA 0012BF24 00ABD6C8 ASCII "kernel32.dll" 0012BF28 00ABE670 ASCII "VirtualFree" 0012BC98 00A9799B 返回到 00A9799B 来自 kernel32.GetModuleHandleA 0012BC9C 0012BDD4 ASCII "kernel32.dll" 然后Alt F9返回, 00A97995 FF15 C480AB00 call dword ptr ds: ; kernel32.GetModuleHandleA 00A9799B 8B0D E011AC00 mov ecx,dword ptr ds:《====返回到这里 00A979A1 89040E mov dword ptr ds:,eax 00A979A4 A1 E011AC00 mov eax,dword ptr ds: 00A979A9 393C06 cmp dword ptr ds:,edi 00A979AC 75 16 jnz short 00A979C4 00A979AE 8D85 B4FEFFFF lea eax,dword ptr ss: 00A979B4 50 push eax 00A979B5 FF15 CC80AB00 call dword ptr ds: ; kernel32.LoadLibraryA 00A979BB 8B0D E011AC00 mov ecx,dword ptr ds: 00A979C1 89040E mov dword ptr ds:,eax 00A979C4 A1 E011AC00 mov eax,dword ptr ds: 00A979C9 393C06 cmp dword ptr ds:,edi 00A979CC 0F84 AD000000 je 00A97A7F《====Magic Jump,修改为JMP 00A979D2 33C9 xor ecx,ecx 00A979D4 8B03 mov eax,dword ptr ds: 修改了上面的Magic Jump后,清除所有断点,Alt M ,在401000上下 内存访问断点,F9运行,这次中断到了OEP,然后运行ImportREC,选择324这个进程,OEP填:10CC,RVA:72EC,SIZE:244,然后“Get Imports”,再按“Show Invalid”地址,剪掉修复抓取文件,程序能够正常运行,至此脱壳完毕 !第一次用OD脱壳,感觉就是爽,和Softice比起来,感觉OD脱壳很方便.
OD手动脱壳的一般步骤是那些
1.首先用查壳软件,查软件是什么壳。查明后,把要脱壳的软件放入OD中,以压缩壳为例,F8单步走,只能让程序往前跳,不能让程序往后跳,用F2或F4下断点就可以。当达到OEP后,就可以用PE工具脱壳了。建议看看三人行以前做的脱壳初中高教程。以前爱国者安全网。
如何给程序脱壳
你这个问题太过于笼统,其实破解中的脱壳是一个非常复杂的过程,有些壳很容易脱掉,在网上也可以找到相应的脱壳机,有些复杂的壳就需要手动脱壳,我觉得脱壳也可以成为一门复杂的学科,毕竟要破解就要学会脱壳,以前我也曾经看过很多关于脱壳的文章和视频但是由于编程技术不是很好所以总是似是而非,有一日看到一个视频,终于有了一个脱壳的思路,留下你的邮箱我可以给发过去,或者你加我的号码240410420 ,这个视频的文字教程如下:脱壳多种方法总结篇一.脱壳基础知识要点1.PUSHAD :(压栈) 代表程序的入口点2.POPAD :(出栈) 代表程序的出口点,与PUSHAD想对应.看到这个,就说明快到OEP了.3.OEP:程序的入口点,软件加壳就是隐藏OEP.而我们脱壳就是为了找OEP.二.脱壳调试过程中辨认快到OEP的简单方法下面二个条件是快到OEP的共同现象:若出现下面情况时,说明OEP就要到了:1. OD跟踪过程中如果发现:popad popfd 或popad2.同时,紧接着,有retn ,jmp等其它跳转指令,发生跨段跳跃时.说明OEP马上到了.三.脱壳必需牢记的要领1.单步往前走,不要让程序向上走,遇到向上跳时,在下一句按F4,运行到所选.2.刚载入程序,在附近就call时,我们按F7跟进去.3.若跟踪时,运行某个call程序就运行时,这个call也用F7进入.4.在跟踪时,出现比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN同时发生大跨段跳转时,说明很快就到OEP了.四.常用脱壳方法总结------------------方法一:单步跟踪法------------------介绍:这是最通用的方法,对于未知壳,基本都用这种方法,这种方法过程比较麻烦,要一步一步的跟踪分析,要有一定的耐心.1.用OD载入,选"不分析代码"2.单步向下跟踪按F8,实现向下的跳.不让程序往回跳.3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——》运行到所选)4.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易运行.5.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入.6.一般遇到很大的跳转(跨段跳),比如 jmp XXXXXX 或 JE XXXXXX 或有RETN的一般很快就会到程序的OEP。-----------------方法二:ESP定律法(ESP与EIP都为红色)-----------------介绍: 这种方法可以脱大部的压缩壳和少数加密壳,操作起来比较简单,脱壳速度也相对比较快.1.开始就点F8向下走,注意观察OD右上角的寄存器中ESP有没突现(变成红色)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者hrXXXXXXXX),按回车!3.选中下断的地址,断点---》硬件访---》WORD断点。4.按一下F9运行程序,直接来到了跳转处,按下F8向下走,就到达程序OEP。-----------------方法三:内存镜像法-----------------介绍:也是一种比较好用的脱壳方法,大部分的压缩壳和加密壳用内存镜像法能快速脱掉.非常实用.1.用OD打开,设置选项——调试选项——异常,忽略所有异常(也就是把里面的忽略全部√上),然后CTRL+F2重载下程序!2.按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点.3.接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE,按F2下断点!然后按SHIFT+F9,直接到达程序OEP!另外:加入内存模块中看到多个PE代码就从第一个PE下面的代码下断点,shift+F9,单步进行,看到INC 的地址,查找到这个地址一般就为程序入口,可能会因为有多个PE所以没有解密,单步进行知道程序返回到这个入口,然后脱壳----------------方法四:一步到OEP----------------介绍:这是一种巧方法,脱壳速度最快,前提是要知道这个壳的特征,利用这种壳的共性快速找到程序的OEP.这种方法只用于少数壳.1.开始按Ctrl+F,输入:popad,然后按下F2下断,按F9运行到此处.2.很快来到大跳转,按F8向下走,来到OEP.----------------方法五:利用内存异常(选项--异常,中下面勾都去掉)----------------shift+F9 几次 运行后记住运行了几次后打开的软件重新导入,shift+F9 运行比刚才少一次,观察od右下角SE异常,记下前面地址,ctrl+G,输入这个地址F2下断点,shift+F9运行到此处,取消断点然后单步F7跟踪到oep入口处,LE修改大小然后转存,然后用ImportRE修改OEP,然后将刚才转存的文件输入即可。
UPX脱壳修改
1.首先不知道你是用什么软件脱的是OD还是专用的脱壳机。2.脱壳后能不能运行,是否进行IAT修复。3.文件是否有自校验的现象。4.脱壳后,建议使用FixRes 修复下资源,然后再使用Restorator 修改。Restorator不好用就换eXeScope
脱壳!脱壳!脱壳!我拿自动脱壳的没有拖成,教我手动脱壳吧,小弟感激不尽
先用PEID对它扫描,底下的框框里有壳的名字,(比如ASPack 2.12-》 Alexey Solodovnikov,ASPack 2.12 就是壳)然后下载这个,在cmd里执行它,(后面带一个 -?),会看到脱壳的选项,一般加壳软件都有脱壳功能,照格式脱就得了。
脱壳和破解
壳其实是一种对软件保护,有压缩壳和加密壳。壳的这种保护,也就是说对软件程序的版权和资源进行保护,防止它人侵权、修改等等。破解,简单的说是有款软件你非常喜爱,但是你必须要注册码、序列号才能长期使用(这当然是要花钱,才能注册的哟),而你又不想花钱去买、、、、、、所以才出现了破解。也就是先除去软件的保护---》壳---脱壳(脱壳后才能修改软件)---破解(找注册码、序列号)==脱壳破解
更多文章:
iphonese2二手卖多少钱(新iPhone se2用了一个月,可以卖多少钱)
2024年7月19日 10:59
940mx2g独显怎么样(GT940MX 2G独显,这显卡怎么样,什么档次的游戏就无法运行)
2023年1月15日 13:45
96年摩托罗拉手机价格(96年摩托罗拉StarTac 328刚出来时的价格是多少是当年的价格哈!)
2024年8月25日 12:25
菲星迷你sdv310?菲星HDV-D120A这个型号的DV 它的质量怎么样效果如何
2024年7月20日 08:55
盖世神医陈天选方糖免费阅读全文(主角是陈天选方糖的小说叫什么名字)
2024年2月7日 15:10
小米5换电池胶带断了(小米手五拆电池的时候把胶带拉断了怎么办)
2023年3月19日 02:15
神舟k580s升级(英雄联盟提示显卡驱动要升级2.0,我的电脑是神舟K580S-i5,哪位大神帮帮我,我是个电脑白痴,说普通点)
2024年4月2日 21:35