轻松手动脱壳ASPack 2.12 Alexey Solodovnikov

合集下载

软件破解脱壳法

软件破解脱壳法

软件破解脱壳法什么是脱壳技术?在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。

它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。

就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。

由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。

就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。

从功能上抽象,软件的壳和自然界中的壳相差无几。

无非是保护、隐蔽壳内的东西。

而从技术的角度出发,壳是一段执行于原始程序前的代码。

原始程序的代码在加壳的过程中可能被压缩、加密……。

当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。

软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。

关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。

(一)壳的概念:作者编好软件后,编译成exe可执行文件。

1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。

2.需要把程序搞的小一点,从而方便使用。

于是需要用到一些软件,它们能将exe可执行文件压缩。

3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。

实现上述功能,这些软件称为加壳软件。

(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。

1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。

2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。

language2000中文版(专门检测加壳类型)。

脱壳入门----脱ASPack壳保护的DLL

脱壳入门----脱ASPack壳保护的DLL

脱壳⼊门----脱ASPack壳保护的DLL前⾔结合脱dll壳的基本思路,对看雪加密解密⾥的⼀个ASPack壳保护的dll进⾏脱壳分析。

脱壳详细过程寻找程序的OEP先将⽬标DLL拖⼊OD,来到壳的⼊⼝处。

然后利⽤堆栈平衡原理在pushad后,对栈顶下硬件访问断点。

之后我们直接运⾏程序,当程序popad后会被断下,观察得出OEP的RVA为0x1240。

找到壳的重定位代码我们在来到程序真正的⼊⼝点后可以看到⼀些会被重定位的代码,我们选择最近的⼀个会进⾏重定位的代码记住其RVA。

本例⼦中我们选的是RVA为0x1253的代码。

然后我们重新加载dll,我们先对刚刚记住的那个RVA下内存写⼊断点,程序会先断在壳代码解压区块处我们需要在壳代码将所有的区段解压缩后对刚刚记住的那个RVA再下内存访问断点,然后程序会断在壳的重定位代码处。

跳过重定位代码并dump程序我们只需要将修正重定位数据的代码nop去就可以让重定位代码⽆法发挥作⽤。

nop去重定位代码后我们继续运⾏程序,程序会停在我们寻找OEP时设置的断点处。

然后我们就可以⽤LordPE来dump⽂件了,将dump的⽂件命名为ASP.dll重建输⼊表在重建输⼊表前我们需要知道原程序IAT表的位置,我们可以在OD中Alt + M查看内存然后我们在主模块可以看到各个区块,⼀般IAT表都是在.rdata区块处。

我们在此处右击然后选择在cpu数据窗⼝查看,然后将cpu数据窗⼝的显⽰形式调为地址。

我们可以看到在区块⼀开始就是IAT表。

此IAT表的RVA为0x7000。

在查找IAT表⽰还要注意,不要将原程序的IAT表与壳的IAT表搞混。

在区块.aspack处也存在⼀个IAT,这个IAT是壳代码的。

获取IAT的RVA后我们可以打开ImportRE⼯具重建输⼊表,我们在OEP处填写1240,在IAT 的RVA处填写7000,⼤⼩尽量填⼤点。

然后点击获取输⼊表。

获取输⼊表后我们发现有好多⽆效的这是因为我们IAT的⼤⼩填的过⼤,我们只需点击显⽰⽆效函数,然后右击剪切/删除指针数据即可去除⽆效数据。

破解各种软件注册码

破解各种软件注册码

一、准备好常用破解工具,1、查壳工具:PEiD 0.952、脱壳调试:OllyICE v1.10(俗称OD,可下载一些OD插件保存在程序文件目录下的plugin文件夹中,启动OD时会自动链接插件)3、Win32反汇编:WinHex14.2(本帖暂用不着)4、修复工具:ImportREC V1.6(本帖暂用不着)5、注册机编写:keymake够了,初学不宜太多。

新手所有的工具在小生工具包里都有(赞下小生同鞋的无私奉献)二、壳的概念:关于壳的介绍文章很多,很多初学者还不知道壳是什么,那么你就暂且这样通俗的去理解:壳就是软件的包装外壳。

三、脱壳:顾名思义,我就不多说了。

四、调试:用OD调试程序的进程,寻找关键(算法)CALL,修改有关汇编语言达到软件注册或破解的目的。

五、有人问:我不懂汇编语言和算法怎么办?我告诉你,没关系,首先你必须从简单的、好欺负的软件入手(初学者千万别找年轻的、经常更新的或高版本的软件),否则,你只会以失败而告终。

六、如果你是第一次学破解,我告诉你一个方法,只要你按如下操作一般都能成功(有的新版本软件除外):1、首先注册软件,查看软件弹出的有关注册失败的信息框的内容。

2、查壳:有壳脱壳,无壳用OD载入。

3、手动脱壳基本方法:从OD载入软件程序后弹出是否分析对话框,点“否”,停在程序壳的入口(含有pushad等类似字符)。

接下来我们的目的是要寻找第一个popad 。

(1)首先按F8,接下来或近处便是CALL,此时的CALL或是离这里很近的CALL必须按F7,否则你就掉入陷井,后面遇到CALL一旦掉入也没关系,你先记下来,重新载入程序(按CTRL+F2),再遇到这个时就用F7进入。

(2)出现往回跳转时,即红色线显示跳转实现,必须在下一行点左鍵,然后按F4步过,灰色为跳转未实现,可不理它照样F8。

(3)其他全部F8,一路下去必定能找到第一个popad,找到后离此不远必定有一个大的跳转,一旦跳转来到有push ebp字样,说明壳己走完到主程序(OEP),在此用OD插件→ollyDump→Dump debu…→Dump脱壳→保存。

破解注册码详解

破解注册码详解

本帖就是解决新手的疑问,让你走出迷茫,让你知道如何学破解。

0基础一样能学的很好。

大牛=10%天分+40%耐心(这是帖子写完成后加的一句,其实你能认真看完这帖子你就够有耐心了)+50%的长期努力。

最近还是看到很多新朋友在问。

1、“新手怎么学破解啊?”(这是标准的伸手党,baidu google其实很好用)2、“哎呀XX大牛,我什么基础都没有啊我不会汇编,不会C更不会C++还不会…………总之高手会的我都不会,我能学么?”(明确的告诉你,你能!你不和唐僧一样罗嗦的话你一定能。

)3、某白发帖问曰:“X X大牛,这软件你能帮我看看吗?我尝试了N天还是没有搞定,这是软件地/XXX/XXX.rar 搞定了发到我邮箱里吧,我邮箱是XXXXX@。

”结果嘛,我想大家猜的到。

不过这牛人次日在投诉区发帖曰:…这是什么XX斑竹啊,我只是想问问这个软破解的思路。

干嘛随便删我帖子还给我扣分!这是什么XX论坛,什么XX斑竹。

…其实嘛,所有的技术都是从基础开始的,不要去妄想那空中的楼阁,也不要想速成。

在这明确的告诉大家,其实大牛们最讨厌的就是问这些本不该问的问题的人。

因为这些人根本就没有认清现实,没有看到成功背后的一些东西。

他们只看到了10%+40%,认为自己也可以凭借这些做到。

偷偷暴下料。

其实在去年的时候,小生同鞋,逆流师傅等现在的大牛还都是些小菜哦,现在呢?嘿嘿~~好了,上面叽咕了这么多。

也算是考验下大家的耐心吧。

嘿嘿。

其实学习的首要条件是兴趣!!兴趣越大你的投入就更多。

我相信下面这个教程足够调起你的兴趣了,看完后你会发现,原来破解其实并没有那么难。

一、准备好常用破解工具,1、查壳工具:PEiD 0.952、脱壳调试:OllyICE v1.10(俗称OD,可下载一些OD插件保存在程序文件目录下的plugin文件夹中,启动OD时会自动链接插件)3、Win32反汇编:WinHex14.2(本帖暂用不着)4、修复工具:ImportREC V1.6(本帖暂用不着)5、注册机编写:keymake够了,初学不宜太多。

浅谈ASProtect脱壳

浅谈ASProtect脱壳

1. 一般的壳,没有Stolen Code的情况ASProtect 1.2 / 1.2c-> Alexey SolodovnikovASProtect 1.23 RC1 -> Alexey SolodovnikovASProtect 2.3 SKE build 06.26 Beta [Extract]对于这些壳一般脱壳方法:忽略除了内存访问之外的所有异常,直接Shift+F9运行。

运行到最后一次异常后,打开内存镜像,来到00401000处,F2断点,F9中断,到达OEP注意:判断最后一次异常的方法:注意堆栈,从硬盘指纹出现,直到没有了硬盘指纹后,那么就是最后一次异常保存注册名:一般的话,当出现硬盘指纹第二次后,打开内存,00401000处,F2断点,此时中断下来的地方,对应的move语句里面的就是保存的注册名的地方2. 有Stolen Code的情况下ASProtect 1.23 RC4 - 1.3.08.24 [1]方法一:忽略除了内存访问的所有异常,开始Shift+F9运行。

当出现硬盘指纹的第二次的时候,打开内存,00401000处,F2断点,F9中断下来!那么此时的mov语句里面的值对应的就是保存“注册名”的地方!此时继续,来到最后一次异常!在下面的第一个retn处,F2断点,F9中断下来!此时,注意堆栈:ASCII码的第二行所对应的地址,形如:0012FF60 00400000 crysb.004000000012FF64 574F42C80012FF68 0012FFA4 //这里的地址 0012FF68此时命令行下:hr 0012FF68 F9运行,中断下来后!取消硬件断点,F7跟进一下此时F8单步一下,这个对应的内存地址就是以壳解壳的区域,此时我们可以做的1.以壳解壳:到达上面的一步,此时Lord—PE脱壳,首先是完整脱壳,接着是区域脱壳区域脱壳的地址要包含我们此时到达对应的内存地址接着就是利用PE编辑器载入完整脱壳的程序,选择最后一个区段,从磁盘载入刚才区域脱壳的文件,载入完成后,修改VA和区段名VA=区域脱壳的地址减去基址接着就是重建PE上述完成后,此时就是修复的工作此时用AsprDBGr.exe 载入加壳程序,找到OEP地址,REC修复的时候选择最上面一个进程,此时填入OEP,IAT自动搜索后,修复了IAT后,此时不要抓取修复把OEP地址改成区域脱壳到达的地址,此时抓取修复!此时OD打开现在抓取修复好了的文件!刚才记录的保存注册名的地方,命令行下DD 注册名地址,在下面找一个全0的区域,二进制编辑写入自己的注册名,记下这个内存地址。

破解万象2008系统

破解万象2008系统
00536D36 |. EB 6B jmp short test.00536DA3
00536D38 |> 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00536D3B |. BA 18705300 mov edx,test.00537018 ; ok
(但是网吧有还原,这个方法不行,继续看后面的)
经过数次的失败,总结出解除万象的3个方法:
1.CSetup.exe 万象的设置器(反编译万象2008的设置工具,读出密码或者破解为无密码登陆,如同万象无密码登陆器2004)
2.Clsmn.exe 万象屏幕锁(反编译,找到解除鼠标锁的方法,或者找到突破密码错误的方法)
(因为loguser在运行的过程中,无限的写注册表,普通的修改一经修改立即就会被他改回。)
注销后发现鼠标还是被锁定状态,因为winlogon中的的loguser模块又被激活了,并且如果卸载该模块winlogon则会崩溃掉。
笔者:其实强制卸载万象还是很简单的,冻结loguser线程后 删除注册表,再更名 Clsmn.exe ,然后重新启动计算机,你就会发现万象不见了。
破解万象2008系统
笔者认为网吧破解,必须达到一下几点.
1。可行性
2。及时性
3。通用性
4。技巧性
下面笔者带领读者们一起“铲除”万象2008
万象2008相关了解:
据笔者分析,发现
万象2004后几个版本,采用了虚拟SHELL技术,率先加载到系统内核,如果强行终止万象进程只会使系统崩溃。
00536D1F |. BA F06F5300 mov edx,test.00536FF0 ; 密码不正确
00536D24 |. B8 04705300 mov eax,test.00537004 ; ids_clt52

软件汉化教程(完整版)

软件汉化教程(完整版)

软件汉化全教程初识资源『资源简介』软件界面上的各种文字、图像、图标等,在编程的时候根据特定的格式分门别类地存放在软件里面,这些特定的格式就叫“资源”(Resource)。

软件资源分为标准资源和非标准资源(简称非标),标准资源通常可以通过PE类资源查看工具(如:PE Explorer、ResScope 等)可视化查看编辑(VB除外),而非标目前还无法实现可视化预览。

特别注意的是VB 程序资源比较特殊,上述分类概念不适用,但汉化人一般把VB 窗体汉化器等提取的窗体资源称为标准资源,而通过点睛字符替换器提取的VB 字串、Unicode 字串和ASCII 字串均称为非标。

常见的标准资源通常有Bitmap(位图)、Menu(菜单)、Dialog(对话框)、String(字符串)、RCData(RC-数据)、Cursor(光标)、Accelerator(加速器)、Icon(图标)、Version(版本)、Toolbar(工具栏)、Form(窗体),其中RC-data多见于Delphi程序中,Form多见于VB程序中。

非标资源主要包括ASCII字串、Unicode字串两大类。

标准资源汉化后,在软件界面或调用信息时显示、但又不出现在上述标准资源中的字串多数属于非标资源。

『汉化资源分布』由于编写软件所使用的编程工具不同,软件中的汉化资源发布位置也不尽相同,常见如下:1. VC 类标准资源由Microsoft Visual C++ 编写,汉化资源一般分布于Menu、Dialog、String 等;2.Delphi 类标准资源由Borland Delphi 编写,汉化资源一般分布在Rcdata 和String 中;3.VB 类标准资源由Microsoft Visual Basic 编写,汉化资源一般出现在Form 窗体中;3.非标资源Unicode 字串和ASCII 字串,后者又可细分为VB 字串、Delphi 字串和其他ASCII 字串。

常见几种软件脱壳方法

常见几种软件脱壳方法

常见⼏种软件脱壳⽅法⼀、概论壳出于程序作者想对程序资源压缩、注册保护的⽬的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北⽃)" ..."ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减⼩程序体积对资源进⾏压缩,加密壳是程序输⼊表等等进⾏加密保护。

