先来没事,对暴风影音(3.9.4.27)查了一下壳进入程序有以下代码
004ADA90 >/$ 55 PUSH EBP
004ADA91 |. 8BEC MOV EBP,ESP
004ADA93 |. 6A FF PUSH -1
004ADA95 |. 68 60754F00 PUSH 复件_Sto.004F7560
004ADA9A |. 68 BC804D00 PUSH <JMP.&MSVCRT._except_handler3> ; SE 处理程序安装
004ADA9F |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004ADAA5 |. 50 PUSH EAX
004ADAA6 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
004ADAAD |. 83EC 08 SUB ESP,8
004ADAB0 |. 53 PUSH EBX
004ADAB1 |. 56 PUSH ESI
004ADAB2 |. 57 PUSH EDI
004ADAB3 |. 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
004ADAB6 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
004ADABD |. E8 2AA60200 CALL 复件_Sto.004D80EC
004ADAC2 |. C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
004ADAC9 |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004ADACC |. 64:890D 00000>MOV DWORD PTR FS:[0],ECX
004ADAD3 |. 5F POP EDI
004ADAD4 |. 5E POP ESI
004ADAD5 |. 5B POP EBX
004ADAD6 |. 8BE5 MOV ESP,EBP
004ADAD8 |. 5D POP EBP
004ADAD9 \. C3 RETN
其中4adabd处的call是弹出暴风影音,追进去发现和C++的开始代码相同
004D80EC /$ 55 PUSH EBP
004D80ED |. 8BEC MOV EBP,ESP
004D80EF |. 6A FF PUSH -1
004D80F1 |. 68 B8AC4F00 PUSH 复件_Sto.004FACB8
004D80F6 |. 68 BC804D00 PUSH <JMP.&MSVCRT._except_handler3> ; SE 处理程序安装
004D80FB |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004D8101 |. 50 PUSH EAX
004D8102 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
而且将程序的oep更改成4d80ec之后,暴风影音照样能运行,PIED查壳是VC++,
不知道暴风为何这样设计,难道说刚开始处的代码没有用?
而且用OD跟的时候,发现在004ADAC2 设断点,程序并不会执行到这一步,也就是说程序提前退出了,那就更不明白原先入口代码的作用了!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!