wang1234561211 发表于 2015-8-21 09:40

【新手教程】开博系列软件脱壳、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字节爆破图文加视频教程

wang1234561211 发表于 2015-9-12 20:29

wjk1195718054 发表于 2015-9-12 20:17
楼主,我今天看到这个,就是找到注册的地方直接cmp比较的值换成了1,跳转实现就ok了。程序也是可以导出,暂 ...

http://www.52pojie.cn/thread-411434-1-1.html
可以的,刚好我这个补充的帖子讲的都是这个,这个帖子的方法有点麻烦。

花花公孑 发表于 2015-8-21 09:46

谢谢教程分享
楼主好人

Cizel 发表于 2015-8-21 09:48

嗯,不错。支持

Jayce 发表于 2015-8-21 09:52

看完了,也看懂了。

ww1113330 发表于 2015-8-21 09:56

开博全系列已经搞定,貌似xp下修复无问题

3yu3 发表于 2015-8-21 10:19

针对此软,XP,ollydump时,重建输入表那里选 方式2,会很简单。

wang1234561211 发表于 2015-8-21 10:25

花花公孑 发表于 2015-8-21 09:46
谢谢教程分享
楼主好人

新手刚开始接触。:handshake

wang1234561211 发表于 2015-8-21 10:26

奋斗丶小Z 发表于 2015-8-21 09:48
嗯,不错。支持

大Z神都来了,我前两天刚研究完你的帖子,真的很有帮助。很适合新手

wang1234561211 发表于 2015-8-21 10:27

ww1113330 发表于 2015-8-21 09:56
开博全系列已经搞定,貌似xp下修复无问题

我昨天刚把远方系列的软件全部搞定了,那个简单,不需要修复。
开博的昨晚刚搞定修复,上午编辑完帖子,下午找找算法,看能追到注册码不,我这次用的都是爆破。

wang1234561211 发表于 2015-8-21 10:28

3yu3 发表于 2015-8-21 10:19
针对此软,XP,ollydump时,重建输入表那里选 方式2,会很简单。

嗯嗯,我等下试试哈,大神。接触东西太少,知道的方法也太有限了。
页: [1] 2 3 4 5 6
查看完整版本: 【新手教程】开博系列软件脱壳、IAT修复、破解