当然加密壳的保护能⼒要强得多!⼆、⼯具的认识OllyDBG ring3 shell层级别的动态编译⼯具、PEid、ImportREC、LordPE、softIce ring0级别调试⼯具三、常见⼿动脱壳⽅法预备知识1.PUSHAD (⼊栈/压栈)代表程序的⼊⼝点,2.POPAD (弹栈/出栈)代表程序的出⼝点,与PUSHAD想对应,⼀般找到这个OEP就在附近3.OEP:程序的⼊⼝点,软件加壳就是隐藏了OEP(或者⽤了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以⽴刻脱壳。

⽅法⼀:单步跟踪法1.⽤OD载⼊,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下⼀句代码处按F4(或者右健单击代码,选择断点——>运⾏到所选)4.绿⾊线条表⽰跳转没实现,不⽤理会,红⾊线条表⽰跳转已经实现!5.如果刚载⼊程序,在附近就有⼀个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运⾏到某个CALL程序就运⾏的,就在这个CALL中F7进⼊7.⼀般有很⼤的跳转(⼤跨段),⽐如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的⼀般很快就会到程序的OEP。

怎样脱用 Aspack2.12 加的壳

怎样脱用 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

5款常用加壳软件对比

5款常用加壳软件对比

5款常用加壳软件对比现在壳的发展一个趋势就是虚拟机保护,利用虚拟机保护后,能大大提高强度,因此建议尽可能使用此类技术保护软件。

如Themida ,WinLicense,VMProtect r等壳带有虚拟机保护功能,因此得用好其SDK。

本文总结了5款常用的加壳软件并进行了对比。

VMProtectVMProtect是一款纯虚拟机保护软件,官方链接:www.VMProtect.ru。

它是当前最强的虚拟机保护软件,经VMProtect处理过的代码,至今还没有人公开宣称能还原。

但也有缺点,就是会影响程序速度,因此在一些对速度要求很高的场合就不适合用了。

VMProtect 1.22.3之前是免费版,可以支持EXE,DLL等文件。

更高版本需要购买,其支持驱动的保护。

现在流行的做法,先用VMProtect将你的核心代码处理一下,再选用一款兼容性好的壳保护。

[现在最新的VMProtect是v2.12,慧都控件网提供免费下载]1.关键代码自己定位VMProtect并没有提供使用说明,必须告诉VMProtect你要加密的代码具体地址,这对使用者有一定的要求,至少要懂一些跟踪技术,可以用调试器,如OllyDbg跟踪到程序需要保护的地址,然后添加地址到VMProtect。

在这以一个记事本程序为例来演示一下使用方法。

运行VMProtect后,打开NOTEPAD.EXE文件。

单击Dump标签,输入要加密的起始地址,光标来到要加密代码起始地址后,点击菜单“project/new procedure”,会出现一个新的项目,如下图。

2.用SDK标记代码VMProtectv1.2以上支持SDK了,可以编程时插入一个标记,然后在加密时,VMProtect会认出这些标记,并在有标记的地方进行保护。

在程序源码中,用这对标签将一些核心代码包含,编译成EXE文件。

然后用VMProtec t打开EXE,单击“Project”菜单下的“New procedure”或者单击工具栏中的“New procedure”按钮,在弹出的添加地址窗口中会自动将SDK定义代码的地址填上。

去壳的步骤 六

去壳的步骤 六

去壳的步骤六如何将EXE安装文件脱壳和破解--之解决办法步骤1 检测壳壳的概念:所谓“壳”就是专门压缩的工具。

这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。

壳的作用:1.保护程序不被非法修改和反编译。

2.对程序专门进行压缩,以减小文件大小,方便传播和储存。

壳和压缩软件的压缩的区别是压缩软件只能够压缩程序而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行下面来介绍一个检测壳的软件PEID v0.92这个软件可以检测出450种壳新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。

另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi 等。

支持文件夹批量扫描我们用PEID对easymail.exe进行扫描找到壳的类型了UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo说明是UPX的壳下面进行步骤2 脱壳对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。

这个过程就叫做脱壳。

脱壳成功的标志脱壳后的文件正常运行,功能没有损耗。

还有一般脱壳后的文件长度都会大于原文件的长度。

即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。

关于脱壳有手动脱壳和自动脱壳自动脱壳就是用专门的脱壳机脱很简单按几下就OK了手动脱壳相对自动脱壳需要的技术含量微高这里不多说了UPX是一种很老而且强大的壳不过它的脱壳机随处就能找到UPX本身程序就可以通过UPX 文件名-d来解压缩不过这些需要的命令符中输入优点方便快捷缺点DOS界面为了让大家省去麻烦的操作就产生了一种叫UPX SHELL的外壳软件UPX SHELL v3.09UPX 外壳程序!目的让UPX的脱壳加壳傻瓜化注:如果程序没有加壳那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。

脱壳理论教程[看雪篇]

脱壳理论教程[看雪篇]

脱壳理论教程[看雪篇]第⼀课 PE格式要想学脱壳,第⼀步就得掌握PE格式,PE是Portable Executable File Format(可移植的执⾏体)简写,它是⽬前Windows 平台上的主流可执⾏⽂件格式。

Microsoft Visual C++提供的WINNT.H⾥有PE数据结构的完整定义。

推荐⽂档:ah007翻译的“PE⽂件格式”1.9版qduwg翻译的PE⽂件格式Iczelion's 的PE⽂件格式PE结构各字段偏移参考微软官⽅提供的PE⽂档(Revision 8.0 - May 16, 2006)学习PE格式的⽅法是⾃⼰先准备⼀个⼗六进制⼯具,如HexWorkshop,WinHex,⽤这些⼯具打开⼀个EXE⽂件对照着学。

强烈推荐你⽤Stud_PE v.2.2.0.5这款⼯具辅助学习PE格式。

PE格式学习的重点是在输⼊表(Import Table)这块。

Stud_PE⼯具界⾯:PE结构图:第⼆课 SEH技术结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。

SEH是Windows操作系统的⼀种系统机制,与特定的程序设计语⾔⽆关。

外壳程序⾥⼤量地使⽤了SEH,如果不了解SEH,将会使你跟踪⼗分困难。

SEH in ASM 研究(⼀)by humeSEH in ASM 研究(⼆)by humeStructured Exception Handling加密与解密⼆版菜鸟学习笔记(2) - SEH 结构化异常处理 by ytcswb由于 Ollydbg对SEH处理异常灵活,因此脱壳⽤Ollydbg会⼤⼤提⾼效率。

附CONTEXT结构环境:代码:1. 什么是壳?在⼀些计算机软件⾥也有⼀段专门负责保护软件不被⾮法修改或反编译的程序。

它们⼀般都是先于程序运⾏,拿到控制权,然后完成它们保护软件的任务。

由于这段程序和⾃然界的壳在功能上有很多相同的地⽅,基于命名的规则,就把这样的程序称为“壳”了。

破解之多种方法脱ASP壳

破解之多种方法脱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_.0040D072 0040D015 BB EDFFFFFF mov ebx,-13注意这个call,要用F7进入,不然就要跑飞(程序运行起来)继续F8步进,直到0040D12F /74 2E je short NotePad_.0040D15F 0040D131 |78 2C js short NotePad_.0040D15F 0040D133 |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。

教你如何破解各种网络验证

教你如何破解各种网络验证

教你如何破解各种⽹络验证教你如何破解各种⽹络验证⽂件夹内有⼏个⽂件,分别是main.dat,start.exeOD加载start.exe,退出,弹出软件窗⼝,OD下断CreateProcess,发现其打开的是main.dat,⽤UE查看main.dat,原来是个可执⾏⽂件被改名了,于是改名为main.exe。

PE查壳ASPack 2.12 -> Alexey Solodovnikov直接cooldumper搞定开始分析点击登录,出现MessageboxW,未注册⽤户,窃喜,bp MessageBoxW.果断断住,看堆栈调⽤情况0013F550 0065A066 /CALL 到MessageBoxW0013F554 007802CC |hOwner = 007802CC ('三国哈哈1.17',class='TLoginForm',parent=018803B2)0013F558 00C6F33C |Text = "?,B4,"",D7,"",A2,"",B2,"嵊?,BB,"?0013F55C 00C76544 |Title = ""D7,"",A2,"意"0013F560 00000000 \Style = MB_OK|MB_APPLMODAL0013F564 0013F93C 指向下⼀个SEH 记录的指针0013F568 00546D1F SE处理程序0013F56C 0013F5F80013F570 0013F7980013F574 0044E700 dumped_.0044E7000013F578 00BC67C0 ASCII "pkD"0013F57C 000000000013F580 000000000013F584 000000000013F588 000000000013F58C 000000000013F590 000000000013F594 000000000013F598 000000000013F59C 000000000013F5A0 00C6F33C ASCII "*g鑜孮(u7b"0013F5A4 00C765440013F5A8 000000000013F5AC 000000000013F5B0 00C8AA7C UNICODE "d00b-207dcdd2"0013F5B4 00C8AA1C UNICODE "D00B-207DCDD2"0013F5B8 00C8AA4C UNICODE "d00b-207dcdd2"0013F5BC 00C8EC14 UNICODE "D:\sg117\script\"0013F5C0 000000000013F5C4 000000000013F5C8 000000000013F5CC 000000000013F5D0 00CA581C UNICODE "D:\sg117\upup.exe"0013F5D4 000000000013F5D8 00CA57E4 UNICODE "D:\sg117\start.exe"0013F5DC 00C8EC14 UNICODE "D:\sg117\script\"0013F5E0 000000000013F5E4 00CA5774 UNICODE "D:\sg117\updata.exe"0013F5E8 000000000013F5EC 000000000013F5F0 00C8A9EC UNICODE "D00B-207DCDD2"看到最后⾯⼏⾏有D00b什么的,是软件上提⽰的机器码。

脱壳教程

脱壳教程

破解预备知识一、机械码,又称机器码.ultraedit打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码.修改程序时必须通过修改机器码来修改exe文件.二、需要熟练掌握的全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call 调用子程序je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈三、常见修改(机器码)74=>75 74=>90 74=>EB75=>74 75=>90 75=>EBjnz->nop75->90(相应的机器码修改)jnz -> jmp75 -> EB(相应的机器码修改)jnz -> jz75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)四、两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能...,"Function Not A vaible in Demo" 或"Command Not A vaible" 或"Can't save in Shareware/Demo"等(我们希望把它跳过,不让它出现)xxxxxxxxxxxx 正确路线所在2.修改为nopje(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转)nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处xxxxxxxxxxxx 正确信息,例如:注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)xxxxxxxxxxxx 出错信息(我们希望不要跳到这里,不让它出现)五、爆破无敌口诀背会此口诀,天下无敌,以后慢慢琢磨,仔细体会,收益多多。

