+A9j
.text:00951BDD
mov eax, dword_B84CF8
.text:00951BE2
push eax .text:00951BE3
push 10h
.text:00951BE5
push offset unk_B99568
.text:00951BEA
call sub_951120
.text:00951BEF
mov [
esp+44h+var_2C],
eax .text:00951BF3
add esp, 0Ch
.text:00951BF6
mov eax, dword_B84CFC
.text:00951BFB
xor [
esp+38h+var_2C],
eax .text:00951BFF
mov eax, dword_B84D00
.text:00951C04
mov esi, [
esp+38h+var_2C]
.text:00951C08
push eax .text:00951C09
add esi, dword_B9996C <=====改为mov
esi,00951940
NOP .text:00951C0F
push 12h
.text:00951C11
push offset unk_B99568
.text:00951C16
call sub_951120
.text:00951C1B
mov [
esp+44h+var_2C],
eax .text:00951C1F
add esp, 0Ch
.text:00951C22
mov eax, dword_B84D04
.text:00951C27
xor [
esp+38h+var_2C],
eax .text:00951C2B
mov ecx, [
esp+38h+var_2C]
.text:00951C2F
push ecx .text:00951C30
call esi <=====这个地方就是主程序的入口,通过分析,如果没有狗,这个
地址是
错误的,程序会死掉,也就是说,程序必须用到加密狗的数据来算出入口
地址,所以如果没有狗,就没办法知道入口
地址,除非你的反
推能力很好,就可以反推出它的入口
地址.通过带狗运行,可知入口
地址是00951940.所以我们要让ESI的数值为00951940
.text:00951C32
add esp, 4
.text:00951C35
pop edi .text:00951C36
pop esi .text:00951C37
pop ebx .text:00951C38
add esp, 14h
.text:00951C3B
retn 单步进入00951C30处的CALL:
.text:009519BB
mov ecx, dword_B8EAD8
.text:009519C1
shr ecx, 10h
.text:009519C4
push eax .text:009519C5
or edx,
ecx .text:009519C7
lea ecx,
ds:0[
esi*2]
.text:009519CE
inc ecx <=====改为mov
esi,0E4DBF5F6
.text:009519CF
imul edx,
ecx <=====
.text:009519D2
add esi,
edx <=====
.text:009519D4
cmp esi, 0E4DBF5F6h
.text:009519DA
jnz short loc_9519E8
.text:009519DC
call sub_4493B0 <=====F8进入
.text:009519E1
add esp, 4
.text:009519E4
pop edi .text:009519E5
pop esi .text:009519E6
pop ebx .text:009519E7
retn 单步进入009519DC处的CALL:
.text:0044