吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7831|回复: 8
收起左侧

  XXX软件重启验证注册带ASProtect壳(Version:2.3)追码记录

[复制链接]
kernel2008 发表于 2008-6-16 23:00
【Blog】http://zzm139138.blog.163.com           By:Kernel2008

【用到工具】OD,Peid,Keymaker
【调试平台】雨林木风ghost xp sp3
【目标程序】XXX邮件群发系统V2008build080606
【破文记录】Kernel2008
【软件下载】http://www.newhua.com
破解记录】

使用Peid查壳,显示为:ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
使用Peid插件重新扫描下,显示为:Version: ASProtect 2.3 SKE build 04.26 Beta [3]
开始时我也是使用脚本在OD下脱掉目标程序上的壳,可是脱壳修复后发现该程序有自校验,一者为了省时,我就试着去调试该目标程序,结果发现可以调试(当然要用高点版本的OD并要使用插件隐藏OD才可以躲过该壳的检测,结果我成功了,庆幸下^_^!)下面就是具体的追码过程了,记录如下:
                 
运行程序出现注册对话框,先看看程序的界面吧,我们就点击试用,程序标题有未注册的字样,好,我们关闭程序,尝试注册看看,输入假码Kernel2008,点击验证注册,提示要重启程序以验证注册。明显是重启验证注册类型,我们先不急,到它的安装目录看看敌情,发现目录下文件Setup.ini里有我们输入的假码Kernel2008,好,我们有了思路。载入目标程序于OD中,使用OD插件隐藏OD,接着在OD命令行下下拦截INI文件断点bp GetPrivateProfileStringA,回车,F9运行程序,此时注意堆栈窗口,我们按两次F9后就到达返回时机了。

2次F9后堆栈窗口中出现下面数据,即是开始读取Setup.ini文件了,数据信息如下-------->

0012F3B8  00C89F40 /CALL 到 GetPrivateProfileStringA
0012F3BC  01770890 |Section = "REGINFO"
0012F3C0  01779074 |Key = "REGNO"
0012F3C4  0050D8BC |Default = "01010101"
0012F3C8  0012F560 |ReturnBuffer = 0012F560
0012F3CC  00000800 |BufSize = 800 (2048.)
0012F3D0  01779188 \IniFileName = "C:\Documents and Settings\Administrator\桌面\200853094639428\Setup.ini"
0012F3D4  0050D340 ASCII "t8F"

F2取消断点,Alt+F9返回到程序领空,代码如下-------->

00C89F40  50       PUSH EAX
00C89F41  51       PUSH ECX
00C89F42  52       PUSH EDX
00C89F43  89E0      MOV EAX,ESP
00C89F45  B9 13000000   MOV ECX,13
00C89F4A  8B10      MOV EDX,DWORD PTR DS:[EAX]
00C89F4C  81C2 FB14FB14  ADD EDX,14FB14FB
00C89F52  85D2      TEST EDX,EDX

继续使用F8往下单步跟踪来到下面的代码-------->


0050D737  50       PUSH EAX
0050D738  8B0D 9C6A5100  MOV ECX,DWORD PTR DS:[516A9C]      
0050D73E  8B09      MOV ECX,DWORD PTR DS:[ECX]
0050D740  8B15 5C6C5100  MOV EDX,DWORD PTR DS:[516C5C]  
0050D746  8B12      MOV EDX,DWORD PTR DS:[EDX]
0050D748  A1 2C935100   MOV EAX,DWORD PTR DS:[51932C]
0050D74D  8B18      MOV EBX,DWORD PTR DS:[EAX]
0050D74F  FF13      CALL DWORD PTR DS:[EBX]
0050D751  8B55 E0     MOV EDX,DWORD PTR SS:[EBP-20] //单步到这里,此时注意堆栈窗口,出现可疑数据

堆栈窗口出现的可疑字符串,不用怀疑,这里的00D4189CD6就是我们的机器码,而3AA094AF54CD0A4A183820E435A26CA2就是注册码了。F8继续往下单步跟踪吧。

0012FDCC  017791DC ASCII "Kernel2008"
0012FDD0  01779188
0012FDD4  01776394 ASCII "30"
0012FDD8  01779088 ASCII "00D4189CD6"
0012FDDC  01779074 ASCII "REGNO"
0012FDE0  01770890 ASCII "REGINFO"
0012FDE4  01773B24 ASCII "3AA094AF54CD0A4A183820E435A26CA2"

使用F8继续往下单步跟踪下去,看看有什么发现的,我们会来到如下代码-------->