脱壳方法

脱壳方法
///////////////////////////////////////////////////////////////////////////////////////
手脱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修复

脱壳工具大汇总

脱壳工具大汇总
AsprDbgr v1.0b
ASProtect 1.23脱壳辅助工具
Armadillo壳
Armadillo find protected 1.8
Armadillo find protected 1.8 by vel
检测Armadillo版本号及其保护类型
ArmaG3ddon v1.9
Armadillo脱壳机,支持3.78~ 7.7
ArmaGUI 1.5.4
Armadillo 3.xx/4.xx脱壳机
dilloDIE 1.4
dilloDIE 1.5
dilloDIE 1.6
Armadillo 4.xx unpacker by mr_magic
一款脱Armadillo 4.xx的脱壳机
ArmInline V0.71
ArmInline v0.96f
支持Shrinker 3.2
yP壳
Unpacker for yP 1.02
支持Yoda Protector 1.02,带源码
安装程序
UniExtract 1.42
它能解开现在流行打包工具比如:NSIS,Inno等等。
/
Wise UNpacker 0.90A
vera 0.15
ASProtect detector v0.15,一款PEiD插件,用来识别ASProtect版本号
Stripper 2.07ht
Stripper 2.11 RC2
stripper v2.13 (last beta)
可以全自动脱ASProtect1.2x的壳,支持EXE和DLL文件,工作平台Windows 2000/XP
DBPE(幻影壳)
undbpe 1.06
幻影2.xx脱壳机

