-
-
[翻译]x64与反调试
-
发表于:
2010-12-14 01:59
9289
-
还有个EXE文件,原文地址5fcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3k6G2M7Y4g2E0i4K6u0W2k6i4S2W2N6r3!0G2L8s2y4Q4x3X3g2U0L8$3#2Q4x3V1k6K6K9r3!0%4N6r3S2J5k6h3q4V1i4K6u0W2M7r3S2H3i4K6y4r3N6q4)9K6c8o6p5J5y4K6t1$3i4K6u0o6i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1^5i4@1u0p5i4@1u0p5i4@1f1@1i4@1t1^5i4K6S2p5i4@1f1@1i4@1u0m8i4K6R3$3i4K6u0o6i4@1f1^5i4@1p5$3i4K6R3I4i4@1f1&6i4K6R3J5i4K6R3H3i4@1f1^5i4@1q4r3i4@1t1%4i4@1f1$3i4@1t1K6i4@1p5^5i4@1f1#2i4K6R3$3i4K6S2o6
在逆向中,反调试技巧一直是一个非常有趣的事情,由于对X64的硬件和OS'es到来,虽然有些东西已经改变.
前些日子,我碰到一个X64的软件,总是在某测试系统的检测调试不成功。跳水此事,并在调试器下的所有规避反调试技巧
它工作得很好。外界调试faillure理由证明是众所周知的代表stos / movs伎俩.
代码:
Example code
t1 equ goodboy-badboy-2
new: db 0EBh,01,81h,0EBh,t1
; cut //
lea rsi,[new]
lea rdi,[here]
mov rdx,[rdi]
mov rcx,3
here:
rep movsw
badboy:
mov r9,30h
lea r8,[DebugStatus]
lea rdx,[DbgFoundText]
xor rcx,rcx
invoke MessageBox ; badboy!
jmp Exit
goodboy:
mov r9,40h
lea r8,[DebugStatus]
lea rdx,[DbgNotFoundText]
xor rcx,rcx
invoke MessageBox ; goodboy!
; cut //
rep stos / movs招式不需要进一步解释,因为大家都知道这一点,因为16位系统,然而,在X64位下使用被警告
,为了测试,我附上一个EXE文件测试,单步它F7键(在MessageBox的调用F8键),它会永远检测你
不过我敢肯定,一个很小的比例,拥有最新的X64的CPU技术,会得到假的检测调试器外!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课