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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7928|回复: 41
收起左侧

[原创] 找到了软件读取硬盘物理序列号的代码特征,帮助兄弟们少走弯路!

  [复制链接]
晨曦照相 发表于 2020-6-2 18:33
是这样的,楼主正在想办法破解某软件的算法
软件是重启验证,楼主揣摩着肯定是在执行验证前就会读取机器码
这个软件的机器码就是硬盘的物理序列号
于是楼主苦苦寻找,想找到它在那一部分读取了序列号
这里直接贴图,楼主一个个排查进call
看到了这样的界面,经过查询,知道了这个就是读取硬盘的序列号的特征!
给大家提供一个借鉴~

3(NYQCPL5Z7SO]9ORU5T.png

2.png

00495621   .  6A 00         push 0x0                                 ; /hTemplateFile = NULL
00495623   .  6A 00         push 0x0                                 ; |Attributes = 0
00495625   .  6A 03         push 0x3                                 ; |Mode = OPEN_EXISTING
00495627   .  6A 00         push 0x0                                 ; |pSecurity = NULL
00495629   .  6A 03         push 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0049562B   .  68 000000C0   push 0xC0000000                          ; |Access = GENERIC_READ|GENERIC_WRITE
00495630   .  68 54574900   push dumped.00495754                     ; |\\.\PhysicalDrive0
00495635   .  E8 6212F7FF   call <jmp.&kernel32.CreateFileA>         ; \CreateFileA
0049563A   .  8985 ECFDFFFF mov dword ptr ss:[ebp-0x214],eax
00495640   .  EB 1C         jmp short dumped.0049565E
00495642   >  6A 00         push 0x0                                 ; /hTemplateFile = NULL
00495644   .  6A 00         push 0x0                                 ; |Attributes = 0
00495646   .  6A 01         push 0x1                                 ; |Mode = CREATE_NEW
00495648   .  6A 00         push 0x0                                 ; |pSecurity = NULL
0049564A   .  6A 00         push 0x0                                 ; |ShareMode = 0
0049564C   .  6A 00         push 0x0                                 ; |Access = 0
0049564E   .  68 68574900   push dumped.00495768                     ; |\\.\SMARTVSD
00495653   .  E8 4412F7FF   call <jmp.&kernel32.CreateFileA>         ; \CreateFileA
00495658   .  8985 ECFDFFFF mov dword ptr ss:[ebp-0x214],eax
0049565E   >  83BD ECFDFFFF>cmp dword ptr ss:[ebp-0x214],-0x1
00495665   .  0F84 DC000000 je dumped.00495747
0049566B   .  33C0          xor eax,eax
0049566D   .  55            push ebp
0049566E   .  68 1F574900   push dumped.0049571F
00495673   .  64:FF30       push dword ptr fs:[eax]
00495676   .  64:8920       mov dword ptr fs:[eax],esp
00495679   .  8D85 C7FDFFFF lea eax,dword ptr ss:[ebp-0x239]
0049567F   .  33C9          xor ecx,ecx
00495681   .  BA 20000000   mov edx,0x20
00495686   .  E8 25D6F6FF   call dumped.00402CB0
0049568B   .  8D85 F0FDFFFF lea eax,dword ptr ss:[ebp-0x210]
00495691   .  33C9          xor ecx,ecx
00495693   .  BA 10020000   mov edx,0x210
00495698   .  E8 13D6F6FF   call dumped.00402CB0
0049569D   .  33C0          xor eax,eax
0049569F   .  8985 E8FDFFFF mov dword ptr ss:[ebp-0x218],eax
004956A5   .  C785 C7FDFFFF>mov dword ptr ss:[ebp-0x239],0x200
004956AF   .  C685 CCFDFFFF>mov byte ptr ss:[ebp-0x234],0x1
004956B6   .  C685 CDFDFFFF>mov byte ptr ss:[ebp-0x233],0x1
004956BD   .  C685 D0FDFFFF>mov byte ptr ss:[ebp-0x230],0xA0
004956C4   .  C685 D1FDFFFF>mov byte ptr ss:[ebp-0x22F],0xEC
004956CB   .  6A 00         push 0x0                                 ; /pOverlapped = NULL
004956CD   .  8D85 E8FDFFFF lea eax,dword ptr ss:[ebp-0x218]         ; |
004956D3   .  50            push eax                                 ; |pBytesReturned = 000001B4
004956D4   .  68 10020000   push 0x210                               ; |OutBufferSize = 210 (528.)
004956D9   .  8D85 F0FDFFFF lea eax,dword ptr ss:[ebp-0x210]         ; |
004956DF   .  50            push eax                                 ; |OutBuffer = 000001B4
004956E0   .  6A 20         push 0x20                                ; |InBufferSize = 20 (32.)
004956E2   .  8D85 C7FDFFFF lea eax,dword ptr ss:[ebp-0x239]         ; |
004956E8   .  50            push eax                                 ; |InBuffer = 000001B4
004956E9   .  68 88C00700   push 0x7C088                             ; |IoControlCode = SMART_RCV_DRIVE_DATA
004956EE   .  8B85 ECFDFFFF mov eax,dword ptr ss:[ebp-0x214]         ; |
004956F4   .  50            push eax                                 ; |hDevice = 000001B4 (window)
004956F5   .  E8 BA11F7FF   call <jmp.&kernel32.DeviceIoControl>     ; \DeviceIoControl第一个CreateFile是读取了硬盘  一般是主硬盘(物理意义)
第二个CreateFile是读取了SMARTVSD 也就是硬盘的s.m.a.r.t 信息    SMARTVSD这个文件,里面就储存有硬盘的物理序列号信息!
第三个DeviceIoControl是控制硬盘,使得硬盘操作 SMART_RCV_DRIVE_DATA从而获得序列号!
希望以后的致力与寻找软件在哪一步读取了硬盘序列号的兄弟萌可以少走弯路!
大家可以自己去找一找 出题.rar (694.14 KB, 下载次数: 22)
如果有违规,请勤劳的论坛管理团队予以删除!小弟在这里给你们磕头了!