利用OllyDbg找出旋风中文编辑器的注册码

利用OllyDbg找出旋风中文编辑器的注册码
3.打开ollydbg1.10,载入脱壳后的程序文件,执行后程序会弹出要求注册的对话框,先不去管它,点击ollydbg菜单中的查看选项,然后选择执行模块,选中MSVBVM60.dll,双击回到ollydbg主窗口,右键选择搜索当前模块中的名称,下拉菜单,找到__vbaStrCmp,在此下断,之后回到程序中在注册对话框中填写用户名为:gufengpiaoying,注册码为:777888999,确定之后,ollydbg自动中断来到以下地址:
还好没追进去,不然你会头痛P-CODE的。(c)Copyleft2003-2007,EvilOctalSecurityTeam.
ThisfileisdecompiledbyanunregisteredversionofChmDecompiler.
Regsiteredversiondoesnotshowthism8 PUSH DWORDPTRSS:[ESP+8]
6A9F4817 FF742408 PUSH DWORDPTRSS:[ESP+8]
6A9F481B 6A00 PUSH 0
6A9F481D E803000000 CALL MSVBVM60.__vbaStrComp
VarBstrCmp 比较字符串(Oleaut32.dll)
VarCyCmp 比较字符(Oleaut32.dll)
我经常用的差不多就这么些,本次破解并没有穷追注册算法,如果哪位朋友有兴趣破出来别忘了写个注册机给我啊!顶部 evilbogy 发布于:2005-06-0701:59 [1楼]
而此时我们看右边寄存器部分赫然提示:
EAX001C7DCCUNICODE"777888999"
ECX001C173CUNICODE"2904LT9QNZ84A1MC"

