【新手教程】开博系列软件脱壳、IAT修复、破解
本帖最后由 wang1234561211 于 2015-9-14 18:48 编辑写在前面:
刚全部编辑完这个帖子(2015年8月21日 11:09:46)。作为新人,需要接触的东西太多,学习的东西也太多。也看了写大神的视频,匆匆的一遍看过去,感觉好轻松的东西,发现等自己上手的时候,还是大脑空白,什么也不会了。原来才发现大神的教程是需要好多遍的消化的。所以作为新人,能体会到这些艰难,所以我把尽最大努力写的详细点,方便像我一样的新手上手。
看大神们的教程,总是那么干净,轻松脱壳,轻松修复,然后轻松都破解了。 我写的教程,就没那么顺利,我把我自己摸索的过程,遇到的错误,走的弯路都写出来了,还有至今不能解决的问题,。这样自己也可以在编辑教程的时候同时思考。比如这次介绍的IAT修复,都是在写教程的同时发现了刚好的方法。
本文最后的破解为爆破,不涉及算法。也不会追码。等下午或者其他时间有空,慢慢摸索了。
本文也仅仅是帮主像我一样的新人的,当然非常希望大神指正文中的错误,太需要你们帮助了。
不求热心,CB等等,只为帮助新人。仅此而已
-------------------------------------------------------------------------------------------------------------------------------------------------
帐号注册4年半了,最近看到吾爱的破解教程,一时兴起学习了一点点。第一次发帖,如有不当,随时改正。本文是很新手的教程,只是自己在IAT修复处理上困惑好久,最终摸索到方法,写出来分享下了。
只提供教程,研究学习用,不提供下载。
1. 下载软件
原版下载地址:http://rj.baidu.com/soft/detail/27444.html?ald,请选择普通下载,不然会安装XX全家桶的。
2. 安装、查壳
ASP2.12的壳,OD载入,使用脚本和ESP定律都可以很快找到OEP。
3.寻找OEP(介绍ESP定律脱壳方法,使用脚本一步都找到OEP了)
OD载入,提示压缩,是否分析,点否。
载入数据,代码如下
0118E001 >60 pushad
0118E002 E8 03000000 call KEASY.0118E00A
0118E007- E9 EB045D45 jmp 4675E4F7
0118E00C 55 push ebp
0118E00D C3 retn
0118E00E E8 01000000 call KEASY.0118E014
0118E013 EB 5D jmp short KEASY.0118E072
0118E015 BB EDFFFFFF mov ebx,-0x13
0118E01A 03DD add ebx,ebp
单步F8(按一下),右边寄存器窗口ESP和EIP变红,符合大神说的ESP脱壳定律。
右键ESP,选择HW break【ESP】 ,如下
F9,运行程序。
程序运行到如下代码位置
0118E416 /75 08 jnz short KEASY.0118E420
0118E418 |B8 01000000 mov eax,0x1
0118E41D |C2 0C00 retn 0xC
0118E420 \68 B099DC00 push KEASY.00DC99B0
0118E425 C3 retn
0118E426 8B85 8C040000 mov eax,dword ptr ss: ; KEASY.00720070
0118E42C 8D8D A1040000 lea ecx,dword ptr ss:
0118E432 51 push ecx
0118E433 50 push eax
点击调试,硬件断电。
然后删除断点,然后点确定。
然后按F8,单步跟踪,然后大跳转,来到OEP。(按了3次跳到了OEP)
OEP出代码如下
00DC99B0 55 push ebp
00DC99B1 8BEC mov ebp,esp
00DC99B3 83C4 F0 add esp,-0x10
00DC99B6 B8 8C62DB00 mov eax,KEASY.00DB628C
00DC99BB E8 C07164FF call KEASY.00410B80
00DC99C0 A1 D82FDF00 mov eax,dword ptr ds:
00DC99C5 8B00 mov eax,dword ptr ds:
00DC99C7 E8 546088FF call KEASY.0064FA20
00DC99CC A1 D82FDF00 mov eax,dword ptr ds:
00DC99D1 8B00 mov eax,dword ptr ds:
4. 脱壳
右键,选择用OllyDump脱壳调试进程。
然后复制OEP地址(9C99B0)
打开LordPE,最下面找到进程,右键,修正镜像大小。(大神都说要保留这样的好习惯,虽然这个软件不修复也行)
然后继续右键,选择第一个完整转存,保存。
5. IAT修复
脱壳后的软件,直接运行会出错,所以需要修复一下。
使用ImportREConstructor 1.7e,找到软件进程,载入。
粘贴我们刚复制的OEP地址,然后点右边的IAT自动搜索(弹窗点确定即可)。
这个软件困惑我一天的原因都是IAT修复,我接着点获取导入表,显示无效函数,剪切掉。然后修正转存到刚刚脱壳的软件后,发现还是打不开。之前有看大神们的教程,却发现每个程序都不是很一样,不好依葫芦画。(期间尝试各种脚本,脱壳机,发现最后都是要修复,也百度了好多关于IAT修复的文章),还是不懂。
然后就自己摸索了,看OEP附近代码,往下翻,后面都是未知代码和空字节
于是只能上翻了,发现有些call,后面注释都是JMP到XXX,如下(再往上翻,还有好多这样的)
00DC998B 832D 5CBFDF00 0>sub dword ptr ds:,0x1
00DC9992 73 07 jnb short KEASY.00DC999B
00DC9994 6A 00 push 0x0
00DC9996 E8 01AB67FF call KEASY.0044449C ; jmp 到 ole32.OleInitialize
00DC999B 5D pop ebp ; kernel32.7C81776F
00DC999C C3 retn
然后按回车跟随,看看JPM到哪儿了,(试了好几个这样的call,都是来到了这样的地方,一堆JPM)
0041593C- FF25 20D4DF00 jmp dword ptr ds: ; user32.RegisterWindowMessageW
00415942 8BC0 mov eax,eax
00415944 50 push eax
00415945 52 push edx ; ntdll.KiFastSystemCallRet
00415946 51 push ecx
00415947 68 F431E000 push KEASY.00E031F4 ; ASCII "DYA"
0041594C^ E9 ABFAFFFF jmp KEASY.004153FC
00415951 8D40 00 lea eax,dword ptr ds:
00415954^ FF25 F431E000 jmp dword ptr ds: ; KEASY.00415944
0041595A 90 nop
0041595B 90 nop
0041595C- FF25 1CD4DF00 jmp dword ptr ds: ; user32.RegisterWindowMessageW
00415962 8BC0 mov eax,eax
00415964- FF25 18D4DF00 jmp dword ptr ds: ; user32.ReleaseCapture
0041596A 8BC0 mov eax,eax
0041596C- FF25 14D4DF00 jmp dword ptr ds: ; user32.ReleaseDC
00415972 8BC0 mov eax,eax
00415974- FF25 10D4DF00 jmp dword ptr ds: ; user32.RemoveMenu
0041597A 8BC0 mov eax,eax
0041597C- FF25 0CD4DF00 jmp dword ptr ds: ; user32.RemovePropW
00415982 8BC0 mov eax,eax
00415984- FF25 08D4DF00 jmp dword ptr ds: ; user32.ScreenToClient
0041598A 8BC0 mov eax,eax
看后面注释,不刚好是我们要找的函数的名字(自己理解的,不知道对不对,如有大神看到,错了请指正哈)。
然后随便找一个JMP,右键-数据窗口跟随-内存地址。
然后右下角终于出现和大神视频里一样的类似代码了
然后按照大神的教导,往上翻,找到起始位置(我理解的是数值全为0,注释为空的地方)。然后到如下位置(后面会指正这里的错误)
00DFC00000DFC2A0KEASY.00DFC2A0
00DFC00400000000
00DFC00800000000
00DFC00C00DFC2A0KEASY.00DFC2A0
00DFC01000DFC2A0KEASY.00DFC2A0
00DFC01400DFC2B0KEASY.00DFC2B0
00DFC01800000000
00DFC01C00000000
00DFC02000DFC2B0KEASY.00DFC2B0
00DFC02400DFC2B0KEASY.00DFC2B0
复制第一行的地址00DFC000,然后减去00400000,得到9FC000。(我也不知道为啥要减,不减的话,我试了不行的。)
然后回到ImportREConstructor 1.7e,RVA那里粘贴9FC000,后面大小,我写的10000,因为我发现我写的1000,找到的全部是无效函数,写了10000,把无效的删掉,还留下好多,然后转存后,居然也修复成功了。(这是我昨晚的方法,不过总感觉那里不对,这会儿在编辑教程的时候,有个惊喜发现)
刚刚在想着,后面注释为KEASY.XXXXXX ,这样的可能不是我们也找的函数,然后拖动鼠标,往下翻,找到KEASY最下面的地址,如下
00DFD1F000000000
00DFD1F400A0299EKEASY.00A0299E
00DFD1F800000000
00DFD1FC00A029C6KEASY.00A029C6
00DFD20000000000
00DFD20400A029DCKEASY.00A029DC
00DFD20800000000
00DFD20C770F4880oleaut32.SysFreeString
00DFD2107712446Doleaut32.SysReAllocStringLen
00DFD214770F4BA7oleaut32.SysAllocStringLen
00DFD21800000000
00DFD21C77DA6FFFadvapi32.RegQueryValueExW
00DFD22077DA6AAFadvapi32.RegOpenKeyExW
然后选用中间的00DFD208作为起始地址,减去00400000,RVA为009FD208,然后大小用1000,点击获取导入表,也成功修复了,如下
而昨晚的方法,的结果是这样的,
然后刚刚才发现,虽然昨晚那样的方法还是修复成功了,但是无效的函数太多了。按照大神们说的,大小不宜选择过大,他们用1000,我居然用了10000,才修复成功了。
最后点修正转存,点击我们刚刚用LordPE脱壳的程序
6. 查壳
先赶快运行下程序,发现终于修复成功了,可以正常运行了,不过不能高兴太早,PEID查壳。
大功告成,昨晚高兴坏了。从前天下午困扰的问题,昨天才搞定。不过也不能高兴太早,还要破解呢。
7.破解
OD载入脱壳修复好的程序(载入的时候,最好按空格,让OD停止分析,不然会很卡,我电脑配置不好)
载入后代码如下,还是我们刚刚熟悉的OEP位置。
00DC99B0 >55 push ebp
00DC99B1 8BEC mov ebp,esp
00DC99B3 83C4 F0 add esp,-0x10
00DC99B6 B8 8C62DB00 mov eax,dumped_.00DB628C
00DC99BB E8 C07164FF call dumped_.00410B80
00DC99C0 A1 D82FDF00 mov eax,dword ptr ds:
00DC99C5 8B00 mov eax,dword ptr ds:
00DC99C7 E8 546088FF call dumped_.0064FA20
00DC99CC A1 D82FDF00 mov eax,dword ptr ds:
00DC99D1 8B00 mov eax,dword ptr ds:
00DC99D3 BA 2C9ADC00 mov edx,dumped_.00DC9A2C ; UNICODE "开博送货单软件标准版"
点击,e
选择和程序名字一样的东西,双击。(至于为什么,这完全是跟着大神的方法来的,不然还没其他方法)
来到了如下这样的位置
00401000 04 10 add al,0x10
00401002 40 inc eax
00401003 0003 add byte ptr ds:,al
00401005 07 pop es
00401006 42 inc edx ; ntdll.KiFastSystemCallRet
00401007 6F outs dx,dword ptr es:
00401008 6F outs dx,dword ptr es:
00401009 6C ins byte ptr es:,dx
0040100A 65:61 popad
右键,最下面找-中文搜索引擎-3智能搜索(我电脑配置低,会卡死好久。等等都好了)
来到如下地方
chtr+F,搜索(注册)
忘记了,点F9运行程序,有个登陆窗口,点击登陆都行了。
找到帮助-注册软件
随便注册码,我跟大神学的,输入N个1
点击注册,弹窗
然后我们就在OD里面搜索,注册失败,找到和弹窗类似提示的文字。如下
双击,来到如下代码行
00DB4FBD 8B45 F4 mov eax,dword ptr ss:
00DB4FC0 E8 BB1EA1FF call dumped_.007C6E80
00DB4FC5 E9 99000000 jmp dumped_.00DB5063
00DB4FCA 6A 30 push 0x30
00DB4FCC 8D55 B8 lea edx,dword ptr ss:
00DB4FCF B8 10000000 mov eax,0x10
00DB4FD4 E8 4B2067FF call dumped_.00427024
00DB4FD9 8B45 B8 mov eax,dword ptr ss: ; ntdll.ZwQueryValueKey
00DB4FDC E8 F77265FF call dumped_.0040C2D8
00DB4FE1 8BC8 mov ecx,eax ; dumped_.00640420
00DB4FE3 BA 7852DB00 mov edx,dumped_.00DB5278 ; 注册失败,请支持我们,购买正版!\r注册后,您将获得专业的技术支持和后续升级服务。
00DB4FE8 A1 D82FDF00 mov eax,dword ptr ds:
00DB4FED 8B00 mov eax,dword ptr ds:
00DB4FEF E8 DCAD89FF call dumped_.0064FDD0
00DB4FF4 8D55 B4 lea edx,dword ptr ss:
00DB4FF7 B8 0F000000 mov eax,0xF
发现什么没,注册失败上门有个跳转,刚好符合大神说的关键跳不是,然后选中关键跳的上一句按F2,设置断点。
回到软件重新输入假吗注册,然后发现居然还是弹窗了,说明F2的位置不对,继续上面找设置断点,重试还是不行。 再找还不行,看来这里不是判断注册的地方了。
重新找字符串,搜索,注册失败。(记得找这个下面的)
然后又发现了这么一个地方
下面是注册失败,上门是注册成功,离的不远,看来就是这里了,双击进入。
00DB4FC0 E8 BB1EA1FF call dumped_.007C6E80
00DB4FC5 E9 99000000 jmp dumped_.00DB5063
00DB4FCA 6A 30 push 0x30
00DB4FCC 8D55 B8 lea edx,dword ptr ss:
00DB4FCF B8 10000000 mov eax,0x10
00DB4FD4 E8 4B2067FF call dumped_.00427024
00DB4FD9 8B45 B8 mov eax,dword ptr ss: ; ntdll.ZwQueryValueKey
00DB4FDC E8 F77265FF call dumped_.0040C2D8
00DB4FE1 8BC8 mov ecx,eax ; dumped_.00640420
00DB4FE3 BA 7852DB00 mov edx,dumped_.00DB5278 ; 注册失败,请支持我们,购买正版!\r注册后,您将获得专业的技术支持和后续升级服务。
00DB4FE8 A1 D82FDF00 mov eax,dword ptr ds:
00DB4FED 8B00 mov eax,dword ptr ds:
00DB4FEF E8 DCAD89FF call dumped_.0064FDD0
上面又一个跳转,跳转前面两行F2,回到软件,注册试试看。这样试了几次发现,设置断点还是不能停止,是不是和上门一样呢,这里不是控制注册的代码呢,忽然想到,刚刚在字符串窗口看到,失败上面有成功的代码,往上翻,来到这里
00DB4E1A 8038 00 cmp byte ptr ds:,0x0
00DB4E1D 0F84 A7010000 je dumped_.00DB4FCA
00DB4E23 6A 40 push 0x40
00DB4E25 8D55 E4 lea edx,dword ptr ss:
00DB4E28 B8 10000000 mov eax,0x10
00DB4E2D E8 F22167FF call dumped_.00427024
00DB4E32 8B45 E4 mov eax,dword ptr ss:
00DB4E35 E8 9E7465FF call dumped_.0040C2D8
00DB4E3A 8BC8 mov ecx,eax ; dumped_.00DF9D14
00DB4E3C BA 8C50DB00 mov edx,dumped_.00DB508C ; 注册成功,谢谢您的购买!\r您将获得专业的技术支持和后续升级服务。
00DB4E41 A1 D82FDF00 mov eax,dword ptr ds:
00DB4E46 8B00 mov eax,dword ptr ds:
00DB4E48 E8 83AF89FF call dumped_.0064FDD0
00DB4E4D 8B45 FC mov eax,dword ptr ss:
00DB4E50 8B80 BC030000 mov eax,dword ptr ds:
00DB4E56 8B80 90020000 mov eax,dword ptr ds:
原来这里有个跳转到失败的,我们在je跳转的上面设置断点,肯定是不行的了。
那居然这样,je是跳转到失败的,我们就把它NOP掉,右键-二进制-用NOP填充。如下
测试一下,回到软件,注册,发现成功了。
高兴了把,终于搞定了。
然后我们保存吧。
选中刚刚NOP的数据,右键-复制到可执行文件-选择,然后在新窗口右键-保存文件。然后保存。(最后重新命名)。
这样就大功告成了吗,我们先进入我们破解的程序测试下。
-------------------------以下笨方法,其实可以再字符串找到好多和注册失败,功能限制的地方,一一给爆破了,都可以完美运行了,我这里还是按照我昨晚自己摸索的思路来了,因为我也不知道这个软件爆破了注册,功能上还是有限制的----------------------------
发现软件左上角系统功能-点击数据恢复,会提示。同时会弹网页-指向他的淘宝店。
这个不能忍啊,继续OD载入(请参考上面破解那里的,这里都不啰嗦了哈)。
搜索(请注册),原谅我的语文把,找到这么个关键词搜索。
找到第一处的
双击,进入,看到如下代码
00C6F186 /75 5C jnz short dumped_?00C6F1E4
00C6F188 |6A 10 push 0x10
00C6F18A |8D55 F4 lea edx,dword ptr ss:
00C6F18D |B8 10000000 mov eax,0x10
00C6F192 |E8 8D7E7BFF call dumped_?00427024
00C6F197 |8B45 F4 mov eax,dword ptr ss: ; kernel32.7C839AB0
00C6F19A |E8 39D179FF call dumped_?0040C2D8
00C6F19F |8BC8 mov ecx,eax
00C6F1A1 |BA 94F2C600 mov edx,dumped_?00C6F294 ; 未注册版本不可使用本功能。请注册为正版用户!\r注册后,您将获得专业的技术支持和最新升级版本。
00C6F1A6 |A1 D82FDF00 mov eax,dword ptr ds:
00C6F1AB |8B00 mov eax,dword ptr ds:
00C6F1AD |E8 1E0C9EFF call dumped_?0064FDD0
上面还是有个跳转,我们把他修改为jmp(无条件跳)
这里我遇到个现在还不能解决的方法,按照上面的思路,修改了多处的跳转,最后发现保存的时候,只能保存选择的代码。 而不能全部复制修改,这里真的需要大神帮助,然后我的解决方法只能修改一处保存一处了。
如此反复,重新保存程序,发现可以完美使用了。
附上刚刚重复的方法后的截图。
最终程序完美运行,没任何限制。
写在后面,如果能坚持看完的话
其实开博这个软件还需要修复,还不算足够简单,所以我推荐个更简单的软件练手。
远方系列的 http://www.itfar.com/这是软件的官网
昨天刚把这个系列的全部搞定了,包括爆破,追码,注册机,不过论坛有教程了,就不发了。
<全文完>
已更新刚好的方法破解这个软件了,还有视频教程【新手教程补充】开博送货单软件标准版1字节爆破图片加视频教程
---------------------------------------------------------------------------------------------------------------------------------
一、 【新手教程】开博系列软件脱壳、IAT修复、破解
二、 【新手教程】考真系列之Windows7模块软件-追码教程
三、 【新手教程】完美破解之黑谍宝贝下载专家
四、 【新手教程补充】开博送货单软件标准版1字节爆破图文加视频教程
wjk1195718054 发表于 2015-9-12 20:17
楼主,我今天看到这个,就是找到注册的地方直接cmp比较的值换成了1,跳转实现就ok了。程序也是可以导出,暂 ...
http://www.52pojie.cn/thread-411434-1-1.html
可以的,刚好我这个补充的帖子讲的都是这个,这个帖子的方法有点麻烦。 谢谢教程分享
楼主好人 嗯,不错。支持 看完了,也看懂了。 开博全系列已经搞定,貌似xp下修复无问题 针对此软,XP,ollydump时,重建输入表那里选 方式2,会很简单。 花花公孑 发表于 2015-8-21 09:46
谢谢教程分享
楼主好人
新手刚开始接触。:handshake 奋斗丶小Z 发表于 2015-8-21 09:48
嗯,不错。支持
大Z神都来了,我前两天刚研究完你的帖子,真的很有帮助。很适合新手 ww1113330 发表于 2015-8-21 09:56
开博全系列已经搞定,貌似xp下修复无问题
我昨天刚把远方系列的软件全部搞定了,那个简单,不需要修复。
开博的昨晚刚搞定修复,上午编辑完帖子,下午找找算法,看能追到注册码不,我这次用的都是爆破。 3yu3 发表于 2015-8-21 10:19
针对此软,XP,ollydump时,重建输入表那里选 方式2,会很简单。
嗯嗯,我等下试试哈,大神。接触东西太少,知道的方法也太有限了。