免费评分

参与人数 15吾爱币 +19 热心值 +15 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
灵影 + 1 + 1 用心讨论,共获提升!
面朝阳光和彩虹 + 1 + 1 热心回复!
nagra + 1 + 1 用心讨论,共获提升!
喜洋洋y + 1 + 1 我很赞同!
iteamo + 1 + 1 热心回复!
5uu + 1 热心回复!
自己人解散 + 1 + 1 感谢分享
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
处女-大龙猫 + 1 谢谢@Thanks!
马叉虫233 + 1 + 1 用心讨论,共获提升!
399713194 + 1 + 1 谢谢@Thanks!
zjz12388 + 1 + 1 热心回复!
Janem + 1 + 1 我很赞同!
viply + 1 + 1 谢谢@Thanks!

查看全部评分

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

 楼主| 晨曦照相 发表于 2020-6-2 21:08
兄弟们继续努力了,我找到算法了,太难了,光靠od能难到我吐血!
我吐了


这程序是这样的

先读取硬盘的物理序列号


然后通过一段算法将序列号转换成生成注册码的原料


然后再通过注册算法将原料两位两位的组成30位的注册码
jefel 发表于 2020-6-2 18:39
 楼主| 晨曦照相 发表于 2020-6-2 18:41
 楼主| 晨曦照相 发表于 2020-6-2 18:46
找到读取机器码的位置了,找到算法语句还会远吗?兄弟萌奥里给!
yacker 发表于 2020-6-2 19:53
这个不错!
wikiyc 发表于 2020-6-2 20:31
一种新的解题方法。。。
头像被屏蔽
399713194 发表于 2020-6-2 20:46
提示: 作者被禁止或删除 内容自动屏蔽
truch 发表于 2020-6-2 20:49
感谢分享方法
MC阿虎 发表于 2020-6-2 20:51
前来打卡学习了
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-20 19:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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