好友
阅读权限20
听众
最后登录1970-1-1
|
晨曦照相
发表于 2020-6-2 18:33
是这样的,楼主正在想办法破解某软件的算法
软件是重启验证,楼主揣摩着肯定是在执行验证前就会读取机器码
这个软件的机器码就是硬盘的物理序列号
于是楼主苦苦寻找,想找到它在那一部分读取了序列号
这里直接贴图,楼主一个个排查进call
看到了这样的界面,经过查询,知道了这个就是读取硬盘的序列号的特征!
给大家提供一个借鉴~
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)
如果有违规,请勤劳的论坛管理团队予以删除!小弟在这里给你们磕头了! |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|