吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 31180|回复: 112
收起左侧

[原创] 学习破解之路:【无线天5.29】寻码过程

  [复制链接]
lmze2000 发表于 2015-5-23 21:11
本帖最后由 lmze2000 于 2015-5-26 20:43 编辑

做为刚刚学得一点点逆向皮毛的小白,为能帮助一些人而有点小成就感
也深知,从一点不会摸索着前行的艰难,很多时候都是在猜测与试验中一点点的往前撑着走,
应坛友Jiejec的要求,录制了一个简单的视频,由于是第一次操作,声音不好听,还有些害羞呀,不习惯讲解,就全是文字说明的吧。
大神们就不要鄙视我了,给指点学习的方向和意见呀~~

链接:http://pan.baidu.com/s/19Aiqq 密码:c7gd

做为小白一名,向那些分享教程的前辈、同辈们致敬!!{:1_931:},发现写完一篇排版精美的教程是需要多么大的精力,特别是写了一半然后所有的东西全没了,还要再重新来一遍的时候。(刚刚写完一半,结果贴不上代码,然后切换了下浏览器的兼容模式,结果已经写好的全没有了。)

软件:无线天5.29windows版
下载地址:http://wifi.corpcorp.com/down.html
壳:经查无壳
所用工具:Cari Olldby
介绍就不多做了,上一张软件安装完成后的截图。安装完是试用7天,20用户数量(这篇破文一路坎坷,先前的截图,和后来测试时的代码完全不一样了,还得重新截一遍图

破解前

破解前


一、现在我们开始动手了,经过这么多天的学习,我们一般动手前,都是要先查一下壳,看有没有壳保护程序。经查这个无线天是裸奔的,这对我们小新手来说是最好的消息。
接下来的步骤就是,先运行程序,如上一张图,找到注册的位置,先注册一下,看看出错信息,来初步掌握一下注册的流程,是直接弹出错误信息,还是重启验证等等
好给我们的破解带来帮助。经过简单的试验,上面的是“激活码错误”这条消息,那么我们就用OD载入程序,然后在汇编窗口右键--->“中文搜索引挚"--->"智能搜索"
搜索的关键字就用”激活码错误" ,搜索结果见下图,,在“激活码错误”那行,双击左键,跳转到反汇编窗口。来查找关键Call的位置。

1.1 这是搜索窗口,用来查找错误信息

字符串搜索

字符串搜索


1.2 查找关键Call
一般的对于新手来说,在查找关键Call的地方,太让人头疼了,即使是看教程,在图文的指导下也可以找到关键Call,可一般让自己来找,都会
发蒙。特别是大神们,指着某个Call说,这个就是关键的了。那么像我们小白要怎么找呢。现在我们的这个水平,多半要多试验,多跑些冤枉路
会对以后的提高有好处。那么我们就以下面的例子来说明如何找关键Call.(说明:由于系统不同,OD载入的程序地址,可能每台机器不一样,
不用安全的参照我图片的地址来对应,你们可以参照反汇编出来的代码来查看。

关键Call分析

关键Call分析


下面这段代码,就是刚才双击错误信息跳转到汇编窗口的代码,注意看反汇编出来的代码,别注意前面的地址:
通过观察,跳过激活码错误的跳转依次有(从下向上的顺序)
01138262   /EB 13           jmp short WiFiNoNo.01138277
01138245   /75 30           jnz short WiFiNoNo.01138277
01138234   /75 41           jnz short WiFiNoNo.01138277
01138227   /74 4E           je short WiFiNoNo.01138277
这4条都是跳过错误的跳转,虽然在这上面有一个Call
0113822C    FF15 D0612D01   call dword ptr ds:[<&KERNEL32.IsBadReadP>; kernel32.IsBadReadPtr  (但是看注释应该是系统调用,不是关键Call)
,在往上面看看,又发现了一条je跳转语句,并且还有test比较,这条je跳转语句,直接将上面4条跳向成功的语句都给越过去了。
所以这么可疑的Call,成为关键Call是非常有可能的,F2在这下断点,先试运行一下。经过多次调试,这个是关键Call无疑了。
[Asm] 纯文本查看 复制代码
01138212    8D5424 58       lea edx,dword ptr ss:[esp+0x58]
01138216    E8 B53E0100     call WiFiNoNo.0114C0D0                   ; 此处是关键Call,注册码也是在这里计算完成。
0113821B    83C4 0C         add esp,0xC
0113821E    84C0            test al,al
01138220    74 42           je short WiFiNoNo.01138264

这段是关键Call段的代码
[Asm] 纯文本查看 复制代码
01138212    8D5424 58       lea edx,dword ptr ss:[esp+0x58]
01138216    E8 B53E0100     call WiFiNoNo.0114C0D0                   ; 此处是关键Call,注册码也是在这里计算完成。
0113821B    83C4 0C         add esp,0xC
0113821E    84C0            test al,al
01138220    74 42           je short WiFiNoNo.01138264
01138222    8B77 04         mov esi,dword ptr ds:[edi+0x4]
01138225    3BF3            cmp esi,ebx
01138227    74 4E           je short WiFiNoNo.01138277
01138229    6A 08           push 0x8
0113822B    56              push esi
0113822C    FF15 D0612D01   call dword ptr ds:[<&KERNEL32.IsBadReadP>; kernel32.IsBadReadPtr
01138232    85C0            test eax,eax
01138234    75 41           jnz short WiFiNoNo.01138277
01138236    8B06            mov eax,dword ptr ds:[esi]
01138238    83F8 01         cmp eax,0x1
0113823B    75 05           jnz short WiFiNoNo.01138242
0113823D    8B76 0C         mov esi,dword ptr ds:[esi+0xC]
01138240    EB 0B           jmp short WiFiNoNo.0113824D
01138242    83F8 14         cmp eax,0x14
01138245    75 30           jnz short WiFiNoNo.01138277
01138247    8B4E 70         mov ecx,dword ptr ds:[esi+0x70]
0113824A    8B71 0C         mov esi,dword ptr ds:[ecx+0xC]
0113824D    6A 01           push 0x1
0113824F    68 E8B72E01     push WiFiNoNo.012EB7E8                   ; 提示
01138254    56              push esi
01138255    BE 9CD92E01     mov esi,WiFiNoNo.012ED99C                ; 您使用的是旧版激活码,请找联系软件卖家升级激活码。
0113825A    E8 71981300     call WiFiNoNo.01271AD0
0113825F    83C4 0C         add esp,0xC
01138262    EB 13           jmp short WiFiNoNo.01138277
01138264    6A 10           push 0x10
01138266    68 00902E01     push WiFiNoNo.012E9000                   ; 错误
0113826B    68 D0D92E01     push WiFiNoNo.012ED9D0                   ; 激活码错误
01138270    53              push ebx




1.3、通过上面的分析,下好断点, 我们F9将程序运行起来,然后点击注册按钮---->输入我们的假码(说明,在写这篇破文的时候,发现我们输入的假码,会影响到生成的
真码,也就是说,不同的假码会使真码的有效用户数量不同,这个一会在做下测试,我用的数字假码、123生成3个有效用户,1234567生成了67个有效用户,123456789012345生
成了9242个有效用户、7131个无效用户,具体咋回事,由于不会分析,也弄不清楚。只能来猜测
。)
在点击注册的时候,程序断在了我们刚才下的断点处,即
01138216    E8 B53E0100     call WiFiNoNo.0114C0D0                   ; 此处是关键Call,注册码也是在这里计算完成。
在这里,我们按F7进入Call

进入关键Call.png

1.4 我们的追码开始了漫长的过程,,,进到这个Call里面,我们单步F8往前走,直到遇见了如下代码。
这里有个cmp比较,然后一个je跳转,和一个jmp回跳,这里是比较假码是否和真码一样长度,如果不等于15,就回跳,
如果大家的假码是不等于15的,那么在cmp完成后,修改一下ZF标志位的值为1,让je跳转实现。
[Asm] 纯文本查看 复制代码
00CEC2D3    03F8            add edi,eax
00CEC2D5    13DA            adc ebx,edx
00CEC2D7    3B7424 44       cmp esi,dword ptr ss:[esp+0x44]          ; 此处应该是对假码的长度进行比较,
00CEC2DB    74 26           je short WiFiNoNo.00CEC303
00CEC2DD    8D8C24 C0000000 lea ecx,dword ptr ss:[esp+0xC0]
00CEC2E4    E8 07BC0600     call WiFiNoNo.00D57EF0
00CEC2E9    8D8C24 A4000000 lea ecx,dword ptr ss:[esp+0xA4]
00CEC2F0    E8 FBBB0600     call WiFiNoNo.00D57EF0
00CEC2F5    8D4C24 50       lea ecx,dword ptr ss:[esp+0x50]
00CEC2F9    E8 F2BB0600     call WiFiNoNo.00D57EF0
00CEC2FE  ^ E9 A8FEFFFF     jmp WiFiNoNo.00CEC1AB                    ; 当不满足的时候,jmp跳回上面。
00CEC303    8B5424 18       mov edx,dword ptr ss:[esp+0x18]
00CEC307    8B4424 14       mov eax,dword ptr ss:[esp+0x14]
00CEC30B    53              push ebx
00CEC30C    57              push edi
00CEC30D    52              push edx
00CEC30E    50              push eax
00CEC30F    68 8002E900     push WiFiNoNo.00E90280                   ; %014I64d%06I64d


123

123


在上面的代码向下不远处,同样还有一处jnz的跳转,也不能让它成功回跳过去,继续修改ZF标志位,
00CEC394 E8 57890700 call WiFiNoNo.00D64CF0 ; 在这个Call里面,这个附近EDX生成一串数字,其中的后4位,感觉像有效用户数。
同时发现这个Call会让EDX生成一串数字,这串数字的后4位,就是真码的有效用户数。
[Asm] 纯文本查看 复制代码
00CEC371    83C4 1C         add esp,0x1C
00CEC374    394424 44       cmp dword ptr ss:[esp+0x44],eax
00CEC378  ^ 0F85 5FFFFFFF   jnz WiFiNoNo.00CEC2DD                    ; 此处的jnz回跳,同样不能让它跳回去,修改ZF标志位为1
00CEC37E    8B4424 18       mov eax,dword ptr ss:[esp+0x18]
00CEC382    8B4C24 14       mov ecx,dword ptr ss:[esp+0x14]
00CEC386    50              push eax
00CEC387    51              push ecx
00CEC388    68 FCDCE800     push WiFiNoNo.00E8DCFC                   ; %014I64d
00CEC38D    8DB424 94000000 lea esi,dword ptr ss:[esp+0x94]
00CEC394    E8 57890700     call WiFiNoNo.00D64CF0                   ; 在这个Call里面,会生成有效授权用户数
00CEC399    83C4 0C         add esp,0xC
00CEC39C    50              push eax
00CEC39D    8D8C24 A8000000 lea ecx,dword ptr ss:[esp+0xA8]
00CEC3A4    C68424 0C010000>mov byte ptr ss:[esp+0x10C],0x4


1.5 经过上面2个回跳之后,继续F8,就离我们成功的地方不远了,先是发现机器码出现了。

机器码

机器码


1.6、在机器码出现后,真码就在其后出现了。

真码

真码


相应的代码如下:
[Asm] 纯文本查看 复制代码
00CEC54E    8D8424 8C000000 lea eax,dword ptr ss:[esp+0x8C]
00CEC555    50              push eax
00CEC556    C68424 2C010000>mov byte ptr ss:[esp+0x12C],0x7
00CEC55E    E8 CDE9FFFF     call WiFiNoNo.00CEAF30                   ; 这个call生成了机器码,在EAX中。
00CEC563    83C4 04         add esp,0x4
00CEC566    C68424 28010000>mov byte ptr ss:[esp+0x128],0x8
00CEC56E    8378 14 10      cmp dword ptr ds:[eax+0x14],0x10
00CEC572    72 02           jb short WiFiNoNo.00CEC576
00CEC574    8B00            mov eax,dword ptr ds:[eax]
00CEC576    8B4C24 48       mov ecx,dword ptr ss:[esp+0x48]
00CEC57A    8B11            mov edx,dword ptr ds:[ecx]
00CEC57C    52              push edx
00CEC57D    8B5424 48       mov edx,dword ptr ss:[esp+0x48]
00CEC581    8D8C24 00010000 lea ecx,dword ptr ss:[esp+0x100]
00CEC588    51              push ecx
00CEC589    C68424 30010000>mov byte ptr ss:[esp+0x130],0x9
00CEC591    8B12            mov edx,dword ptr ds:[edx]
00CEC593    8BC8            mov ecx,eax
00CEC595    E8 A6F5FFFF     call WiFiNoNo.00CEBB40                   ; 这个Call是生成注册码的子Call。不会分析算法,过去了。
00CEC59A    83C4 28         add esp,0x28
00CEC59D    8D4C24 6C       lea ecx,dword ptr ss:[esp+0x6C]
00CEC5A1    C68424 08010000>mov byte ptr ss:[esp+0x108],0xB
00CEC5A9    E8 42B90600     call WiFiNoNo.00D57EF0
00CEC5AE    8B4424 3C       mov eax,dword ptr ss:[esp+0x3C]          ; 真假码都出现了。
00CEC5B2    50              push eax
00CEC5B3    8D8C24 8C000000 lea ecx,dword ptr ss:[esp+0x8C]
00CEC5BA    E8 5186FAFF     call WiFiNoNo.00C94C10
00CEC5BF    8BC8            mov ecx,eax


破解完成

破解完成


这个是用假码123456789012345生成的真码,用户数是9424,7173个失败的。

至此,完成无线天的追码过程,难点就是找到关键CAll,并且中间有2个回跳过程要一定不要让它们回跳过去,发现这个问题,都是通过多次的失败才找到的。
再就是从进入到关键Call后,F8的代码太远了,一会接着去试一下,不同的假码生成的用户数量问题,有结果后再编辑本帖子。
---------------------刚才又试了几个假码,,
使用ABCD.....XYZ生成的真码,支持的用户数是11652个,失效用户数是4904.
[Asm] 纯文本查看 复制代码
堆栈 ss:[0018DFE0]=0018E110, (ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
eax=0018E080, (ASCII "QC6WLPTSTU39VVB")


adcd

adcd


[Asm] 纯文本查看 复制代码
堆栈地址=001CE06C, (ASCII "99999999999999")
ecx=0862E4B0, (ASCII "P82CFUF8999SPJ9B")

99999999.png


点评

追码有了,楼主做个注册机出来不是很容易?  发表于 2015-8-30 00:33

免费评分

参与人数 20威望 +2 吾爱币 +1 热心值 +20 收起 理由
zhqh + 1 + 1 谢谢@Thanks!
CK_w + 1 谢谢@Thanks!
qidians + 1 谢谢,真取到注册码了。
zjshao + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
独行风云 + 1 楼主您辛苦了,感谢热心分享。
rsnyx + 1 用心讨论,共获提升!
MT先森 + 1 我很赞同!
a5606495 + 1 谢谢@Thanks!
liulf555 + 1 谢谢@Thanks!
wang1234561211 + 1 谢谢分享
玉树临风 + 1 我很赞同!
blackmere + 1 用WORD做好,完毕以后复制,粘贴到帖子里面.
jiegec + 1 感谢楼主帮了大忙了
Hmily + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
☆茗记★ + 1 我很赞同!
大卫量子 + 1 必须顶帖,给力分享
qaz003 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
Mrxn + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
adq_cq + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
北鱼何为 + 1 沙发

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| lmze2000 发表于 2016-3-25 07:26
LCG丶Ran 发表于 2016-3-23 08:50
@lmze2000 能否把最新版的破解掉,找的几个下载地址都不行。。

http://pan.baidu.com/s/1c1F3KoK
这是5.29的版本。。。然后参照教程。找出注册码,然后在升级到新版本无线天。
hancool 发表于 2015-5-29 22:16
我也是新手,搞了一下这个软件的破解。跟踪了三天,终于找到一个破解的方法,我的思路是bypass关键的跳转;用OD打开(winxp环境下),修改了三个关键跳转:

1、
0045C374      394424 44     cmp dword ptr ss:[esp+0x44],eax
0045C378    ^ 0F85 5FFFFFFF jnz WiFiNoNo.0045C2DD
修改为:
0045C374      33C0          xor eax,eax
0045C376      90            nop
0045C377      90            nop
0045C378      90            nop
0045C379      90            nop
0045C37A      90            nop
0045C37B      90            nop
0045C37C      90            nop
0045C37D      90            nop
2:
0045C610      84DB          test bl,bl
0045C612    ^ 0F85 93FBFFFF jnz WiFiNoNo.0045C1AB
修改为:
0045C610      33DB          xor ebx,ebx
0045C612      90            nop
0045C613      90            nop
0045C614      90            nop
0045C615      90            nop
0045C616      90            nop
0045C617      90            nop
3:
00447F4D      85C0          test eax,eax
00447F4F      74 0C         je short WiFiNoNo.00447F5D
修改为:
00447F4D      33C0          xor eax,eax
00447F4F      EB 0C         jmp short WiFiNoNo.00447F5D

然后在反汇编窗口中右健-“复制到可执行文件”-“所有修改”,选择“全部复制”;在弹出的文件窗口中,右键-“保存到文件”,另存为wifinono2.exe。重新运行wifinono2.exe,输入123456789012345,即可注册成功(这个号码是我破解时用的,很奇怪换了其它的却提示注册失败。能力有限,注册算法还没有完全搞懂,希望有大神指点指点。)
hkzx 发表于 2015-5-23 21:17
asd9988 发表于 2015-5-23 21:34
后续呢?没了?
 楼主| lmze2000 发表于 2015-5-23 21:41
asd9988 发表于 2015-5-23 21:34
后续呢?没了?

多次编辑呢,不敢一下完成了,

点评

等你啥时候编辑完了我再看看能不能给你加分  发表于 2015-5-23 21:45
北鱼何为 发表于 2015-5-23 21:41
说好的分析呢?
JamesFanQin 发表于 2015-5-23 21:43
是呀。楼主,只有一半哦。继续。。。
ayida 发表于 2015-5-23 22:19
楼主,继续!
happy曲月 发表于 2015-5-23 22:41
前排学习
Norton 发表于 2015-5-23 22:44
楼主给力
qaz003 发表于 2015-5-23 23:18
楼主好有耐心撒花赞一下。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 06:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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