吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 42165|回复: 225

[原创逆向图文] 难寻之核盾web网络验证取全部数据思路分析。

  [复制链接]
难寻。 发表于 2017-6-27 11:49 | 显示全部楼层 |阅读模式

搜了下,没有关于核盾web数据的教程,这里小菜为大家献上,很简单的思路,纯适合小白,大牛飘过

昨天看到有个web爆破,我才发现核盾出了个web登录,我在这里为核盾web送上见面礼,喜欢的请大家给评个分,感觉升级好难。

下载源码看了一下,大概主要就两个子程序

1.调用webapi(网址,参数)    提交数据到网址  山寨需要用到的数据,在这里可以获取到,核盾3要素嘛,源码如下:

[ecode=1=3].版本 2
AppID = 18
SafeCode = “843007551”
CustomCode = “456”
url = “WebApi/Initialize?”
参数 = “appID=” + 到文本 (AppID) + “&safeCode=” + SafeCode + “&customCode=” + CustomCode
返回值 = 到文本 (调用WebApi (url, 到字节集 (参数)))[/ecode]


当然还有其他各种提交的数据,机器码啦版本啦等等都可以,总之就是提交的数据都要用这子程序提交,大家看下源码,我就不一一示例了

2.核盾_json.GetValue (参数)     取回数据到本地  伪造数据需要用的数据,在这里可以获取到,返回时间啊,静态数据啊,远程调用啊,源码如下:

到期时间 = 到数值 (登录后数据.GetValue (“expireTime”))   时间
登录后数据.GetValue (“staticData”)  静态数据

[ecode=1=3].版本 2
url = “WebApi/TelnetFun”
参数 = “fun=” + fun + “?m=” + param
返回值 = 到文本 (调用WebApi (url, 到字节集 (参数)))
json.SetJSON (返回值)
json.Parser ()[/ecode]

返回 (json.GetValue (“msg”))      远程调用

还包括什么公告,心跳之类的,总之就是返回的数据都需要从这里取回,大家也可以下载源码自己看一下

那么问题来了,知道这两个是主要子程序,我们在od中怎么去找它呢?

超简单大家都会的方法,按钮事件F8 单步 F7进call  call代表跳转 调用子程序嘛,因为这俩子程序都是需要参数的,所以F7进call 55 那里就应该看到提交的参数,如果看到了,证明就是你要找的call  如果没看到,可能就是其他运算call之类的,那我们找调用webapi这个call
QQ截图20170627105846.png
我们看到,在登录按钮下 会调用这个子程序,我们编译出来扔od看一下,因为有时钟 ,我就没用按钮特征码找了,直接用的虫子。
控件名称:登陆按钮→事件地址:401253
.版本 2
参数 = “userName=” + 用户帐号1.内容 + “&password=” + 登陆密码1.内容 + “&verifyCode=” + 验证码1.内容 + “&machineCode=” + 机器码
返回值 = 到文本 (调用WebApi (url, 到字节集 (参数)))
在这句话中,调用了3个子程序,到文本(),调用webapi(),到字节集(),其中只有调用webapi置入了vm代码,所以我们按钮事件下,只需要要到这个带vm代码的就是调用webapi子程序了
那我们就按钮事件下的call都下断?错了~太麻烦,我们只需要在 字符串 &machineCode= 下面再有call再下断,起码能省好多call呢,原因就是 ,很明显子程序是在这个字符串之后调用的嘛
这时候 挨个call下断,跟进去找vm代码,有的肯定就是这个子程序了
那我在第7个call中找到了vm代码

