首页
社区
课程
招聘
[原创]Inline Patch破解XX自动关机系统
发表于: 2008-1-20 14:10 9308

[原创]Inline Patch破解XX自动关机系统

2008-1-20 14:10
9308

【文章标题】: Inline Patch破解XX自动关机系统
【文章作者】: samisgod
【作者邮箱】: sfl@issfl.cn
【作者主页】: issfl.cn
【作者QQ号】: 598620772
【软件名称】: XX自动关机系统
【软件大小】: 2796 KB
【下载地址】: 不好公布
【加壳方式】: ASProtect 2.3 SKE build 06.26 Beta [Extract]
【保护方式】: Aspr+内部特别处理+自校验
【使用工具】: PEiD+OD+Inline Patcher0.2
【操作平台】: XP Sp2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  话说Aspr越升越高,我们的脚本大仙们写的脚本倒也越来越完善了,支持下
  不过本文没有用到脚本,o(∩_∩)o...哈哈
  
  废话不说了
  首先差壳,刚才写过了
  ASProtect 2.3 SKE build 06.26 Beta [Extract]
  试了下脚本,可以跑到OEP,但是无法Dump下来
  用LoadPE提示那个程序是系统进程,Dump出错-_-bb
  
  于是干脆直接拿出OD拖着壳跑
  很快进入界面,提示输入默认密码
  随后进入界面,提示还剩下的使用次数,大概看了下,未注册版无法修改程序密码
  OK,目标明确,
  1.干掉次数限制
  2.使程序可以修改密码
  
  1.准备工作
  我们要干掉次数限制,就首先需要知道次数为0时程序会干什么
  OK,我自己打开关闭了程序XX次 -_-bbb
  把次数用完了,结果如图
  
  OK,点击退出,我们开始工作
  
  2.调试
  首先大概看了下软件界面,应该用了外部控件美化
  打开OD,下断bp CreateFileA
  注意堆栈
  数次F9后就会看到
  2.jpg
  已经开始搞SkinMagic的皮肤美化了
  好,到这里程序应该已经解码完了
  Ctrl+F9数次返回这里
  004CCBBC    90              nop
  004CCBBD    90              nop
  004CCBBE    90              nop
  004CCBBF    90              nop
  004CCBC0    8B4424 04       mov     eax, dword ptr [esp+4]
  004CCBC4    53              push    ebx
  004CCBC5    56              push    esi
  004CCBC6    57              push    edi
  004CCBC7    68 6C4D5300     push    00534D6C                         ; ASCII "rb"
  004CCBCC    8BF1            mov     esi, ecx
  004CCBCE    50              push    eax
  004CCBCF    E8 92FD0400     call    0051C966
  004CCBD4    8BF8            mov     edi, eax                         ; skinmagi.00537580
  我们可以把CreateFileA断点K掉
  换在004CCBC0这里下个断
  好了,F8跟,走过一堆垃圾指令【对我们来说,嘿嘿】
  来到这里
  0040EE0D   /75 0A           jnz     short 0040EE19
  0040EE0F   |E8 8C090000     call    0040F7A0
  0040EE14   |E9 B7020000     jmp     0040F0D0
  0040EE19   \8D9424 14010000 lea     edx, dword ptr [esp+114]
  0040EE20    52              push    edx
  0040EE21    E8 8A240000     call    004112B0
  0040EE26    C68424 20170000>mov     byte ptr [esp+1720], 1
  0040EE2E    A1 C4BF4200     mov     eax, dword ptr [42BFC4]
  0040EE33    3BC3            cmp     eax, ebx
  0040EE35    7E 45           jle     short 0040EE7C
  0040EE37    83F8 02         cmp     eax, 2
  0040EE3A    7E 13           jle     short 0040EE4F
  0040EE3C    83F8 05         cmp     eax, 5
  0040EE3F    75 3B           jnz     short 0040EE7C
  0040EE41    E8 DA0A0000     call    0040F920
  0040EE46    84C0            test    al, al
  0040EE48    74 32           je      short 0040EE7C
  
  这时你可以设置从那个jmp让他走,不过要经过程序的校验,我最怕麻烦,所以直接往下
  很快来到此
  0040F001    8B4424 10       mov     eax, dword ptr [esp+10]
  0040F005    3BC3            cmp     eax, ebx
  0040F007    77 41           ja      short 0040F04A
  0040F009    833D C4BF4200 0>cmp     dword ptr [42BFC4], 2
  0040F010    74 2E           je      short 0040F040
  哈,挖到了,那个ja就是检测次数的关键了
  把它改成jmp就可以跳向主程序,记录下来
  0040F007    77 41 ja      short 0040F04A
  改成0040F007   /EB 41           jmp     short 0040F04A
  顺便记下0040F001   .  8B4424 10     mov     eax, dword ptr [esp+10]
  当成解码标示吧,这个随便了
  
  一会要用
  好了,现在F9走了,输入密码进入程序
  进入第二部分
  破解密码修改功能,点击下,弹出了对话框
  OK,bp MessageBoxW下断
  0012DFA0   0040F9DB  /CALL 到 MessageBoxW 来自 shutdown.0040F9D5
  0012DFA4   00020180  |hOwner = 00020180 (class='#32770',parent=00230098)
  0012DFA8   005D9068  |Text = ""B8,"行",BB,"您的支持?,AC,"",B4,"讼罟",A6,"能",D7,"",A2,"",B2,"嵊煤?,B2,"拍苁褂茫",A1,""
  0012DFAC   005DABD0  |Title = ""B6,"",A8,"时关",BB,"?3000?,A8,"试用",B0,"妫",A1,"",BB,"箍梢允杂?",B4,"危",A1,")"
  0012DFB0   00000040  \Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
  0012DFB4   0C496AA5
  0012DFB8   005D9068
  右击第一行,反汇编窗口中跟随
  来到这里
  0040F9D2    51              push    ecx
  0040F9D3    52              push    edx
  0040F9D4    50              push    eax
  0040F9D5    FF15 B8F74100   call    dword ptr [41F7B8]               ; USER32.MessageBoxW
  0040F9DB    8D4C24 04       lea     ecx, dword ptr [esp+4]
  0040F9DF    FF15 08F44100   call    dword ptr [41F408]               ; MFC80U.7834DD87
  Ctrl+A下,到段首
  0040F980  /$  6A FF         push    -1
  0040F982  |.  68 D9BB4100   push    0041BBD9
  一大堆调用,汗,怎么看都像VC8的XX调用方式-_-xx
  右键,查看调用树
  右键,在每个调用上设置断点,好了,F9让程序回去,再次点击修改密码
  00406600   > \8B4E 20       mov     ecx, dword ptr [esi+20]
  00406603   .  51            push    ecx
  00406604   .  6A 6C         push    6C
  00406606   .  E8 75930000   call    0040F980
  0040660B   .  83C4 08       add     esp, 8
  断在了这里,OD提示
  跳转来自 004065A5, 004065AC
  跟上去
  004065A5   . /74 59         je      short 00406600
  004065A7   . |837C24 08 58  cmp     dword ptr [esp+8], 58
  004065AC   . |75 52         jnz     short 00406600
  004065AE   . |EB 04         jmp     short 004065B4
  很明显了,改成这样
  004065A5     /EB 07         jmp     short 004065AE
  004065A7   . |837C24 08 58  cmp     dword ptr [esp+8], 58
  004065AC   . |75 52         jnz     short 00406600
  004065AE   . \EB 04         jmp     short 004065B4
  你Nop掉也可以,不过等下InlinePatch要浪费空间
  好了,信息收集完成,开始Patch
  
  掏出ASProtect SKE Inline Patcher V0.2工具
  设置如图,标示刚才我记下了
  0040F001   .  8B4424 10     mov     eax, dword ptr [esp+10]
  就随便用这个了,设置以及成功样子如图
  
  RVA就是VA减去基址400000完了
  注意看工具给出的提示
  ZonaLibreVA   49D417
  [我的不是英文版,不知是哪国鸟文,-_-b]
  
  好了,OD载入改好的程序,Ctrl+G到49D417去,嘿嘿,工具已经给我们准备好空间写代码了
  还记得我们要Patch的两处吗?
  0040F007   /EB 41           jmp     short 0040F04A
  004065A5     /EB 07         jmp     short 004065AE
  好了,开始写代码,注意代码倒序原则
  0049D417   mov     dword ptr [40F007], 41EB
  0049D421   mov     dword ptr [4065A5], 7EB
  OK.现在保存修改,运行,成功了,嘿嘿
  附图一张
  程序标题估计从第一次跳的地方可过去
  不过太懒,不搞了
  
           
  