使用OllyDbg从零开始Cracking 第三十五章-手脱ASPack

使用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这一项我们不需要修改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0045212F 74 2E je short 0045215F
00452131 78 2C js short 0045215F
00452133 AC lods byte ptr [esi]
00452334 |3985 45050000 cmp [ebp+545], eax
0045233A |75 24 jnz short 00452360
0045233C |57 push edi
【详细过程】
脱壳前先用PEID查壳,得出为ASPack 2.12 -> Alexey Solodovnikov加壳类型。使用OD脱壳可增强手动脱能力
00452001 > 60 pushad ; pushhad关键字 F8跳过
00452134 3C E8 cmp al, 0E8
00452136 74 0A je short 00452142
00452138 EB 00 jmp short 0045213A
00452152 8906 mov [esi], eax
00452154 83C3 05 add ebx, 5
00452157 83C6 04 add esi, 4
0045215A 83E9 05 sub ecx, 5
0045215D ^ EB CE jmp short 0045212D ; 不能让他朝回跳到0045212D,要在下一句处下断按F4
0045215F 5B pop ebx ; 按F4
00452160 5E pop esi
00452177 8BB5 52010000 mov esi, [ebp+152]
0045217D C1F9 02 sar ecx, 2
00452180 F3:A5 rep movs dword ptr es:[edi], dword p>
文章标题】: 轻松手动脱壳ASPack 2.12 -> Alexey Solodovnikov
【文章作者】: cnstars
【作者邮箱】: cnstars@
【作者QQ号】: 8202655
【软件名称】: *******投票机
【软件大小】: 0.835M
【下载地址】: 自己搜索下载
00452182 8BC8 mov ecx, eax
00452184 83E1 03 and ecx, 3
00452187 F3:A4 rep movs byte ptr es:[edi], byte ptr>
2、向未执行过的代码跳的语句按F8,往已执行过的代码跳的语句在下一句处按F4。脱壳过程中一定不能让它往执行过的代码区跳,想办法跳出循环圈,在回跳语句的下一句处按F4跳出。
--------------------------------------------------------------------------------
00452189 5E pop esi
0045218A 68 00800000 push 8000
0045218F 6A 00 push 0
00452191 FFB5 52010000 push dword ptr [ebp+152]
00452161 59 pop ecx
00452162 58 pop eax
00452163 EB 08 jmp short 0045216D
………………………进JMP后一路F8下来……………………
0045214B 24 00 and al, 0 ; 按F4
0045214D C1C0 18 rol eax, 18
00452150 2BC3 sub eax, ebx
0045200B 45 inc ebp
0045200C 55 push ebp
0045200D C3 retn ;第一次返回时,跳转到00452008
0045200E E8 01000000 call 00452014 ;只有00452002和此处是关键CALL按F7进入,其他F8跳过
………………………进CALL后一路F8下来……………………
0045212D 0BC9 or ecx, ecx
0045233D |8BD3 mov edx, ebx
0045233F |4A dec edx
0045230F |57 push edi
00452310 |8B46 0C mov eax, [esi+C] ቤተ መጻሕፍቲ ባይዱ
00452313 |0385 22040000 add eax, [ebp+422]
00452319 |50 push eax
00452197 FF95 51050000 call [ebp+551]
0045219D 83C6 08 add esi, 8
004521A0 833E 00 cmp dword ptr [esi], 0
00452002 E8 03000000 call 0045200A ; 关键CALL F7进入
00452007 - E9 EB045D45 jmp 45A224F7
0045200C 55 push ebp
0045231A |53 push ebx
0045231B |8D85 75040000 lea eax, [ebp+475]
00452321 |50 push eax
00452322 |57 push edi
00452323 |E9 98000000 jmp 004523C0
00452328 |81E3 FFFFFF7F and ebx, 7FFFFFFF
0045232E |8B85 26040000 mov eax, [ebp+426]
0045200D C3 retn
=====进入call 0045200A代码区=====
00452008 /EB 04 jmp short 0045200E
0045200A 5D pop ebp ; fjsdmp-1.00452007(按F8,向前跳的按F8,往后跳的在下一句按F4)
0045216D 8BC8 mov ecx, eax
0045216F 8B3E mov edi, [esi]
00452171 03BD 22040000 add edi, [ebp+422]
00452144 EB 00 jmp short 00452146
00452146 803E 05 cmp byte ptr [esi], 5
00452149 ^ 75 F3 jnz short 0045213E ; 不能让他朝回跳到0045213E,要在下一句处下断按F4
………………………进PUSH后一路F8下来……………………
00452305 /75 6F jnz short 00452376
00452307 |F7C3 00000080 test ebx, 80000000
0045230D |75 19 jnz short 00452328
004521A3 ^ 0F85 1EFFFFFF jnz 004520C7 ; 不能让他朝回跳到004520C7,要在下一句处下断按F4
004521A9 68 00800000 push 8000 ; 按F4下断
00452140 ^ EB EB jmp short 0045212D ; 不能让他朝回跳到0045212D,要在下一句处下断按F4
00452142 8B06 mov eax, [esi] ; 按F4
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: ASPack 2.12 -> Alexey Solodovnikov
【编写语言】: VB
【使用工具】: OD、PEID
【操作平台】: WINXP+ SP2
【软件介绍】: *******投票机软件
0045213A 3C E9 cmp al, 0E9
0045213C 74 04 je short 00452142
0045213E 43 inc ebx
0045213F 49 dec ecx
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【方法介绍】: 通常采用ASPACK自动脱壳机和OLLYDBG手动脱壳
【经验总结】: 动态调试时找到大的跳转即为OEP,然后DUMP,用ImportREC v1.6F修复输入表IAT即可。
1、在ASPACK中PUSGAD 与POPAD 成对,找到POPAD即离OEP 很近。
相关文档
最新文档