能力值:
( LV2,RANK:10 )
|
-
-
2 楼
去20秒时间限制
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
0040117C A1 08304000 MOV EAX,DWORD PTR DS:[403008] 这里把次数传递给EAX
00401181 83F8 13 CMP EAX,13 ; EAX和HEX:13 也就是十进制:19做比较
00401184 ^ 7F B1 JG SHORT Timer.00401137 大于19就跳到EXit处理,只要把这里NOP 就可以去限制!
00401186 40 INC EAX 小于就做加一处理
00401187 8D4C24 0C LEA ECX,DWORD PTR SS:[ESP+C]
0040118B 50 PUSH EAX 把EAX压堆
0040118C 68 00304000 PUSH Timer.00403000 ; %ld
00401191 51 PUSH ECX
00401192 A3 08304000 MOV DWORD PTR DS:[403008],EAX
00401197 FF15 20204000 CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; USER32.wsprintfA 这里就输出显示运行的秒数
所以只要把:
00401184 ^ 7F B1 JG SHORT Timer.00401137
NOP了 就不会20秒退出!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
请问还有别的方法吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
方法很多 自己琢磨!
比如:
cmp eax,1 次数和1比较
jl 00401137 小于1 就跳向退出!
程序运行次数当然不会小于1
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
0040117C A1 08304000 MOV EAX,DWORD PTR DS:[403008] 这里把次数传递给EAX
00401181 83F8 13 CMP EAX,13 ; EAX和HEX:13 也就是十进制:19做比较
00401184 ^ 7F B1 JG SHORT Timer.00401137 大于19就跳到EXit处理,只要把这里NOP 就可以去限制!
这个是根据什么找到的啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这个大部分是经验,因为这个crackme很小,反编译也就是区区数十行代码,我总体看一下就能看出他的流程了,
但是如果是运用到实际情况就不太适用!因为实际的程序不会这么简单。
因为他会显示运行次数 所以你就可以下
bp wsprintfA 断点, 然后分析程序断点上面的代码一般就会有所收获!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我给你发EMAIL了。
你看一下阿
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
有没有对付SetTimer通用的办法呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
有点不懂..不过我会努力学习的~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
看看这个 http://www.pediy.com/tutorial/chap6/Chap6-1-3.htm
|
|
|