软件脱壳教程后 有自校验 怎么去除

文档分类:
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
淘豆网网友近日为您收集整理了关于脱壳后软件无法运行的原因分析及对策的文档,希望对您的工作和学习有所帮助。以下是文档介绍:脱壳后软件无法运行的原因分析及对策一、脱壳是否成功的标志一般说来,对软件脱壳是不会改变原软件的运行机制的。它只是将加密的IAT地址还原成装载前的API函数名字串的地址,并以明码方式显示。脱壳是否成功的标志是软件运行前图标与脱壳前一致、运行时windows并未发出“……,初始化失败……”的警告,那么脱壳大体是成功的。若出现初始化失败警告,则百分之百是IID表或IAT表搞错了。二、用OD加载时出现“异常”或直接运行时,windows弹出“发送错误报告”消息。原因:()OEP入口地址错误;()在手动脱壳时“张冠李戴”,把某函数的地址写到了另一个函数的地址上去了。三、软件一运行就退出.原因:()如果脱壳前软件能(直接)运行,脱壳后软件一闪而过,说明软件有“文件校验”。软件脱壳前后的最大变化是文件尺寸变化,那么软件的“校验和”一定要发生变化,当它发现“校验和”变了时,知道了你对软件“动了手脚”,它就毫不犹豫地退出了。若这时你想找到“文件校验”的位置,无异于大海捞针!()如果脱壳后能直接运行,但用OD加载时就退出或有无法跳过的异常,则是有“反跟踪”部件。(这和脱不脱壳没有关系)反跟踪不是本文今天讨论的内容,只是附带说一声。.对策:在一个软件中去找出它的“文件检验”代码在什么地方,同样得用“思想”,和破案也差不多。别急,先看看它是什么语言编写的。若是用“VC++”或“Delphi”编写的,则脱壳后的软件对于使用者,则基本上没有秘密可言。唯一的是它们的“call”嵌套太深,要进行底层的跟踪,很容易跟丢。举个例子,说明跟踪方法。有个商业软件,脱壳前可以运行,脱壳后就不能运行了。它是用“VC++”编写的。.破解思路:用“VC++”或“Delphi”来编写软件,有它快捷方便的一面。但是,因为它不能直接对内存进行操作,所以灵活性受到很大影响。例如,它就不能对运行中的内存文件进行“校验和”检验,若非要检验,除非在VC编程中嵌入ASM代码,但这样一来,地址的起点和终点难于确定,且给调试带来麻烦。一个变通的办法是:打开同一文件的一个“副本”,检验它“副本”的“校验和”也可以达到对自身检验的目的。这样一来,软件的秘密也就暴露无遗了,用OD来查看(已经脱壳的)软件怎样打开另一个文件,那实在是“再容易”不过的事情了!.具体操作:()用OD打开要跟踪的软件,右键打开搜索“所有模块间的调用”,在所有“CreateFile”和“ReadFile”的调用地址上设断点。()运行OD,按“F”,中断在一个CreateFile上:CreateFile中断:(该函数的返回值是被打开文件的句柄)……………………………………………………………………EEC|FileName=&E:\xxxx\New_xxxxxxx.exe&EC|Access=GENERIC_READE|ShareMode=FILE_SHARE_READ|FILE_SHARE_WRITEE|pSecurity=NULLE|Mode=OPEN_EXISTINGEC|Attributes=NORMALE\hTemplateFile=NULL……………………………………………………………………以上是堆栈中的显示,其中,FileName=&E:\xxxx\New_xxxxxxx.exe&是将要打开的文件。若不是正在运行中的同名文件,则继续按“F”。其余的参数是打开方式,不重要。监视CreateFile中断的另一个收获是知道了该软件在硬盘上写入了哪些文件,比如注册表中、系统文件夹中等(我最讨厌那些在硬盘中乱写文件的软件)。更重要的是,若软件有“反跟踪”代码,那么“CreateFile”或“FindWindow”等API函数调用时,它明码显示的文件名或窗口名是某个“调试软件”,就表明它在“反跟踪”,若发现了它们,相应的“反—反跟踪”措施也应该不是太困难的事。当然,高明的作者用VC也会让你伤透脑筋。当FileName=“正在运行的文件名时”,再按“F”来到ReadFile的中断上:ReadFile中断:…………………………………………………………EC|hFile=CECEA|Buffer=EAE|BytesToRead=(.)EEC|pBytesRead=ECE\pOverlapped=NULLECEECCDEF;调用次数记录…………………………………………………………其中,hFile=C是打开的文件句柄,Buffer=EA是保存读入数据的地址,BytesToRead=(.)是读入的字节数,其余的不重要。由于一个软件,不可能只有h字节,一次不能读完,所以ReadFile要调用多次,调用的次数总可以在某个寄存器中或堆栈中找到,这里(E:F)就是递减的调用次数。每调用一次,后面的程序就将这h字节累加一次,稍加跟踪就到了“校验和”代码处:()文件“校验和”代码:……………………………………E.DEEFFFFFleaeax,dwordptrss:[ebp-];eax=读入字节存放地址EA&Cxorecx,ecxEC.Amovcl,byteptrds:[eax]EE.DECadddwordptrss:[ebp-],[ebp-]=累加值E.inceaxE.Ah字节的计数E.^FjnzshortEAE&B调用次数计数E.^CjnzshortEEE&DECBsubdwordptrss:[ebp-],B;累加完成后的修正EC.DEDFFFFleaeax,dwordptrss:[ebp-B]E.EBFFFcallC………………………………………累加结果存放在[ebp-]=FAC中。不停地按“F”,并观查(E:F)中的值,当它变为时,就单步跟踪,“比较转跳”代码就近在咫尺了。()“比较转跳”代码:………………………………………E.EBFFFcallC;这就是前面的最后一行E.EEFFF释放一些内存等善后(VC特有)EC.DFcmpdwordptrss:[ebp-C],E.jnzshortEBE.BEmoveax,dwordptrss:[ebp-C];取FA的检验值E.mpeax,dwordptrss:[ebp-];和累加值比较EjnzshortEAD;最关键的(非)转跳EA.BBmovebx,EF.BFCmoveax,dwordptrss:[ebp-]EA.FEincbyteptrds:[eax+]EA.EjmpEEAD&DBxorebx,ebxEAF.EFjmpE.修改代码:到了现在,文件检验和转跳都清楚了,修改就变得十分简单,只需将:(用进制编辑器)……………………………………………………………………EjnzshortEAD;改为:nop,nop…………………………………………………………………………播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表脱壳后软件无法运行的原因分析及对策.doc
文档介绍:
脱壳后软件无法运行的原因分析及对策一、脱壳是否成功的标志一般说来,对软件脱壳是不会改变原软件的运行机制的。它只是将加密的IAT地址还原成装载前的API函数名字串的地址,并以明码方式显示。脱壳是否成功的标志是软件运行前图标与脱壳前一致、运行时windows并未发出“……,初始化失败……”的警告,那么脱壳大体是成功的。若...
内容来自淘豆网转载请标明出处.谁能帮我脱壳出一份北斗3.7的DLL文件 顺带去除里面的自校验 +Q 可以使用 R酬谢_百度知道
谁能帮我脱壳出一份北斗3.7的DLL文件 顺带去除里面的自校验 +Q 可以使用 R酬谢
文件这地址可以下 或者+Q 给你
谢谢 跪求帮忙了
提问者采纳
脱好了,下订定斥剐俪溉筹税船粳载地址
提问者评价
感谢国庆时分你的抽时间帮忙.不过还是无法连接网络。这个整合了detoured这个DLL所以比较麻烦。/
其他类似问题
为您推荐:
dll文件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 软件脱壳教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信