【文章标题】: 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日开班!