0050D754  A1 BC6F5100   MOV EAX,DWORD PTR DS:[516FBC]
0050D759  E8 5273EFFF   CALL e-mail.00404AB0
0050D75E  33C0      XOR EAX,EAX
0050D760  5A       POP EDX
0050D761  59       POP ECX
0050D762  59       POP ECX
0050D763  64:8910     MOV DWORD PTR FS:[EAX],EDX
0050D766  68 7DD75000   PUSH e-mail.0050D77D
0050D76B  A1 2C935100   MOV EAX,DWORD PTR DS:[51932C]
0050D770  E8 F363EFFF   CALL e-mail.00403B68
0050D775  C3       RETN
0050D776 ^ E9 816BEFFF   JMP e-mail.004042FC
0050D77B ^ EB EE      JMP SHORT e-mail.0050D76B
0050D77D  A1 D06A5100   MOV EAX,DWORD PTR DS:[516AD0]
0050D782  8B15 18725100  MOV EDX,DWORD PTR DS:[517218]     
0050D788  8B12      MOV EDX,DWORD PTR DS:[EDX]
0050D78A  E8 2173EFFF   CALL e-mail.00404AB0   // 注意,寄存器窗口出现注册码
0050D78F  A1 406C5100   MOV EAX,DWORD PTR DS:[516C40]
0050D794  8B15 BC6F5100  MOV EDX,DWORD PTR DS:[516FBC]     
0050D79A  8B12      MOV EDX,DWORD PTR DS:[EDX]
0050D79C  E8 0F73EFFF   CALL e-mail.00404AB0   // 读取我们输入的假码kernel2008
0050D7A1  A1 386E5100   MOV EAX,DWORD PTR DS:[516E38]
0050D7A6  8B15 406C5100  MOV EDX,DWORD PTR DS:[516C40]      
0050D7AC  8B12      MOV EDX,DWORD PTR DS:[EDX]
0050D7AE  E8 FD72EFFF   CALL e-mail.00404AB0
0050D7B3  A1 386E5100   MOV EAX,DWORD PTR DS:[516E38]
0050D7B8  8B00      MOV EAX,DWORD PTR DS:[EAX]
0050D7BA  8B15 D06A5100  MOV EDX,DWORD PTR DS:[516AD0]
0050D7C0  8B12      MOV EDX,DWORD PTR DS:[EDX]
0050D7C2  E8 A176EFFF   CALL e-mail.00404E68     //这个是关键Call,下面的跳转即是关键跳!
0050D7C7  75 45      JNZ SHORT e-mail.0050D80E //传说中的关键跳,实现则验证注册失败,反之成功
0050D7C9  A1 386E5100   MOV EAX,DWORD PTR DS:[516E38] //下面没有价值往下跟踪分析了,到此可关闭OD了

在我机器上,我追码的结果如下:

机器码:00D4189CD6
注册码:3AA094AF54CD0A4A183820E435A26CA2

完成上面的操作,我们想做的当然就是使用keymaker制作个注册机了,好,我们找到关键CALL如下:
0050D7C2  E8 A176EFFF   CALL e-mail.00404E68

那么制作注册机的相关信息可以如下(不唯一):

中断地址:0050D7C2
中断次数:1
第一字节:E8
指令长度:5
寄存方式:EDX

呵呵,好的,我们制作好了注册机,那运行注册机看看能否捕获我们的注册码。不妙,太可惜了,被ASProtect壳检测到,并以之为调试器而根本不让程序运行,如此这样对我们这些菜菜就无能为力了,只有搞懂该软件的注册算法,只有我们自己来写注册机了,可是目前的情况是不可能的了,至少对我来说,算法是个盲区。就这样吧,以后抓紧好好学习下算法。再见!(要得到注册码我们可以把目标程序载入OD,再用OD插件隐藏OD,再OD命令行下断点BP 0050D7C2然后F9几下程序就断下来了,注意寄存器窗口,就可以发现我们的注册码了,仅此!)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shaopeng 发表于 2008-6-16 23:56
恩恩,努力学习。 [s:45] [s:45] [s:45] [s:45]
mycsy 发表于 2008-6-17 02:47
[s:39] [s:39] 强悍的破文。。。。。

不顶都不行。。。。
badboytcq 发表于 2008-6-20 00:53
好东西哦 收下了 感谢楼主发布 [s:43] [s:43] [s:43] [s:43] [s:43]
q124570 发表于 2008-6-21 04:11
。。带壳调试。。. .. 阿弥陀佛. .学习 .学习..
a316031 发表于 2008-6-21 05:59
恩恩,努力学习 [s:43]
guitar 发表于 2008-6-21 12:12
学习学习~~ 不错  继续努力
e.skyendy 发表于 2011-3-22 19:30
就是它,谢谢,学习了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-24 14:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表