--------------------------------------------------------------------------------
【经验总结】
  实在扒不下来壳就只有带壳搞了,Loader/Patcher随便了
  我是小菜鸟一只,有疏漏之处请大侠们指正
  
--------------------------------------------------------------------------------
【版权声明】: 本文由本人所写,仅供学习指正,对于滥用破解造成的一切纠纷概不负责

                                                       2008年01月20日 下午 02:07:39


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
晕,老大快来解决下,标题怎么回事
抓狂了,每次预览都让我选分类,
提交后变成了这样
2008-1-20 14:14
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
你这个没有自校验嘛
2008-1-20 17:18
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
有,但是不严格
你只要添加一个区段就XXXX

提示可能被病毒感染
2008-1-20 17:59
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5

只是区段数校验?较弱的
2008-1-20 20:52
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
没仔细看到底什么校验
反正InlinePatch完没事
估计强度也确实不大,下个消息框断点应该就OK了
反正都破了,不管那么多了
2008-1-20 22:22
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
话说这软件防护倒是做了不少
权限/修改句柄...
真够XX的
第一次直接用OD去Dump
结果弹出了无限个错误窗口,汗
2008-1-20 22:25
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
另外,这软件MS对正式版有校验
如不通过会直接启动软件卸载

怕麻烦了一点,直接让它变成无限的试用版
偷懒下,哈啊
2008-1-20 22:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
对于我们新手来说,帮助很大的哦!
2008-1-21 11:06
0
雪    币: 424
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
嘿嘿……在UN看过了,来这里再看下……
2008-1-21 14:04
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
嘿嘿,偶在两边一起混,跟某些大哥一样
2008-1-21 17:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
长知识了,对我而言 有帮助
2008-1-21 18:32
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13

ASProtect SKE Inline Patcher V0.2

附上吧,看雪DVD里只有v0.1a
2008-1-21 22:41
0
雪    币: 239
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
附加贴上去了
内加了E文版
2008-1-22 07:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这篇文章我喜欢
写得很好呀\
让我有了思路
谢谢楼主
2008-3-10 17:35
0
雪    币: 9
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
受教!很好!
2008-6-15 23:16
0
雪    币: 590
活跃值: (177)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
17
领教了,呵呵,支持你
2008-6-16 09:31
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
呵呵 支持下
2008-8-16 03:10
0
游客
登录 | 注册 方可回帖
返回