新手入门学习——脱壳破解练习第一期
新手入门学习——脱壳破解练习第一期
新手入门学习——脱壳破解练习第一期新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。
用PEiD查得【Upack V0.37-V0.39 -> Dwing *】接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的)OD载入……我使用简单一点的ESP定律。
00401018 > BE B0114000 MOV ESI,脱壳破解.004011B00040101D AD LODS DWORD PTR DS:[ESI]0040101E 50 PUSH EAX0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34]00401022 EB 7C JMP SHORT 脱壳破解.004010A0F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】如下图://数据窗口点右键,下硬件断点。
shift+F9运行0012FFC0 004011B8 脱壳破解.004011B80012FFC4 7C82F23B 返回到 kernel32.7C82F23B0012FFC8 00000000//来到OEP,通过观察可以发现,这是一个典型的VB入口。
这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0004011C2 0000 ADD BYTE PTR DS:[EAX],AL004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL记录新入口地址【11B8】接着打开LoadPE进行脱壳然后使用Import Fix 1.6 进行修复修复完成后即得到脱壳后的文件,用PeiD查询,果然是VB。
使用OllyDbg快速脱壳
破解教程★★使用OllyDbg快速脱壳★★使用OllyDbg快速脱壳dOSKEY lEE目标:采用ASPACK、UPX加壳的NOTEPAD.EXE工具:OllyDbg 1.09英文版、DUMP插件、PEditor系统:Win98SE关键词:脱壳、OllyDbg、OD、DUMP、PUSHAD、POPAD预备知识大多数壳都有一个共同的特点。
在壳准备开始解压时都要执行PUSHAD,当壳解压完时都要调用POPAD。
到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将所有普通寄存器顺序进栈的指令,POPAD是所有普通寄存器顺序出栈指令。
POPAD的出栈顺序和PUSHAD相反。
壳为了保护寄存器,便在解压前将所有寄存器进栈保护起来,当解压完成后又将寄存器出栈,恢复其原貌,并将IP设置为原程序的OEP。
这样我们就可以通过这个特点快速脱掉多种软件的壳。
ASPACK篇先用ASPACK将NOTEPAD.EXE加壳。
用OllyDbg(以下简称OD)载入。
看见光标停在壳的入口处。
0040D001 > 60 PUSHAD ;壳的入口。
准备开始解压,保护寄存器0040D002 E8 03000000 CALL NOTEPAD.0040D00A……我们不管它,直接向下翻页找POPAD指令。
在40D3AF处找到POPAD……0040D3AF 61 POPAD ;解压完成,恢复寄存器0040D3B0 75 08 JNZ SHORT NOTEPAD.0040D3BA0040D3B2 B8 01000000 MOV EAX, 10040D3B7 C2 0C00 RETN 0C0040D3BA 68 CC104000 PUSH NOTEPAD.004010CC ;返回到原程序OEP处0040D3BF C3 RETN……选定40D3AF这一行,F4运行到此处。
在这里说明壳已经完成解压工作。
并且返回到原程序的入口处。
个人总结的一个VMP脱壳步骤
个人总结的一个VMP脱壳步骤第一篇:个人总结的一个VMP脱壳步骤个人总结的一个VMP脱壳步骤个人在学习脱VMP加壳的过程中总结的一个步骤。
按照这个步骤,包括VMP1.6—2.0在内应该有70%-80%能脱壳。
脱不了的也别问我,我也刚开始学习。
我还想找人问呢。
想要脱VMP的壳,首要工作当然是要找一个强OD啦!至于是什么版本的OD自己多试验几个,网上大把大把的,一般来说只要加载了你想脱的VMP加壳程序不关闭都可以。
其次就是StrongOD.dll这个插件了,现在用的比较多的就是海风月影,同样网上也是大把大把的。
下载回来后复制到你的OD程序所在的文件夹里面的plugin里。
StrongOD的设置选项搞不懂就全部打钩。
接下来要做的工作就是搞清楚我们要脱壳的程序编程的语言了,可以用PEID或者fastscanner查看,如果在这里看不到也可以在OD载入以后通过里面的字符串判断了。
例如VB的程序会出现MSVB----/VC的会出现MSVC---等等。
这些都是程序运行所需要的windows链接文件。
做完这些预备工作接下来当然是用OD载入文件啦。
文件载入后在反汇编窗口CTRL+G搜索VirtualProtect(注意V跟P要大写,至于为什么要搜索这个别问我)。
一般来说搜索的结果会出现以下的类似:7C801AE3 E8 75FFFFFF call kernel32.VirtualProtectEx 我们在这里下F2断点。
然后F9运行到我们下的这个断点。
接下来我们就要注意观察堆栈窗口了。
一般来说当我们F9运行到我们上面下的断点的时候在堆栈窗口会出现以下类似: 0012F66C 00401000 |Address = TradeCen.00401000 0012F670 000280D1 |Size = 280D1(164049.)0012F674 00000004 |NewProtect = PAGE_READWRITE 0012F678 0012FF98 pOldProtect = 0012FF98 我们要注意观察的就是在接下来我们F9运行的时候,ADDRESS和NEWPROTECT这两行的变化。
软件脱壳破解培训班第一课程_教材课件
软件反编译破解学习班第一课1、介绍:内容;安全中国本节介绍了软件破解的通用方法和步骤,我们用通俗的语言介绍了软件破解的入门知识,希望大家能够由此步入破解的殿堂,进入奇妙无比的破解天地。
希望没有任何基础的人也能学会,则深感欣慰,不亦乐乎。
2、说明:内容.;熟悉软件的结构,了解软件破解的流程、达到辨伪存真的目的。
欲破解一个软件,我们首先应根据前面的内容侦测它的壳,然后我们要把它的壳脱去,还原软件的本来面目。
如果软件是一个PLMM,我们不喜欢穿衣服的MM,我们不喜欢艺术照的MM,我们迫不及待地想把MM脱光,想把MM骗上床。
带壳的软件以后很难分析,带壳的穿衣的MM很难调教,壳是一个拦路虎,我们却不知武松醉在何处。
这就如同我们要吃糖炒栗子,必须先剥掉栗子壳一样。
这一课就教给你如何用自动剥壳机去掉花生壳、栗子壳之类的东东。
若侦测出它根本没加壳,就可省掉这一步了(现在没加壳的软件已经很少很少了,除非软件作者缺乏最基本的加密解密常识)。
脱壳成功的标志是脱壳后的文件能正常运行,功能没有任何损耗。
一般来说,脱壳后的文件长度大于原文件长度;即使同一个文件,当采用不同脱壳软件进行脱壳的时候,由于脱壳软件机理不同,脱出来的文件大小也不尽相同。
但只要能够运行起来,这都是正常的,就如同人的体重,每次上秤,份量都有所不同。
但只要这个人是健康的,就无所谓,合乎情理。
★使用方法:傻瓜式软件,运行后选取欲脱壳的软件即可完成脱壳工作。
AspackDie软件运行界面如图1所示。
图1 AspackDie运行界面脱壳时注意:目标程序的属性不能为“只读”,否则会失败。
下面举个例子(ex1701)。
运行AspackDie软件,选定ex1701,如图2。
图2 选定目标文件ex1701选定后,鼠标单击“打开”按钮,即完成脱壳工作,如图3。
在ex1701所在目录生成脱壳后的文件,其名称为Unpacked.exe。
图3 脱壳成功时的画面2.AsprStripperAsprstripper(作者网站:/syd/)功能非常强大,能对付ASPack 2.xx 版本的各种标准壳和变种壳,它只能运行在windows 2000/xp平台上。
脱壳基础知识入门
脱壳基础知识入门现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。
越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。
除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。
壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。
另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。
主页提供的教学确实有点过时了,己到非更新不可了。
相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。
第一课 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格式的方法是自己先准备一个十六进制工具,如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操作系统的一种系统机制,与特定的程序设计语言无关。
软件脱壳破解精典实例教程
软件脱壳破解精典实例教程软件脱壳、破解精典实例教程我要破解的软件:网络填表终结者破解需要的软件(点击下载):侦壳language.exe 脱壳AspackDie.exe反编译W32Dasm黄金中文版16进制编辑器UltraEdit.rar在破解之前先复习一下基础知识:一.破解的等级初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破中级,追出软件的注册码高级,写出注册机二.用w32dasm破解的一般步骤:1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来3.侦测有无加壳(第一课).若加壳,脱壳(第二课)4.pw32dasmgold反汇编5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址)8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成第一列行地址(虚拟地址)第二列机器码(最终修改时用ultraedit修改)第三列汇编指令第一列第二列第三列:0041BE38 2B45F0 sub eax, dword ptr [ebp-10]:0041BE3B 6A42 push 00000042:0041BE3D 50 push eax:0041BE3E FF75F4 push [ebp-0C]:0041BE41 FF75F0 push [ebp-10]:0041BE44 FF35A8AB4400 push dword ptr [0044ABA8]两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp 的作用是绝对跳,无条件跳,从而跳过下面的出错信息 2.修改为nopje(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转)nop 的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。
手动脱壳基础知识-电脑资料
手动脱壳基础知识-电脑资料单步跟踪法:1.OD载入,不分析代码,。
2.近CALL—F7,远CALL—F8,实现向下的跳转。
3.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选)4.大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP内存镜像法:1.OD载入软件2.点选项—调试选项—忽略全部—CTRL+F2重载3.ALT+N打开内存镜像,找程序第一个.rsrc—F2下断—SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无异常按F9,到OEP 模拟跟踪法:无暗桩情况下使用1.F9试运行,跑起来就无SEH暗桩之类的,否则就有.2.ALT+N打开内存镜像,找到包含“=sfx,imports reloco tions”字符3.地址=*** 命令行输入:tceip<***,回车.ESP定律法:1.F8,观察OD右上角寄存器中ESP有没有实现(红色)2.命令行下 DD ******(当前代码ESP值),回车3.DD就选中下端地址,断点—硬件访问—DWORD断点,F9运行,到跳转处按F8 到DEP最后一次异常法:1.OD打开—点选项—调试选项—去掉所有异常—CTRL+F2重载.2.SHIFT+F9.只到程序运行,记下次数M3.CTRL+F2重载—按SHIFT+F9(次数为M-1次)4.按CTRL+G—输入OE右下角的SE句柄前的地址.5.F2下断—SHIFT+F9到断点处.6.去断按F8,到OEP.一步到位OEP法:只适合少数壳,如UPX,ASPACK1.CTRL+F—输入:POPAD.回车查找—F2下断—F9运行到此处.2.来到大跳转处,点F8到OEP.SFX法:1.设置OD,忽略所有异常.2.切换到SFX选项卡,选择“字节模式跟踪实际入口”,确定.3.重载—“否”压缩代码,到OEP.。
脱壳基础知识入门
脱壳基础知识入门现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。
越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。
除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。
壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。
另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。
主页提供的教学确实有点过时了,己到非更新不可了。
相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。
第一课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格式的方法是自己先准备一个十六进制工具,如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操作系统的一种系统机制,与特定的程序设计语言无关。
软件破解详细教程1
第一课软件壳和所用编程语言的识别软件作者用编程语言编写好软件后,将它编译成扩展名为exe的可执行文件。
(1)有一些版权信息需要保护起来,不能让其他人随意改动,如作者的姓名、软件名称、作者的网址、软件的版本号等等。
(2)需要给程序“减肥”,使exe文件变小,从而方便存储、使用和网上传输。
这样,就会用到一些软件,它们能将可执行文件压缩和对信息加密,实现上述两个功能,这些软件称为加壳软件。
为软件加上的东东就称为壳。
“壳”这一名词来源于动植物,如香香的花生豆外包裹的花生壳、大家常吃的葵花瓜子外包裹的瓜子壳、保护小动物蜗牛软体而包裹的蜗牛壳、乌龟顶上(即王八盖子)的龟壳等,将新潮的IT行业与传统的手工作坊式的农业、畜牧行业有机地结合起来,发扬传统,继往开来,也属于“扬弃”吧!而且,这种东西愈演愈烈,似乎已变成一种趋势,一发而不可收,逐渐地流行起来。
如我们常用的搜索引擎google,就将其中文官方名字命名为“谷歌”,浓郁的乡土气息回荡在山谷,将农业与IT行业的结合发挥得淋漓尽致。
令你不得不迎合并接受这种土洋结合的变味的、怪味的、让你说不出滋味的“酸酸乳”,一如超女张靓颖在歌坛中的地位和发展速度,从开始的不习惯到慢慢习惯而接受,见怪不怪,习以为常。
需要特别说明的是:加壳软件不同于一般的winzip、winrar等打包类压缩软件,它们是压缩可执行文件的,压缩后的文件可以直接运行。
最常见的加壳软件有3个:ASPACK(简称:小S,康熙来了当家花旦)、UPX(小优)、PEcompact(小pp)。
主流就是主流,用它们加壳的软件约占市面所有软件的80%,好高的市场占有率啊!其他常用的加壳软件,如ASPROTECT(大S,比较出名的难壳之一,小S的姐姐,很漂亮偶)、Armadillo(大鳄鱼)、Themida等因为较难,留待以后介绍。
软件最常见的编程语言主要是Delphi、Visual Basic(简称VB)、Visual C++(简称VC)、。
从零开始学破解爆破
从零开始学破解爆破首先我们来学习下汇编的基础知识,在以后的破解过程中要经常用到的。
软件破解常用汇编指令cmp a,b // 比较a与b 比较a与b(是相等还是a>b a<b) 也就是比较语句mov a,b // 把b值送给a值,使a=b 赋值语句ret // 返回主程序nop // 无作用,英文(no operation)简写,意思“do nothing”(机器码90)(用ultraedit打开编辑exe文件看到90相当汇编语句的nop)call // 调用子程序,子程序以ret结尾就不用我说了吧jne或jnz // 不相等则跳(机器码是75或85)jmp // 无条件跳(机器码是EB)jb // 若小于则跳ja // 若大于则跳jg // 若大于则跳jge // 若大于等于则跳jl // 若小于则跳这几个是跳转语句一会就会用到所以大家要先记住以上这些大家一定要熟练记住了爆破无敌口诀一条(跳)就死,九筒(90)就胡——(对应上面的2--修改为nop)一条(跳)就胡,一饼(EB)伺候——(对应上面的1--修改为jmp)(74)变(75)(84)变(85)不懂不要紧,一定要先牢记,以后慢慢的理解。
首先我们简单说下以后破解用的工具1.探测工具peid fi等,2.脱壳工具很多就不说了,查到什么样的壳大家可以去网上找相应脱壳工具,也有很多教程3.反汇编工具静态反汇编工具有W32DASM,C32Asm 动态的有Ollydbg(也就是OD)SOFTICE TRW2000 lOD是当今最流行的反汇编工具。
4.资源编辑工具有UItraEdit WinHex eXeScope 等。
他们可以自定义软件如修改文字修改菜单等我就不介绍了,网络上有很多工具的使用教程。
现在就来让我们用一个例子来进入破解世界吧!今天我们破解就是这个名片王看到了把需要我们注册。
破解思路第一步初步检测没加壳是用Borland Delphi 6.0 - 7.0写的第二步留心注册提示恭喜!您已经是本软件注册用户。
新手必须知道的脱壳及修复工具解读
新手必须知道的脱壳及修复工具很多软件都加了壳,除了易语言软件很少加壳。
对于我们这些新手也叫菜鸟级的,既然想学破解,脱壳是第一步,我也在学习啦,第一步就是个人电脑里面必须装的必备脱壳及修复工具,现在发一个工具介绍,我想对新手应该有用,大家可以复制工具名字,去网上下载:脱壳工具以及脱壳一般流程查壳(PEID、FI、PE-SCAN)--->寻找OEP(OD)--->脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)--->修复(Import REConstructor)【工具介绍】1、查壳PEID--功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样)工作原理:核心是userdb.txt(大家看看就完全明白了)[通过壳的入口特征码进行辨认]使用方法:可以拖放、也可以把PEID添加到右键菜单里面去FI--功能强大的侦壳工具,DOS界面。
使用方法:可以拖放、可以使用DOS命令行2、寻找OEPollydbg的四个区域左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.右下角的是当前堆栈情况,还有注释啊.几个经常使用的快捷键F2:在需要的地方下断点(INT3型断点)F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)其中要特别讲一下3个F9的区别和作用:根据Ollydbg.hlp的中文翻译Shift+F9 - 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。
VMP脱壳技术
WinlicenseWinlicenseBy VirusWizard今天第一次接触Themida/Winlicense,基本上都是脚本,算不上什么技术,但作为实验,记录一下。
总体流程:使用Nooby的脚本跑到FakeOEP,然后修复StolenCode。
首先使用Winlicense然后调整脚本中的Base记事本的WinLicen的Base。
我这里的Base是01015000,所以对应的代码修改成:mov tmdbase, 01015000接下来用StrongOD,选项全部勾上,开始跑脚本。
跑完脚本之后,来到这里:01007568 68 BA750001 push 010075BA0100756D 64:A1 00000000 mov eax, dword ptr fs:[0]01007573 50 push eax01007574 8B4424 10 mov eax, dword ptr [esp+10]01007578 896C24 10 mov dword ptr [esp+10], ebp0100757C 8D6C24 10 lea ebp, dword ptr [esp+10]01007580 2BE0 sub esp, eax01007582 53 push ebx01007583 56 push esi01007584 57 push edi01007585 8B45 F8 mov eax, dword ptr [ebp-8]01007588 8965 E8 mov dword ptr [ebp-18], esp0100758B 50 push eax0100758C 8B45 FC mov eax, dword ptr [ebp-4]0100758F C745 FC FFFFFFF>mov dword ptr [ebp-4], -101007596 8945 F8 mov dword ptr [ebp-8], eax01007599 8D45 F0 lea eax, dword ptr [ebp-10]0100759C 64:A3 00000000 mov dword ptr fs:[0], eax010075A2 C3 retn观察堆栈,发现这个:0006FF8C 011ABF9B NOTEPAD_.011ABF9B0006FF90 01001898 NOTEPAD_.010018980006FF94 0000007070有些眼熟,用OD打开原记事本,看到头两行:0100739D > $ 6A 70 push 70 ; (initial cpu selection) 0100739F . 68 push 01001898然后F4到011ABF9B,这个时候会进入VM,我暂时还没那技术去分析。
如何将EXE安装文件脱壳和破解
如何将EXE安装文件脱壳和破解
对于EXE安装文件的脱壳和破解,首先需要明确一点:这种行为是非法的,违反了软件版权法,如果未经授权擅自进行脱壳和破解,将会面临法律风险。
因此,我们鼓励用户遵守法律法规,正当使用软件。
下面的内容仅供学习和了解用途,请勿用于非法活动。
脱壳和破解是逆向工程的一种技术手段,通常用于破解软件的限制或加密保护,使其可以在未经授权的情况下运行或修改。
下面的步骤介绍了脱壳和破解流程的一般步骤:
1.分析静态和动态行为:使用反编译工具或调试器分析EXE文件的静态和动态行为。
这包括查看程序的逻辑、代码结构和数据流。
2.寻找加密和保护机制:在静态和动态分析的基础上,尝试找到程序使用的加密和保护机制。
这可能包括对文件的加密、检测反调试措施、或者对特定代码进行混淆等。
3.去除加密和保护:通过修改程序的二进制代码,解开加密和保护措施,使得程序可以正常运行。
这可能需要修改关键函数、解密算法或者绕过反调试措施。
4.修改程序的逻辑:如果需要修改程序的逻辑,使其满足特定需求,可以通过修改代码或者增加额外功能来实现。
这可能需要对程序进行重写或者插入自定义代码。
5.重新打包和分发:脱壳和破解完成后,重新打包成可执行文件,并进行分发。
注意,这一步骤可能也涉及到版权问题,请谨慎操作。
如果您对软件有需求,可以考虑购买正版软件或者寻找合法的替代方案。
手动脱UPX壳实战
⼿动脱UPX壳实战作者:Fly2015Windows平台的加壳软件还是⽐較多的,因此有⾮常多⼈对于PC软件的脱壳乐此不彼,本⼈菜鸟⼀枚,也学习⼀下PC的脱壳。
要对软件进⾏脱壳。
⾸先第⼀步就是查壳。
然后才是脱壳。
推荐⽐較好的查壳软件:PE Detective 、Exeinfo PE、DIE⼯具。
须要脱壳的程序是吾爱破解论坛的windows逆向破解培训第⼀课的作业题1.1.对该程序(吾爱破解培训第⼀课作业⼀.exe)进⾏查壳PE Detective的查壳结果:Exeinfo PE的查壳结果:DIE的查壳的结果:DIE查壳有⼀个优点就是能从查壳的结果中得知被加壳的程序是⽤什么语⾔编写的。
这个⽐較实⽤。
2.进⾏UPX脱壳实战该程序加载OD以后发现有pushad指令,⾮常显然该程序需採⽤ESP定律进⾏脱壳。
F8单步⾛⼀步。
然后右键选择ESP寄存器下HW break硬件断点。
F9执⾏程序,该程序会在硬件断点的地⽅⾃⼰主动断下来,如图:在JMP指令的位置F2下断点,然后F9执⾏到该断点00457765处,地址0041DDAC处就是被加壳程序原来的OEP处。
⼀般被加壳的程序在解壳以后都会有⼀个跳转,可能是JMP也可能是其它的指令。
F7跟进到地址0041DDAC处,如图:是不是⾮常眼熟啊,VS2008等编译的程序的⼊⼝点汇编指令。
下⼀步就能够使⽤OD的插件OllyDump或者(Load PE+RECImport)⼯具进⾏程序的脱壳和IAT表的修复:被加壳程序的真实的OEP的RVA地址为1DDAC,这⾥IAT表的重建选择⽅式1,依据实际情况选择IAT表的修复⽅式。
Ok。
⽤查壳程序。
对脱壳程序进⾏查壳,结果例如以下:执⾏⼀下刚才被脱壳的程序,证明脱壳成功!UPX脱壳分析⽂档和完美脱壳后的程序下载地址;。
菜鸟脱壳之脱壳的基础知识:如何寻找OEP
菜鸟脱壳之脱壳的基础知识:如何寻找OEP本文摘要这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point。
一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。
这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point。
一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。
我们来看看加壳之前的Delphi7.0的程序,用LordPE来打开Delphi7.0程序,我们看到程序的入口点是004C498:看区段,没有任何的新加的区块:我们来看看加了壳的程序的入口点,加过壳的入口点为000629D0:区段变为三个了,很明显,壳将原程序的区段给合并了:加了壳后,首先,各个区段都要被系统映射到内存中,因为现在的入口点是000629D0,是指向外壳部分的,外壳拿到了控制权以后,通过LoadLibrary、GetProcaddresss、GetModuleHandle等函数来获得自身所需要的API的地址,来解密各个区段的信息,填充好IAT后,就要跳到程序的OEP了(Entry Point),此例是004C498,我们用Ollydbg载入,设置好各个选项(我是把暂停点停在了WinMain处了)。
Ollydbg暂停以后,加壳程序停在了004629D0处:004629D0 > 60 pushad //保存现场(pushad 相当于push 所有的寄存器)004629D1 BE 00F04300 mov esi, 0043F000 //把代码段放到esi寄存器004629D6 8DBE 0020FCFF lea edi, dword ptr [esi+FFFC2000] //得到基址004629DC C787 9CC00400 7>mov dword ptr [edi+4C09C], 46CD167B//将第一个函数的地址放到[edi+ 4C09C]004629E6 57 push edi //将基址压栈004629E7 83CD FF or ebp, FFFFFFFF //将0012FFC0与FFFFFFFF或004629EA EB 0E jmp short 004629FA004629EC 90 nop004629ED 90 nop004629EE 90 nop004629EF 90 nop004629F0 8A06 mov al, byte ptr [esi] //取出0043F004的一个字节004629F2 46 inc esi //指向下一个字节004629F3 8807 mov byte ptr [edi], al //从00401000开始,开始还原代码004629F5 47 inc edi //指向下一个地址004629F6 01DB add ebx, ebx //ebx + ebx,当ebx不等于零的时候跳转,下面的adc 如果为,就取出下一个地址,并放到ebx中004629F8 75 07 jnz short 00462A01004629FA 8B1E mov ebx, dword ptr [esi] //将0043F000放到ebx中004629FC 83EE FC sub esi, -4 //0043F000加4004629FF 11DB adc ebx, ebx //进位加法器00462A01 ^ 72 ED jb short 004629F0 // 向上跳转,ebx做为是否回跳的标志,循环处理代码00462A03 B8 01000000 mov eax, 1 // eax = 100462A08 01DB add ebx, ebx // ebx依然作为循环的标志00462A0A 75 07 jnz short 00462A1300462A0C 8B1E mov ebx, dword ptr [esi] //esi指向的地址放到ebx里面00462A0E 83EE FC sub esi, -4 //esi + 4 00462A11 11DB adc ebx, ebx//进位加法00462A13 11C0 adc eax, eax //进位加法00462A15 01DB add ebx, ebx //ebx + ebx 00462A17 73 0B jnb short 00462A2400462A19 75 28 jnz short 00462A43 //跳到下面00462A1B 8B1E mov ebx, dword ptr [esi] 00462A1D 83EE FC sub esi, -400462A20 11DB adc ebx, ebx00462A22 72 1F jb short 00462A4300462A24 48 dec eax00462A25 01DB add ebx, ebx00462A27 75 07 jnz short 00462A3000462A29 8B1E mov ebx, dword ptr [esi] 00462A2B 83EE FC sub esi, -400462A2E 11DB adc ebx, ebx00462A30 11C0 adc eax, eax00462A32 ^ EB D4 jmp short 00462A08 00462A34 01DB add ebx, ebx00462A36 75 07 jnz short 00462A3F00462A38 8B1E mov ebx, dword ptr [esi]00462A3A 83EE FC sub esi, -400462A3D 11DB adc ebx, ebx00462A3F 11C9 adc ecx, ecx00462A41 EB 52 jmp short 00462A95 00462A43 31C9 xor ecx, ecx // 清零ecx 00462A45 83E8 03 sub eax, 3 // eax - 3 00462A48 72 11 jb short 00462A5B 00462A4A C1E0 08 shl eax, 800462A4D 8A06 mov al, byte ptr [esi] 00462A4F 46 inc esi00462A50 83F0 FF xor eax, FFFFFFFF 00462A53 74 75 je short 00462ACA 00462A55 D1F8 sar eax, 100462A57 89C5 mov ebp, eax00462A59 EB 0B jmp short 00462A66 00462A5B 01DB add ebx, ebx00462A5D 75 07 jnz short 00462A66 00462A5F 8B1E mov ebx, dword ptr [esi] 00462A61 83EE FC sub esi, -400462A64 11DB adc ebx, ebx00462A66 ^ 72 CC jb short 00462A3400462A68 41 inc ecx00462A69 01DB add ebx, ebx00462A6B 75 07 jnz short 00462A74 00462A6D 8B1E mov ebx, dword ptr [esi] 00462A6F 83EE FC sub esi, -400462A72 11DB adc ebx, ebx00462A74 ^ 72 BE jb short 00462A34 00462A76 01DB add ebx, ebx00462A78 75 07 jnz short 00462A81 00462A7A 8B1E mov ebx, dword ptr [esi] 00462A7C 83EE FC sub esi, -400462A7F 11DB adc ebx, ebx00462A81 11C9 adc ecx, ecx00462A83 01DB add ebx, ebx00462A85 ^ 73 EF jnb short 00462A76 00462A87 75 09 jnz short 00462A92 00462A89 8B1E mov ebx, dword ptr [esi] 00462A8B 83EE FC sub esi, -400462A8E 11DB adc ebx, ebx00462A90 ^ 73 E4 jnb short 00462A76 00462A92 83C1 02 add ecx, 200462A95 81FD 00FBFFFF cmp ebp, -500 //迷惑指令00462A9B 83D1 02 adc ecx, 2// 进位加法00462A9E 8D142F lea edx, dword ptr [edi+ebp] // edi + ebp的地址装载到edx,即原来的代码段的地址00462AA1 83FD FC cmp ebp, -4 // 判断跳转标志,EBP小于等于-4就跳00462AA4 76 0E jbe short 00462AB400462AA6 8A02 mov al, byte ptr [edx] //取出代码段的一字节00462AA8 42 inc edx //指向下一个地址00462AA9 8807 mov byte ptr [edi], al //取出的代码放到edi里面00462AAB 47 inc edi //指向下一个代码00462AAC 49 dec ecx //计数器00462AAD ^ 75 F7 jnz short 00462AA6 //关于计数器(ecx)的跳转00462AAF ^ E9 42FFFFFF jmp 004629F6 //向上面跳,跳到add ebx,ebx00462AB4 8B02 mov eax, dword ptr [edx] // 处理输入表00462AB6 83C2 04 add edx, 4 // edx + 4,指向下一个地址00462AB9 8907 mov dword ptr [edi], eax //将代码放到edi00462ABB 83C7 04 add edi, 4// edi + 4,存放代码的地址00462ABE 83E9 04 sub ecx, 4//ecx - 400462AC1 ^ 77 F1 ja short 00462AB400462AC3 01CF add edi, ecx // edi + ecx,指向接收代码的地址的最后一个字节00462AC5 ^ E9 2CFFFFFF jmp 004629F6 //跳到add ebx,ebx00462ACA 5E pop esi00462ACB 89F7 mov edi, esi00462ACD B9 81260000 mov ecx, 268100462AD2 8A07 mov al, byte ptr [edi] //指向我们原来代码段的代码,取出到AL里面00462AD4 47 inc edi //指向下一个字节00462AD5 2C E8 sub al, 0E8 //处理CALL00462AD7 3C 01 cmp al, 1 //判断al是否大于100462AD9 ^ 77 F7 ja short 00462AD2 //循环,到下一个CALL的第一个字节为止00462ADB 803F 14 cmp byte ptr [edi], 1400462ADE ^ 75 F2 jnz short 00462AD200462AE0 8B07 mov eax, dword ptr [edi] //取出里面的地址,里面的地址是定位CALL 的绝对地址要用到的00462AE2 8A5F 04 mov bl, byte ptr [edi+4] //得到下条地址的开始字节放到AL里面,CALL绝对地址就是下条指令开始+刚才上面取出的那个数字00462AE5 66:C1E8 08 shr ax, 8 // ax右移8位00462AE9 C1C0 10 rol eax, 10 //eax算术左移8位00462AEC 86C4 xchg ah, al //交换内容00462AEE 29F8 sub eax, edi //eax - edi00462AF0 80EB E8 sub bl, 0E8 //再减去E800462AF3 01F0 add eax, esi //eax + esi,其中esi是代码段开始的地方00462AF5 8907 mov dword ptr [edi], eax //这里处理CALL的地址,算出CALL的偏移到EDI里面00462AF7 83C7 05 add edi, 5 //edi + 5,指向call的后面00462AFA 88D8 mov al, bl //bl的内容放到al中00462AFC ^ E2 D9 loopd short 00462AD7 //循环处理CALL,其中ecx作为计数器00462AFE 8DBE 00F00500 lea edi, dword ptr [esi+5F000] //代码段的起始地址+5F00000462B04 8B07 mov eax, dword ptr [edi] //现在EDI指向我们的代码的输入表00462B06 09C0 or eax, eax //eax 或eax ,判断eax是否为零00462B08 74 3C je short 00462B4600462B0A 8B5F 04 mov ebx, dword ptr [edi+4] //取得这个地址的数据放到ebx00462B0D 8D8430 AC2D0600 lea eax, dword ptr [eax+esi+62DAC] // 取得外壳段的KERNEL32.DLL的地址放eax00462B14 01F3 add ebx, esi //我们代码段的起始地址加上刚才取出的那个数据00462B16 50 push eax //kernel32.dll的地址00462B17 83C7 08 add edi, 8 //edi + 800462B1A FF96 4C2E0600 call dword ptr [esi+62E4C] //装载kernel32.dll00462B20 95 xchg eax, ebp //交换数据,即eax指向kernel32.dll的地址00462B21 8A07 mov al, byte ptr [edi] //取得现在的EDI的地址指向的数据放到AL 00462B23 47 inc edi //指向下一个函00462B24 08C0 or al, al //al 或al,判断al是否为零00462B26 ^ 74 DC je short 00462B0400462B28 89F9 mov ecx, edi //取出的函数的名字放到ecx里面00462B2A 57 push edi //函数名字压栈00462B2B 48 dec eax //eax - 100462B2C F2:AE repne scas byte ptr es:[edi]00462B2E 55 push ebp //kernel32.dll的基址00462B2F FF96 502E0600 call dword ptr [esi+62E50] //外壳的GetProcaddress00462B35 09C0 or eax, eax //eax或eax,得到函数的地址00462B37 74 07 je short 00462B4000462B39 8903 mov dword ptr [ebx], eax //处理输入表00462B3B 83C3 04 add ebx, 4 //ebx + 4,指向下一个输入表的地址00462B3E ^ EB E1 jmp short 00462B2100462B40 FF96 602E0600 call dword ptr [esi+62E60]00462B46 8BAE 542E0600 mov ebp, dword ptr [esi+62E54] //VirtualProtect的地址放到ebp00462B4C 8DBE 00F0FFFF lea edi, dword ptr [esi-1000] //指向PE头,即映像基址00462B52 BB 00100000 mov ebx, 1000 //把1000放到ebx,即ebx = 100000462B57 50 push eax00462B58 54 push esp00462B59 6A 04 push 400462B5B 53 push ebx00462B5C 57 push edi00462B5D FFD5 call ebp //改变属性00462B5F 8D87 1F020000 lea eax, dword ptr [edi+21F] //现在eax指向PE头中区段的偏移起始位置00462B65 8020 7F and byte ptr [eax], 7F //改写区段名字00462B68 8060 28 7F and byte ptr [eax+28], 7F //改写区块属性第一个区块的属性00462B6C 58 pop eax00462B6D 50 push eax00462B6E 54 push esp00462B6F 50 push eax00462B70 53 push ebx00462B71 57 push edi00462B72 FFD5 call ebp00462B74 58 pop eax00462B75 61 popad //恢复现场00462B76 8D4424 80 lea eax, dword ptr [esp-80]00462B7A 6A 00 push 000462B7C 39C4 cmp esp, eax00462B7E ^ 75 FA jnz short 00462B7A00462B80 83EC 80 sub esp, -8000462B83 ^ E9 109FFEFF jmp 0044CA98 //跨区段的转移,跳到OEP 00462B88 A0 2B4600B0 mov al, byte ptr [B000462B]00462B8D 2B46 00 sub eax, dword ptr [esi]00462B90 9C pushfdDelphi7.0的OEP:0044CA98 55 push ebp0044CA99 8BEC mov ebp, esp0044CA9B 83C4 F0 add esp, -100044CA9E B8 B8C84400 mov eax, 0044C8B80044CAA3 E8 2091FBFF call 00405BC80044CAA8 A1 B8DF4400 mov eax, dword ptr [44DFB8]0044CAAD 8B00 mov eax, dword ptr [eax]0044CAAF E8 9CE6FFFF call 0044B150这个方法很简单,就是从壳的开始一直跟踪,直到来到OEP,没有什么技巧!大家应该熟悉各个程序的OEP,并且熟练的掌握这种方法!。
他乡脱壳系列教程之狗世界加密狗破解
他乡脱壳系列教程之狗世界加密狗破解
课程目录:
第1课加密狗破解介绍 第2课破解域天狗并脱壳 第3课无狗打狗软件狗 第4课无狗打狗usb狗 第5课加密狗复制与模拟实战 第6课无狗打狗深思2(ROCKEY2) 第7课无狗打狗软件狗 第8课无狗打狗网络狗 第9课无狗打狗硬件狗 第10课无狗打狗深思4(ROCKEY4) 第11课无狗打狗深思6(ROCKEY6 SMART) 第12课无狗打狗思维尔狗 第13课无狗打狗---杀微狗 第14课无狗打狗---广联达狗(宏狗) 第15课无狗打狗---未知狗(宏狗+网络
脱壳教程1
脱壳教程1:认识脱壳一切从“壳”开始首先大家应该先明白“壳”的概念。
在自然界中,大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。
同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。
最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件 RCOPY 3 的作者熊焰先生。
在几年前的 DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。
有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。
但毕竟在当时,甚至现在这样的人也不是很多,所以当 RCOPY3 这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。
老实说,这个我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成 EXE 可执行文件这项,就应该是世界首创了。
但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的 RO97),这个想法也在后来和作者的面谈中得到了证实。
在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有: UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。
普通壳的脱壳方式和脱壳技能
普通壳的脱壳方式和脱壳技能.txt心态决定状态,心胸决定格局,眼界决定境界。
当你的眼泪忍不住要流出来的时候,睁大眼睛,万万别眨眼,你会看到世界由清楚到模糊的全进程。
普通壳的脱壳方式和脱壳技能,叫新手少走弯路!普通壳的脱壳方式和脱壳技能,叫新手少走弯路这篇文章,是我在之前在自学脱壳的时候,在笔记本是所做的脱壳总结;里面包括了各类壳的脱壳方式,最重要的是注释了什么壳用什么方式脱是最省时省力的方式。
毕竟是一篇笔记,所以在顺序是或许会有些杂乱无章的感觉。
仍是请刚接触脱壳的朋友们将就一下,一个一个字的把它从笔记本是移到电脑上也不容易。
第一,先对下文中将要讲到的几个地方做一下说明,避免一些刚接触脱壳的朋友因为不清楚它们的意思,而把时刻花费在baidu和google上。
常见脱壳知识:(压栈)代表程序的入口点(出栈)代表程序的出口点,与PUSHAD相对应,一般找到那个,说明OEP可能就在周围:程序的入口点,软件加壳就是隐藏了OEP(或用了假的OEP),只要咱们找到程序真正的OEP,就可以够立刻脱壳。
脱壳的几种方式:方式一:单步跟踪方式二:ESP定律脱壳方式三:内存跟踪方式四:跟踪出口法方式五:最后一次异样法方式六:懒人脱壳法上面这些方式具体的操作我会在最后,在文章的最下面给出。
想要具体了解的能够去看下,不过最后再看那个也是能够的。
能够节省大家的时刻。
=================================================================================================第二部份,需要注意的几处重点ESP脱壳时,对于有关键提示的(如:Pushw 或Pushad ),一般选择关键提示下面那行地址中的ESP。
懒方式脱壳,这种方式对紧缩壳有效;对加密壳作用不大。
“懒方式脱壳“在已开始的设置时需要注意(简化的设置步骤,详细的在文章最下面):一、第一,要忽略所有异样src“3、F2(下断),F9(运行)4、Alt+M 打开内存镜像,找到”Code“段;五、F2(下断),Shift+F9【这点必然要记住,切记是Shift+F9】运行;六、先按F8,再按下F4,直接抵达OEP第六节手脱JDpack 壳和PEpack 的壳最简单的方式脱那个壳推荐利用内存镜像法;我在用ESP脱壳的时候发觉:ESP定律的速度和单步跟踪的速度差不多,所以在这里就不推荐了。
通达信主程序脱壳全记录(图文)
通达信主程序脱壳全记录(图文)UPX加壳入口第一句是PUSHAD;出口关键字POPAD;手动脱壳时,用Olldbg载入程序,脱壳程序里面会有好多循环。
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。
第一步,先侦壳,侦壳工具为peid0.92,侦测结果如下:(图000)(图000)原来是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo加的壳,UPX是一种压缩壳,强度很低。
第二步,我们请出调试利器:Ollydbg1.09,载入程序,出现提示:用F8进行单步跟踪,对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈那就是设置“断点”。
见上图(图004 005 006 007)下走。
(后面碰到类似的情况,处理方法一样。
)一直往下找,直到发现“POPAD”时,在其地址处设置“断点”―――“运行到选定位置F4”,然后继续F8往下走。
(图008 009)下走。
在走几行,就会出现上图画面,“00622838A”55 DB55 CHAR‘U’―――这是通达信主程序代码的真点击右键调出菜单,选择“用OllyDump脱壳调试进程”。
(图012)=========下图为重新载入已脱壳的新文件(图015)==========用“PEID”检测,提示已无壳。
(图016),但该文件还不能正常启动,因为“输入表”尚未修复。
第三步,就是修复程序的输入表。
使用importREC,这是最好用的输入表修复工具。
1、运行加壳的原版TDX主程序,启动importREC程序,(图018)在“附加一个活动进程”中选择“D:\通达信分析家l论坛版本\TDX.EXE”。
2、在“所需的IAT信息”中的“OEP”填入“0022838A”,点击“自动搜索”按钮,出现下图提示:(图019)3、点击“获取输入表”按钮:(图020)4、点击“修复转存文件”按钮,选择前面已完成脱壳的新文件,程序会自动生成一个新的“******_。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。
用PEiD查得【Upack V0.37-V0.39 -> Dwing *】
接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的)
OD载入……
我使用简单一点的ESP定律。
00401018 > BE B0114000 MOV ESI,脱壳破解.004011B0
0040101D AD LODS DWORD PTR DS:[ESI]
0040101E 50 PUSH EAX
0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34]
00401022 EB 7C JMP SHORT 脱壳破解.004010A0
F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】
如下图:
//数据窗口点右键,下硬件断点。
shift+F9运行
0012FFC0 004011B8 脱壳破解.004011B8
0012FFC4 7C82F23B 返回到 kernel32.7C82F23B
0012FFC8 00000000
//来到OEP,通过观察可以发现,这是一个典型的VB入口。
这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP
004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0
004011C2 0000 ADD BYTE PTR DS:[EAX],AL
004011C4 0000 ADD BYTE PTR DS:[EAX],AL
004011C6 0000 ADD BYTE PTR DS:[EAX],AL
004011C8 3000 XOR BYTE PTR DS:[EAX],AL
记录新入口地址【11B8】
接着打开LoadPE进行脱壳
然后使用Import Fix 1.6 进行修复
修复完成后即得到脱壳后的文件,用PeiD查询,果然是VB。
因为UPack对做了变形处理,此时无法用VBExplorer打开,需要先用Upack PE修复工具修复。
修复完成后即可使用VBExplorer顺利的打开文件,修改俺就的Enable属性为True。
保存文件,破解完成!!!
欢迎大家跟我讨论问题(以前玩过一段时间脚本,在局域网放过一两次鸽子,现在条件限制,转行破解了,呵呵)
QQ:61902540(不过最近上网困难,只能靠手机上网,相当痛苦,如果没即使回复,可论坛PM)
Hackhaa
2008年12月31日。