[Asm] 纯文本查看 复制代码
00401906   $  55            PUSH EBP
00401907   .  8BEC          MOV EBP, ESP
00401909   .  81EC 5C000000 SUB ESP, 0x5C
0040190F   .  C745 FC 00000>MOV DWORD PTR SS:[EBP-0x4], 0x0
00401916   .  C745 F8 00000>MOV DWORD PTR SS:[EBP-0x8], 0x0
0040191D   .  C745 F4 00000>MOV DWORD PTR SS:[EBP-0xC], 0x0
00401924   .  C745 F0 00000>MOV DWORD PTR SS:[EBP-0x10], 0x0
0040192B   .  C745 EC 00000>MOV DWORD PTR SS:[EBP-0x14], 0x0
00401932   .  C745 E8 00000>MOV DWORD PTR SS:[EBP-0x18], 0x0
00401939   .  C745 E4 00000>MOV DWORD PTR SS:[EBP-0x1C], 0x0
00401940   .  C745 E0 00000>MOV DWORD PTR SS:[EBP-0x20], 0x0
00401947   .  C745 DC 00000>MOV DWORD PTR SS:[EBP-0x24], 0x0
0040194E   .  C745 D8 00000>MOV DWORD PTR SS:[EBP-0x28], 0x0
00401955   .  C745 D4 00000>MOV DWORD PTR SS:[EBP-0x2C], 0x0
0040195C   .  C745 D0 00000>MOV DWORD PTR SS:[EBP-0x30], 0x0
00401963   .  C745 CC 00000>MOV DWORD PTR SS:[EBP-0x34], 0x0
0040196A   .  68 08000000   PUSH 0x8
0040196F   .  E8 9A670000   CALL 0040810E
00401974   .  83C4 04       ADD ESP, 0x4
00401977   .  8945 C8       MOV DWORD PTR SS:[EBP-0x38], EAX
0040197A   .  8BF8          MOV EDI, EAX
0040197C   .  BE 52FE4900   MOV ESI, 0049FE52
00401981   .  AD            LODS DWORD PTR DS:[ESI]
00401982   .  AB            STOS DWORD PTR ES:[EDI]
00401983   .  AD            LODS DWORD PTR DS:[ESI]
00401984   .  AB            STOS DWORD PTR ES:[EDI]
00401985   .  EB 10         JMP SHORT 00401997
00401987   .  56 4D 50 72 6>ASCII "VMProtect begin",0


并且在堆栈窗口中找到他的两个参数

0012F700  |003C15F8  ASCII "userName=nanxun&password=xuepojie&verifyCode=&machineCode=123"  提交的参数 帐号密码验证码机器码
0012F704  |0049FE15  ASCII "WebApi/Login"  网址

因此我们确定这是webapi子程序的call ,在段首00401906 下个断点,按其他按钮试试吧,我们按注册按钮,因为注册按钮下也调用了这个子程序

222.png
在注册按钮按下,我们发现又进了这个call,没错,就是它,堆栈窗口出现:
0012F700   003697D8  ASCII "userName=nanxun&password=xuepojie&KEY=&data=&verifyCode=&machineCode=123"
0012F704   004A01F2  ASCII "WebApi/Register?"

是不是和源码一样?举一反三,退出程序重新载入,初始化的时候也调用了,那我们是不是可以获得核盾3要素了?
026AFF64   007ACBD8  ASCII "appID=18&safeCode=843007551&customCode=456"
026AFF68   004A00D2  ASCII "WebApi/Initialize?"

ID 编号自定义,3个数据都出来了,和源码中是一样的

[ecode=1=3].版本 2
AppID = 18
SafeCode = “843007551”
CustomCode = “456”
url = “WebApi/Initialize?”
参数 = “appID=” + 到文本 (AppID) + “&safeCode=” + SafeCode + “&customCode=” + CustomCode
返回值 = 到文本 (调用WebApi (url, 到字节集 (参数)))[/ecode]

当然了,不这么费劲,直接bp send也能看到这些东西。==  额,我讲的是小白思路,不调用api 就是一步一步追调用

这时候又有人冒出来说,这只能取官方示例的吧?谁家发布的时候还不加个vm壳,vm后代码看不到了怎么办?

这个我不想给你解释,头部一般是不会被vm 的,找到子程序,记录特征码,vm又何妨?

又有人要问了,数据找到了我们如何修改呢?
哈哈哈,脓个大撒子,怎么推进来的就怎么返回去找数据修改啊,段首下断,堆栈是会告诉你是从哪调用的,比如:

0261FF34   00405713  返回到 核盾验证.00405713 来自 核盾验证.00401906

返回去,往上找肯定就出现你要的数据了,如果没有呢,也许是加密解密了,你自己在call上面几句代码jmp跳到空白处补你的数据再跳回来就得了,管他加密不加密


写这么多,嫌我自己麻烦了都,为坛友留下一点小作业,也就是我的另一半没说的类模块中的GetValue咋找的呢?希望广大坛友动动手,举一反三的去找,这里我不在讲解。
看到这里是不是想骂我标题党?提交的数据取了返回的数据不讲了?

游客,如果您要查看本帖隐藏内容请回复





点评

三千亿少女的梦”点评说:
头部是可以VM的  发表于 2017-6-27 13:59
Shark恒”点评说:
很详细,希望分析更多网络验证源码,带领不懂网络验证的新人们,认识网络验证的本质。  发表于 2017-6-27 12:35

评分

