解得还不完全,见内。 (2千字)
将时间调至2001年,用右键看看。
右键操作在Klx.dll文件中,用拦时间函数的方法拦不到getsystemtime和getlocaltime 甚至用bpint 21 if ah==2都拦不到,真不知它取时间是用的什么方法。后来我拦BPX
messageboxa进行分析,找到了一条非常方便的方法,由于它显示出错信息的同时显示帮助文件,我下了BPX winhelpa
非常成功的找到了关键点。以下以加密文件为例,其它几个功能找法相同
bpx winhelpa
右键执行加密
拦到后按12运行完后返回SOFTICE
将光标移到调用的CALL处按F9设断
重新运行加密,在CALL处按F8再按F10就会来到下面。
:75FC3047 E853860000 call
75FCB69F
:75FC304C A2E895FD75 mov byte
ptr [75FD95E8], al
:75FC3051 A15898FD75 mov eax,
dword ptr [75FD9858]
:75FC3056 59
pop ecx
:75FC3057 83F801
cmp eax,00000001 //这里进行比较
:75FC305A 59
pop ecx
:75FC305B 0F84A8000000 je 75FC3109
//改为JMP OK
:75FC3061 83F802
cmp eax, 00000002
:75FC3064 0F849F000000 je 75FC3109
:75FC306A 381D9490FD75 cmp byte ptr
[75FD9094], bl
:75FC3070 7451
je 75FC30C3
:75FC3072 BE909AFD75 mov esi,
75FD9A90
:75FC3077 8BC6
mov eax, esi
:75FC3079 85C0
test eax, eax
:75FC307B 741E
je 75FC309B
:75FC307D 56
push esi
:75FC307E E80F5F0000 call
75FC8F92
:75FC3083 83C003
add eax, 00000003
:75FC3086 59
pop ecx
:75FC3087 24FC
and al, FC
:75FC3089 E832CE0000 call
75FCFEC0
:75FC308E 8BC4
mov eax, esp
:75FC3090 50
push eax
:75FC3091 56
push esi
:75FC3092 E8515F0000 call
75FC8FE8
:75FC3097 59
pop ecx
:75FC3098 59
pop ecx
:75FC3099 EB02
jmp 75FC309D
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:75FC307B(C)
|
:75FC309B 33C0
xor eax, eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:75FC3099(U)
|
:75FC309D 68424A0000 push
00004A42
:75FC30A2 6A01
push 00000001
:75FC30A4 50
push eax
:75FC30A5 53
push ebx
* Reference To: USER32.WinHelpA, Ord:02A8h
|
:75FC30A6 FF159051FD75 Call dword
ptr [75FD5190]
:75FC30AC 8D45EC
lea eax, dword ptr [ebp-14]
:75FC30AF 687869FD75 push
75FD6978
修改Klx.dll方法:
83 f8 01 59 0f 84 a8 00 00 00 83 f8 02
83 f8 01 e9 a9 00 00 -- --------------
83 f8 01 74 53 83 f8 02 74 4e
-------- eb -----------------
83 f8 01 0f 84 a8 00 00 00 83 f8 02
-------- e9 a9 00 -----------------
3b c7 74 52 83 f8 02
----- eb -----------
其实它的主要功能还是在鼠标右键上来得方便。
