记一次老旧32位软件在win10 64位系统中注册表读取失败问题的解决

双十一把老机子升级了一下,系统也换成win10 64位系统,今天要恢复一张U盘的内容,拿出以前用的挺顺手的易我***恢复软件,竟然提示未注册。
在52上搜索了一下,还好有大神的帖子,https://www.52pojie.cn/thread-126396-1-1.html
照着调试了一遍,顺利找到注册码,填写后要求重启验证,竟然提示还是未注册!!!
重新调试一遍,在注册码的下面,看到:

00475D8C | 55                       | push ebp                                                  |
00475D8D | 8BEC                     | mov ebp,esp                                               |
00475D8F | 83EC 08                  | sub esp,8                                                 |
00475D92 | C745 F8 00000000         | mov dword ptr ss:[ebp-8],0                                |
00475D99 | 837D 08 00               | cmp dword ptr ss:[ebp+8],0                                |
00475D9D | 74 06                    | je drw.475DA5                                             |
00475D9F | 837D 10 00               | cmp dword ptr ss:[ebp+10],0                               |
00475DA3 | 75 07                    | jne drw.475DAC                                            |
00475DA5 | 33C0                     | xor eax,eax                                               |
00475DA7 | E9 BE000000              | jmp drw.475E6A                                            |
00475DAC | 8D45 F8                  | lea eax,dword ptr ss:[ebp-8]                              |
00475DAF | 50                       | push eax                                                  |
00475DB0 | 68 142D4A00              | push drw.4A2D14                                           | 4A2D14:"SOFTWARE\\成都易我科技\\易我数据恢复向导V2.1.0\\2.10.000"
00475DB5 | 68 01000080              | push 80000002                                            |
00475DBA | FF15 10304800            | call dword ptr ds:[<&RegOpenKeyA>]                        |
00475DC0 | 85C0                     | test eax,eax                                              |
00475DC2 | 74 07                    | je drw.475DCB                                             |
00475DC4 | 33C0                     | xor eax,eax                                               |
00475DC6 | E9 9F000000              | jmp drw.475E6A                                            |
00475DCB | 8B4D 0C                  | mov ecx,dword ptr ss:[ebp+C]                              |
00475DCE | 51                       | push ecx                                                  |
00475DCF | 6A 00                    | push 0                                                    |
00475DD1 | 8B55 08                  | mov edx,dword ptr ss:[ebp+8]                              |
00475DD4 | 52                       | push edx                                                  |
00475DD5 | E8 F6620000              | call <JMP.&memset>                                        |
00475DDA | 83C4 0C                  | add esp,C                                                 |
00475DDD | 8B45 14                  | mov eax,dword ptr ss:[ebp+14]                             |
00475DE0 | 50                       | push eax                                                  |
00475DE1 | 6A 00                    | push 0                                                    |
00475DE3 | 8B4D 10                  | mov ecx,dword ptr ss:[ebp+10]                             |
00475DE6 | 51                       | push ecx                                                  |
00475DE7 | E8 E4620000              | call <JMP.&memset>                                        |
00475DEC | 83C4 0C                  | add esp,C                                                 |
00475DEF | C745 FC 01000000         | mov dword ptr ss:[ebp-4],1                                |
00475DF6 | 8D55 0C                  | lea edx,dword ptr ss:[ebp+C]                              |
00475DF9 | 52                       | push edx                                                  |
00475DFA | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                              |
00475DFD | 50                       | push eax                                                  |
00475DFE | 8D4D FC                  | lea ecx,dword ptr ss:[ebp-4]                              |
00475E01 | 51                       | push ecx                                                  |
00475E02 | 6A 00                    | push 0                                                    |
00475E04 | 68 4C2D4A00              | push drw.4A2D4C                                           | 4A2D4C:"UserName"
00475E09 | 8B55 F8                  | mov edx,dword ptr ss:[ebp-8]                              |
00475E0C | 52                       | push edx                                                  |
00475E0D | FF15 04304800            | call dword ptr ds:[<&RegQueryValueExA>]                   |
00475E13 | 85C0                     | test eax,eax                                              |
00475E15 | 74 0E                    | je drw.475E25                                             |
00475E17 | 8B45 F8                  | mov eax,dword ptr ss:[ebp-8]                              |
00475E1A | 50                       | push eax                                                  |
00475E1B | FF15 0C304800            | call dword ptr ds:[<&RegCloseKey>]                        |
00475E21 | 33C0                     | xor eax,eax                                               |
00475E23 | EB 45                    | jmp drw.475E6A                                            |
00475E25 | C745 FC 01000000         | mov dword ptr ss:[ebp-4],1                                |
00475E2C | 8D4D 14                  | lea ecx,dword ptr ss:[ebp+14]                             |
00475E2F | 51                       | push ecx                                                  |
00475E30 | 8B55 10                  | mov edx,dword ptr ss:[ebp+10]                             |
00475E33 | 52                       | push edx                                                  |
00475E34 | 8D45 FC                  | lea eax,dword ptr ss:[ebp-4]                              |
00475E37 | 50                       | push eax                                                  |
00475E38 | 6A 00                    | push 0                                                    |
00475E3A | 68 582D4A00              | push drw.4A2D58                                           | 4A2D58:"RegisterCode"
00475E3F | 8B4D F8                  | mov ecx,dword ptr ss:[ebp-8]                              |
00475E42 | 51                       | push ecx                                                  |
00475E43 | FF15 04304800            | call dword ptr ds:[<&RegQueryValueExA>]                   |
00475E49 | 85C0                     | test eax,eax                                              |
00475E4B | 74 0E                    | je drw.475E5B                                             |
00475E4D | 8B55 F8                  | mov edx,dword ptr ss:[ebp-8]                              |
00475E50 | 52                       | push edx                                                  |
00475E51 | FF15 0C304800            | call dword ptr ds:[<&RegCloseKey>]                        |
00475E57 | 33C0                     | xor eax,eax                                               |
00475E59 | EB 0F                    | jmp drw.475E6A                                            |
00475E5B | 8B45 F8                  | mov eax,dword ptr ss:[ebp-8]                              |
00475E5E | 50                       | push eax                                                  |
00475E5F | FF15 0C304800            | call dword ptr ds:[<&RegCloseKey>]                        |
00475E65 | F7D8                     | neg eax                                                   |
00475E67 | 1BC0                     | sbb eax,eax                                               |
00475E69 | 40                       | inc eax                                                   |
00475E6A | 8BE5                     | mov esp,ebp                                               |
00475E6C | 5D                       | pop ebp                                                   |
00475E6D | C2 1000                  | ret 10                                                    |

