能力值:
( LV3,RANK:20 )
|
-
-
9 楼
回 2楼:如何看 VMP 干了些啥,要用到 zdhysd大牛的 VMP分析插件1.4 。
回6楼: 代码分析,由于被脱壳程序比较敏感 ,所以不方便发出来。不过 VMP 本身的代码 可以发。这个 已经有人发过了。我发 也算重复。
回7楼:我用的OD 插件,都是网上找的。关键的其实 是 ximo 的 zeus.dll ,以及 zdhysd大牛的 VMP分析插件1.4这两个论坛里面都有。 其他的 StrongOD,和 Olly Advanced 都是 鼎鼎大名的。不会找不到的。
再其他的 其实无关紧要。
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
回 11楼,zdhysd大牛的 VMP分析插件1.4 只是帮你把 虚拟机的代码流帮你整理出来,并进行一些化简,还是要你自己去分析的。并不是 其 做了之后,你就不用做什么了,其实工作量最大的就是理解 虚拟代码。
贴一段 该工具分析出来的虚拟代码程序吧。
/$ 00 vPopReg4 vR10 DWORD _t0 = 0
|. D8 680876AA vPushImm4 760DD915 DWORD _t1 = 760DD915
|. 5A vAdd4 DWORD _t2 = 760DD915; DWORD _t3 = AddFlag(760DD915, check00000000)
|. 49 vPopReg4 vR15 DWORD _t4 = AddFlag(760DD915, check00000000)
|. D5 vPopReg4 vR2 DWORD _t5 = 760DD915
|. 39 vPopReg4 vR9 DWORD _t6 = EDX
|. 04 vPopReg4 vR14 DWORD _t7 = EBP
|. 80 vPopReg4 vR0 DWORD _t8 = EAX
|. E4 vPopReg4 vR5 DWORD _t9 = EDI
|. C8 vPopReg4 vR1 DWORD _t10 = ECX
|. 24 vPopReg4 vR12 DWORD _t11 = EFL
|. 60 vPopReg4 vR4 DWORD _t12 = EBX
|. 14 vPopReg4 vR3 DWORD _t13 = EDI
|. 77 vPopReg4 vR13 DWORD _t14 = ESI
|. B3 vPopReg4 vR8 DWORD _t15 = 11A45053
|. 8F vPopReg4 vR8 DWORD _t16 = 0BE82F160
|. 49 vPushReg4 vR12 DWORD _v0 = EFL
|. 5E A0 vPushImm1 0 WORD _t18 = 0
|. 1A B45FEE56 vPushImm4 0A14F2B DWORD _t19 = 0A14F2B
|. 43 vPushReg4 vR10 DWORD _t20 = 0
|. F0 vAdd4 DWORD _t21 = 0A14F2B; DWORD _t22 = AddFlag(0, 0A14F2B)
|. 27 vPopReg4 vR15 DWORD _t23 = AddFlag(0, 0A14F2B)
|. 49 vReadMemDs1 WORD _t24 = 0
|. CB vPushVEsp DWORD _t25 = 2C
|. 56 vReadMemSs1 WORD _t26 = 0
|. C7 vNand1 WORD _t27 = 0FF; DWORD _t28 = AndFlag(0FF, 0FF)
|. 7F vPopReg4 vR7 DWORD _t29 = AndFlag(0FF, 0FF)
|. BD vAdd1 BYTE _t30 = 0FF; DWORD _t31 = AddFlag(0FF, 0)
|. CD vPopReg4 vR7 DWORD _t32 = AddFlag(0FF, 0)
|. B8 vPushVEsp DWORD _t33 = 2E
|. 2A vReadMemSs1 WORD _t34 = 0FF
|. 97 vNand1 WORD _t35 = 0; DWORD _t36 = AndFlag(0, 0)
|. 2F vPopReg4 vR11 DWORD _t37 = AndFlag(0, 0)
|. D3 4F vPopReg1 vR8BL BYTE _t38 = 0
|. 65 vPushReg4 vR7 DWORD _t39 = AddFlag(0FF, 0)
|. 87 vPushVEsp DWORD _t40 = 2C
|. C3 vReadMemSs4 DWORD _t41 = AddFlag(0FF, 0)
|. 93 vNand4 DWORD _t42 = ~AddFlag(0FF, 0); DWORD _t43 = NotFlag(AddFlag(0FF, 0))
|. 8E vPopReg4 vR15 DWORD _t44 = NotFlag(AddFlag(0FF, 0))
|. C5 30DE vPushImmSx2 0F7EA DWORD _t45 = 0FFFFF7EA
|. CB vNand4 DWORD _t46 = 815 & AddFlag(0FF, 0); DWORD _t47 = AndFlag(815, AddFlag(0FF, 0))
|. EF vPopReg4 vR12 DWORD _t48 = AndFlag(815, AddFlag(0FF, 0))
|. E1 vPushReg4 vR11 DWORD _t49 = AndFlag(0, 0)
|. 6D vPushVEsp DWORD _t50 = 28
|. 55 vReadMemSs4 DWORD _t51 = AndFlag(0, 0)
|. 25 vNand4 DWORD _t52 = ~AndFlag(0, 0); DWORD _t53 = NotFlag(AndFlag(0, 0))
|. 81 vPopReg4 vR3 DWORD _t54 = NotFlag(AndFlag(0, 0))
|. E8 8410 vPushImmSx2 815 DWORD _t55 = 815
|. E3 vNand4 DWORD _t56 = 0FFFFF7EA & AndFlag(0, 0); DWORD _t57 = AndFlag(0FFFFF7EA, AndFlag(0, 0))
|. 3F vPopReg4 vR3 DWORD _t58 = AndFlag(0FFFFF7EA, AndFlag(0, 0))
|. 88 vAdd4 DWORD _t59 = SubFlag(0, 0); DWORD _t60 = AddFlag(0FFFFF7EA & AndFlag(0, 0), 815 & AddFlag(0FF, 0))
|. 18 vPopReg4 vR6 DWORD _t61 = AddFlag(0FFFFF7EA & AndFlag(0, 0), 815 & AddFlag(0FF, 0))
|. E4 vPopReg4 vR6 DWORD _t62 = SubFlag(0, 0)
|. 7C 6F5B3F77 vPushImm4 1FB11690 DWORD _t63 = 1FB11690
|. EC 63478E68 vPushImm4 1FB10FF4 DWORD _t64 = 1FB10FF4
|. 53 vPushVEsp DWORD _t65 = 28
|. 1A 60 vPushImm1 4 WORD _t66 = 4
|. E8 vPushReg4 vR6 DWORD _t67 = SubFlag(0, 0)
|. B6 vPushReg4 vR6 DWORD _t68 = SubFlag(0, 0)
|. 42 vNand4 DWORD _t69 = ~SubFlag(0, 0); DWORD _t70 = NotFlag(SubFlag(0, 0))
|. 3D vPopReg4 vR15 DWORD _t71 = NotFlag(SubFlag(0, 0))
|. 17 63 vPushImmSx1 0BF DWORD _t72 = 0FFFFFFBF
|. 74 vNand4 DWORD _t73 = 40 & SubFlag(0, 0); DWORD _t74 = AndFlag(40, SubFlag(0, 0))
|. D0 vPopReg4 vR3 DWORD _t75 = AndFlag(40, SubFlag(0, 0))
|. D0 vShr4 DWORD _t76 = Je(SubFlag(0, 0)); DWORD _t77 = ShrFlag(40 & SubFlag(0, 0), 4)
|. CC vPopReg4 vR7 DWORD _t78 = ShrFlag(40 & SubFlag(0, 0), 4)
|. F9 vAdd4 DWORD _t79 = Je(SubFlag(0, 0)) + 28; DWORD _t80 = AddFlag(Je(SubFlag(0, 0)), 28)
|. 49 vPopReg4 vR3 DWORD _t81 = AddFlag(Je(SubFlag(0, 0)), 28)
|. C9 vReadMemSs4 DWORD m0 = DWORD SS:[Je(SubFlag(0, 0)) + 28]
|. AD vPopReg4 vR12 DWORD _t83 = m0
|. C9 vPopReg4 vR8 DWORD _t84 = 1FB10FF4
|. 5C vPopReg4 vR15 DWORD _t85 = 1FB11690
|. 96 vPushReg4 vR12 DWORD _t86 = m0
|. AE vPopReg4 vR7 DWORD _t87 = m0
|. 80 vPushReg4 vR7 DWORD _t88 = m0
|. 56 vPushReg4 vR7 DWORD _t89 = m0
|. 02 vNand4 DWORD _t90 = ~m0; DWORD _t91 = NotFlag(_m0)
|. 26 vPopReg4 vR12 DWORD _t92 = NotFlag(_m0)
|. 1E 75EFF949 vPushImm4 0E0EE71D8 DWORD _t93 = 0E0EE71D8
|. C6 vNand4 DWORD _t94 = 1F118E27 & m0; DWORD _t95 = AndFlag(1F118E27, _m0)
|. EA vPopReg4 vR12 DWORD _t96 = AndFlag(1F118E27, _m0)
|. FC vPushReg4 vR7 DWORD _t97 = m0
|. B8 1ABB3097 vPushImm4 1F118E27 DWORD _t98 = 1F118E27
|. 87 vNand4 DWORD _t99 = 1F118E27 ~& m0; DWORD _t100 = NandFlag(1F118E27, _m0)
|. CB vPopReg4 vR8 DWORD _t101 = NandFlag(1F118E27, _m0)
|. 73 vNand4 DWORD _t102 = 1F118E27 ^ m0; DWORD _t103 = XorFlag(1F118E27, _m0)
|. 97 vPopReg4 vR12 DWORD _t104 = XorFlag(1F118E27, _m0)
|. B3 vPopReg4 vR8 DWORD _t105 = 1F118E27 ^ m0
|. B5 vPushReg4 vR1 DWORD _t106 = ECX
|. 02 vPushReg4 vR14 DWORD _t107 = EBP
|. 50 vPushReg4 vR6 DWORD _t108 = SubFlag(0, 0)
|. 36 vPushReg4 vR1 DWORD _v1 = ECX
|. 8C vPushReg4 vR11 DWORD _t110 = AndFlag(0, 0)
|. 79 vPushReg4 vR14 DWORD _v2 = EBP
|. 9F vPushReg4 vR9 DWORD _v3 = EDX
|. BD vPushReg4 vR4 DWORD _v4 = EBX
|. 63 vPushReg4 vR5 DWORD _v5 = EDI
|. E8 vPushReg4 vR13 DWORD _v6 = ESI
|. 66 vPushReg4 vR0 DWORD _v7 = EAX
|. F4 vPushReg4 vR2 DWORD _t117 = 760DD915
|. 50 3EAD011F vPushImm4 89F226EB DWORD _t118 = 89F226EB
|. 8C vAdd4 DWORD _t119 = 0; DWORD _t120 = AddFlag(89F226EB, 760DD915)
|. E4 vPopReg4 vR11 DWORD _t121 = AddFlag(89F226EB, 760DD915)
|. EE vPushReg4 vR10 DWORD _v8 = 0
|. EC vPushReg4 vR8 DWORD _t123 = 1F118E27 ^ m0
|. 22 vJmp_00A1D3C3 if (0 != 0) goto exe.00xxxxxxx
把上面这段程序读懂,是我们的任务,你觉得没有挑战?
|