参与人数 33威望 +1 HB +82 THX +18 收起 理由
NOP + 1
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
longge188 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
嗜血狂魔 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
一路走来不容易 + 1
禽大师 + 1
冷亦飞 + 1
小摩托 + 1
l278785481 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
luo271338515 + 1
一道彩虹屁 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
火线王 + 1
消逝的过去 + 2 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
lies + 1
hls1204088479 + 1
白云点缀的蓝 + 30 + 1 [快捷评语]--评分=感恩!简单却充满爱!感谢您的作品!
pakeringg + 1 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
adsljz + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
lyrong + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
海东 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
the2377 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
陈大锤 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
轮回v + 6 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
hysmy17 + 1 + 1 [快捷评语] - 2017,让我们17学破解!
retn + 4 + 1 [快捷评语] - 2017,让我们17学破解!
bluestar + 1 + 1 [快捷评语] - 2017,让我们17学破解!
Oneness神 + 1 [快捷评语] - 2017,让我们17学破解!
谢晓松 + 1 分享精神,是最值得尊敬的!
a1196264085 + 1 期待下期讲解静态数据和版本号找法.要详细,要详细.要详细.
Shark恒 + 1 + 20 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 难寻。 发表于 2017-6-27 12:55 | 显示全部楼层

本帖最后由 难寻。 于 2017-6-27 12:56 编辑
Shark恒 发表于 2017-6-27 12:47
其实目前各种游戏FZ用的网络验证没什么难度,拿这源码修改有啥难,主要很多新人不懂编程,看不懂源码, ...

哈哈,一针见血,现状就是,大多数人,都不知道jnz咋来的,就知道跟着视频或图文一步一步做,不说jnz是啥意思他就不知道,说了他也记不住,为破而破,就针对一个验证一个FZ的去学习某个教程,前一段分析百宝云的时候就是  E也不会汇编代码也不看,同样的东西 一个用判断 一个用判断循环首,写出来 ,就不会破了,就要发消息问我了。。
我以前理解的“逆向”就是 去掉限制达到目的,现在理解的“逆向”是 破除限制并解密限制来源和方法
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 难寻。 发表于 2017-6-27 11:52 | 显示全部楼层

@Shark恒 特别详细且首发,这次够不够sj   

点评

Shark恒”点评说:
确实很详细啊,有时间应该把所有源码都收集一遍,来个大讲解,这样大家就知道网络验证其实并不可怕。 源码到手,还怕没有思路入手分析?建议新手先学学编程,起码先学学易语言也好。会对新手们帮助很大。  详情 回复 发表于 2017-6-27 12:31
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hbj54 发表于 2017-6-27 12:26 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小白的烦恼 发表于 2017-6-27 12:28 | 显示全部楼层

支持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2017-6-27 12:31 | 显示全部楼层

难寻。 发表于 2017-6-27 11:52
@Shark恒 特别详细且首发,这次够不够sj

确实很详细啊,有时间应该把所有源码都收集一遍,来个大讲解,这样大家就知道网络验证其实并不可怕。

源码到手,还怕没有思路入手分析?建议新手先学学编程,起码先学学易语言也好。会对新手们帮助很大。

精华走一波,希望分析更多网络验证源码,带领不懂网络验证的新人们,认识网络验证的本质。

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
打不死的小强强 发表于 2017-6-27 12:41 | 显示全部楼层

大佬  看看                        
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 难寻。 发表于 2017-6-27 12:44 | 显示全部楼层

Shark恒 发表于 2017-6-27 12:31
确实很详细啊,有时间应该把所有源码都收集一遍,来个大讲解,这样大家就知道网络验证其实并不可怕。

...

感谢老大,的确,我认为开源验证比自写或者本地算法啥的简单多了,1个验证拿来,照葫芦画瓢基本就会了,还容易理解
分析这些过程比写通杀工具空造轮子强多了。

点评

Shark恒”点评说:
其实目前各种游戏辅Z用的网络验证没什么难度,拿这源码修改有啥难,主要很多新人不懂编程,看不懂源码,那就难了。。  详情 回复 发表于 2017-6-27 12:47
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2017-6-27 12:47 | 显示全部楼层

难寻。 发表于 2017-6-27 12:44
感谢老大,的确,我认为开源验证比自写或者本地算法啥的简单多了,1个验证拿来,照葫芦画瓢基本 ...

其实目前各种游戏FZ用的网络验证没什么难度,拿这源码修改有啥难,主要很多新人不懂编程,看不懂源码,那就难了。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
a779260718 发表于 2017-6-27 13:34 | 显示全部楼层

不错不错   正好用到  本质的教程 精华啊!!!!!!!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
赞帖
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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