RegOpenKeyA,和SOFTWARE\\成都易我科技\\易我数据恢复向导V2.1.0\\2.10.000",4A2D4C:"UserName",4A2D58:"RegisterCode"
这说明程序是把注册码和用户名写到注册表了
于是在00475DBA下断点,再次运行的时候,发现RegOpenKeyA返回空,没有读取成功,这是什么情况?
查看RegOpenKeyA的参数说明,RegOpenKeyA(ByVal hKey As Long, ByVal lpszSubKey As String, phkResult As Long)
00475DAF | 50                       | push eax                                                  |
00475DB0 | 68 142D4A00              | push drw.4A2D14                                           | 4A2D14:"SOFTWARE\\成都易我科技\\易我数据恢复向导V2.1.0\\2.10.000"
00475DB5 | 68 01000080              | push 80000002      
eax接受返回结果,第二个字符串是注册表项,80000002 是hKey
Key hKey(Key Handle)

HKEY_CLASSES_ROOT &H80000000

HKEY_CURRENT_USER &H80000001

HKEY_LOCAL_MACHINE &H80000002

HKEY_USERS &H80000003

HKEY_CURRENT_CONFIG &H80000005

HKEY_DYN_DATA &H80000006
打开注册表编辑器,在HKEY_LOCAL_MACHINE\SOFTWARE下真的没有“成都易我科技”项!奇怪了
于是先自己按要求把注册表写好
在HKEY_LOCAL_MACHINE\SOFTWARE\成都易我科技\易我数据恢复向导V2.1.0\2.10.000项里添加两个字符串变量"UserName","RegisterCode",写好自己的数据
再调试,竟然还是返回空!
继续百度,发现在win10 64位系统中,只有HKEY_CURRENT_USER 子项不受限制注册表可随意读写
原来如此!
赶紧把程序中调用RegOpenKeyA函数的参数80000002都改成80000001,也就2处,一处写,一处读取
填写好注册信息后完美注册!

换64位后,好多东西还是不熟悉,还得学习啊

THE END
喜欢就支持以下吧
点赞1
分享
评论 抢沙发
管埋员的头像-小北的自留地

昵称

取消
昵称