首页
社区
课程
招聘
[旧帖] 菜鸟问题... 0.00雪花
发表于: 2010-2-28 23:49 3524

[旧帖] 菜鸟问题... 0.00雪花

2010-2-28 23:49
3524
00406D28   $  55            PUSH EBP
00406D29   .  8BEC          MOV EBP,ESP
00406D2B   .  81C4 DCFEFFFF ADD ESP,-124
00406D31   .  53            PUSH EBX
00406D32   .  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
00406D35   .  68 05010000   PUSH 105                                 ; /BufSize = 105 (261.)
00406D3A   .  8D85 DFFEFFFF LEA EAX,DWORD PTR SS:[EBP-121]           ; |
00406D40   .  50            PUSH EAX                                 ; |PathBuffer
00406D41   .  6A 00         PUSH 0                                   ; |hModule = NULL
00406D43   .  E8 90A6FFFF   CALL <JMP.&kernel32.GetModuleFileNameA>  ; \GetModuleFileNameA
00406D48   .  C645 EE 00    MOV BYTE PTR SS:[EBP-12],0
00406D4C   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00406D4F   .  50            PUSH EAX                                 ; /pHandle
00406D50   .  68 19000F00   PUSH 0F0019                              ; |Access = KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|F0000
00406D55   .  6A 00         PUSH 0                                   ; |Reserved = 0
00406D57   .  68 6C6F4000   PUSH storage2.00406F6C                   ; |Subkey = "Software\Borland\Locales"
00406D5C   .  68 01000080   PUSH 80000001                            ; |hKey = HKEY_CURRENT_USER
00406D61   .  E8 CAA6FFFF   CALL <JMP.&advapi32.RegOpenKeyExA>       ; \RegOpenKeyExA
00406D66   .  85C0          TEST EAX,EAX
00406D68   .  74 40         JE SHORT storage2.00406DAA
00406D6A   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]

这段代码是不是每次重启检查注册表的?还是写入注册表?
一个仓库软件,一个由delphi写的,无注册方式  导入数据有50条的限制,由什么思路去破?

问题很菜,本人更菜,只是感兴趣,破解不知从何学起

补充一段代码   是写入注册表的
00403F83   .  50                    PUSH EAX                                                  ; /pHandle
00403F84   .  6A 01                 PUSH 1                                                    ; |Access = KEY_QUERY_VALUE
00403F86   .  6A 00                 PUSH 0                                                    ; |Reserved = 0
00403F88   .  68 08404000           PUSH storage2.00404008                                    ; |Subkey = "SOFTWARE\Borland\Delphi\RTL"
00403F8D   .  68 02000080           PUSH 80000002                                             ; |hKey = HKEY_LOCAL_MACHINE
00403F92   .  E8 99D4FFFF           CALL <JMP.&advapi32.RegOpenKeyExA>                        ; \RegOpenKeyExA
00403F97   .  85C0                  TEST EAX,EAX
00403F99   .  75 4D                 JNZ SHORT storage2.00403FE8

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 145
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很想帮你 不过我也在学习
2010-3-1 00:04
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
以后常来交流,我想慢慢都会的。。等两天抽个时间去电脑城把加密解密买回来先看看
2010-3-1 00:14
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
哎,太晚了,改天再看吧
2010-3-1 00:59
0
雪    币: 35
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可能是注册表

不一定         到网上查一下
2010-3-1 12:21
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
你这两个问题核心都是RegOpenKeyExA,
函数原型是:
RegOpenKeyEx(
                   HKEY hKey,         // 已经打开键的句柄
                   LPCTSTR lpSubKey,  // 子键的名称
                   DWORD ulOptions,   // 保留,必须为0
                   REGSAM samDesired, // 安全访问标记
                   PHKEY phkResult    // 输出: 指向一个被打开键返回的句柄的指针
);

hKey是要当前打开或者以下预定义的键。
    本例为HKEY_CURRENT_USER

lpSubKey 指向一个非中断字符串包含将要打开键的名称。Subkey = "Software\Borland\Locales"

第三个参数ulOptions必须为0

重点是第4个参数:

            KEY_CREATE_LINK                     许可创建一个符号连接
            KEY_CREATE_SUB_KEY                  许可创建子键
            KEY_ENUMERATE_SUB_KEYS              许可列举子键
            KEY_EXECUTE                         许可读访问
            KEY_NOTIFY                          许可提供更该通知
            KEY_QUERY_VALUE                     许可查询子键数据
            KEY_SET_VALUE                       许可设置子键数据

如果过程执行成功,返回值是 ERROR_SUCCESS。
    如果功能失败,返回一个非零值

根据以上解释,第一段代码应该是写注册表,第二段是查询,可能是在重启验证。

本人也是菜鸟。。。。只能帮到这程度了。
2010-3-1 18:25
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢楼上的,谢谢
2010-3-1 22:39
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
"SOFTWARE\Borland\Delphi\RTL"
恨抱歉的告诉你,不是。
2010-3-2 14:39
0
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
……两个Borland的子键,一般重启验证不会验证这个东西吧……
你应该断在超出50条限制之后的提示上,比如它是通过一个messagebox来提示你超过50条的?还是通过把按钮设置成灰色来限制的(这种的要断EnableWindow)?不管怎么说,这几段注册表的代码很有可能是Delphi编译器自己的……
2010-3-2 16:57
0
雪    币: 111
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我觉得可以在提示50次的前后查到50这个数据!
2010-3-3 20:32
0
雪    币: 45
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看例子中读取的子键,很难想想这是做限制的代码区······

我感觉和楼上几位一样··或许应该从这个50条入手····
2010-3-3 21:17
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我是进来学习的哟
2010-3-4 18:14
0
游客
登录 | 注册 方可回帖
返回
//