能力值:
( LV2,RANK:10 )
|
-
-
2 楼
没人教我一下嘛...
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
都没人说一下嘛....哎
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
呵呵 这种问题你最好查看下以前的贴子,找找相关的资源,先不要急于法帖求助哦!~实在不行发来给我帮你看看!~~~~~我也是菜鸟,大家互相帮助啦!~~~
下断点bp EnableWindow看看
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
大家互相帮助啦!~~~
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
由于你并没有改到关键的地方,比如下面这段代码:
BOOL g_bRegistered = FALSE;
BOOL VerifySN()
void SNDialog_OnOK(char* szString)
{
BOOL bRegistered = VerifySN(*);
g_bRegistered = bRegistered;
/* other code here */
/* code 1 */
if (bRegistered){
MessageBox("已经注册");
}
else{
MessageBox("未注册");
}
}
void MainProgram_SomeFunction()
{
if (g_bRegistered){
// 功能正常使用
}
else{
MessageBox("未注册,功能无法使用");
}
}
仅仅修改code 1处的代码进行暴破,是仍然无法使用其他被限制的功能的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
那请问具体怎样判断限制功能的在那一个地方喔?
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
一般来说是找出关键的VerifySN函数。
不过你可以试着看程序是根据什么跳转的。
比如说是
mov eax, dword ptr [ebp-18]
cmp eax, 0
jnz ****
之类的,就在调用的程序段之前,同一个call之内,看是否有指令对[ebp-18]
进行写入,然后跟踪程序将[ebp-18]的数据放到了什么地方。
这样才有可能找出存放注册成功与否的地方。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
顶下~~~~
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
就是说;
爆破只是强制跳过了错误信息,但判断函数没有得到正确的返回值
lena说要 elegant的patch (优雅的patch)
还要让,比如al得到1,或者不让xor eax,eax降默认注册的值清除去
再看看代码
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
原来是这样.....那有没有一些命令要特别留意的?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
受益匪浅啊,
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
胜读十年书啊!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
嘿!楼主那你在用什么工具进行爆破的。你进行的顺序是怎么样的?能说一下吗?我是新手要学学。写了
|
|
|