冰河洗剑 发表于 2013-9-5 02:14

盘点史上几种另类反调试!

本帖最后由 冰河洗剑 于 2013-9-5 02:35 编辑

以往的反调试均以摧残调试人员的意志为基本点,目前比较强大的 VMP 与 TMD 之类的也是运用这种方法,这种方法的弊端就是对于意志坚强、好奇心强或者抖 M(就是你给他一巴掌他还发自内心感觉到爽的这一种人)来说,是无效的。目前均能有破解 VMP,TMD 的牛○人士,也证明了这种反调试的瓶颈。本文介绍的反调试方法均是以前其他人没有使用过的、不同于常理的、非常有效的另类反调试方法。这些反调试方法充分体现了以人为......,不透剧了,往下看你就清楚了
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法一:心理摧残法(Heart Break)/ 跳跃消息(Jump Message)
此方法对于那些心灵脆弱的人尤为有效,具体方法也很简单:

代码:
       00401000 | EB 12                JMP SHORT 00401014
         00401002 | 46 75 63 ..      ASCII "Fuck your sister"
         00401012 | 2E 00                ASCII ".",0
         00401014 | B8 02104000    MOV EAX,00401002
         00401019 | C3                     RETN


在调试人员的必经之路上加一个 Jump 指令,然后空出的地方你就可以写上一些能够刺痛调试着心灵的并且他能看得懂的话语。俗话说的好:“人生不如意之事十有八九”,你绝对能找到他心灵上的弱点,用你学过的语文上的知识写出一段话,深深刺痛他的心灵。调试含有本反调试技术的程序的人轻则痛哭流涕,重则自杀身亡(到时候别把我供出来),效果非同凡响!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法二:挑逗法(Come on baby)/ 空函数法(Empty Function)
当你进入一个 Call,发现里面只有 Retn 指令时,你会是什么样的心情?

代码:
      00401000 | C3                      RETN
      00401001 | CC                      INT3
         ..........................................
      00401010 | E8 EBFFFFFF       CALL 00401000
      00401015 | E8 BE010000   CALL 004011D8
      0040101A | 33C0                  XOR EAX,EAX
      0040101C | C3                      RETN


你可以自己写一个程序,向 PE 文件里面写入很多很多这样的空函数,使得调试者不清楚哪些函数里面有内容,哪些函数里面是空的。本反调试方法可以极大地摧残调试者进入 Call 的欲望,重者可能会产生 Call 恐惧症。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
法三:无聊透顶法(Not Interesting)/ 大量跳转法(Multi-Jump)
本方法在一处地方大量使用跳转指令,就是像下面这种样子就可以了(给人一种想跳就跳,不想跳就退出的感觉):

代码:
   00401000 | EB 1A         JMP SHORT 0040101C
   00401002 | EB 1A         JMP SHORT 0040101E
   00401004 | EB 06         JMP SHORT 0040100C
   00401006 | EB 0A         JMP SHORT 00401012
   00401008 | EB 1E         JMP SHORT 00401028
   0040100A | EB F6         JMP SHORT 00401002
   0040100C | EB 14         JMP SHORT 00401022
   0040100E | EB F8         JMP SHORT 00401008
   00401010 | EB F2         JMP SHORT 00401004
   00401012 | EB FA         JMP SHORT 0040100E
   00401014 | EB 0E         JMP SHORT 00401024
   00401016 | EB 08         JMP SHORT 00401020
   00401018 | EB F6         JMP SHORT 00401010
   0040101A | EB FA         JMP SHORT 00401016
   0040101C | EB F6         JMP SHORT 00401014
   0040101E | EB 06         JMP SHORT 00401026
   00401020 | EB E4         JMP SHORT 00401006
   00401022 | EB E6         JMP SHORT 0040100A
   00401024 | EB F4         JMP SHORT 0040101A
   00401026 | EB 02         JMP SHORT 0040102A
   00401028 | EB EE         JMP SHORT 00401018

这种方法比较强大,单步步过的能使人反胃,比较厉害的人还可以使用 Call/Pop、Push/Retn、JB(<-JNAE) 等指令进行跳转。本反调试适合对付那种兴趣浓厚的人,能使他们兴冷淡,最终放弃对程序的分析!

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法四:血液流尽法(No More Blood)/ 萌杀法(Moe-Kill)
这种方法适用于在发现调试器后,弹出一个对话框,对话框上绘制一幅非常萌的图片:




等调试人员看到这个之后,鼻血连绵,最终会导致全身血液供氧不足而付出生命的代价。其实你还可以把这个换成吓死人的图片,普通的人在没有心理准备的情况下基本上结果都是会去医院的。调试人员还可能把胆吓破,这是一个极其凶残的反调试,慎用!
-------------------------------------------------------------------------------------------------------------------
方法五:震瞎狗耳法(Ear Destruct)/ 音乐卡带法(Music Cut)
调试过游戏的人大多数都经历过,一旦用调试器断下播放音乐的线程(不是音效),一般情况下游戏的 BGM 就会像卡带一样,人听了非常不爽。你可以在你程序需要执行秘密代码的线程里加上播放音乐的代码(记住,要用 DirectSound,并且不要一次就把音频数据全部写入 Buffer)。一旦有人调试,断下那个线程,嘿嘿,耳膜时刻受到卡带声音的摧残,大脑嗡嗡作响,最后绝对会把显示器扔到窗外。不过这种反调试方法有一个非常致命的弱点就是调试者可以关掉音响……

如果大家看了上面的方法,说这些是小儿科、无稽之谈、卖萌取宠,并且会质疑 LZ 为什么从碗里跑出来放弃治疗,那么,下面的终极反调试(Ultimate Anti-Debug)方法会让你彻头彻尾地改变对本文的看法!

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
终极方法:不良引导(Missing Target)/ 色○攻击(Sex Attack)
食、色性也,如果调试人员看到了有比调试程序更诱人的东西又会怎么做呢?
(下面的其实是正常视频,别删,不信你就看看,我大 Bilibili 的)

代码:
         00401485 | E8 ED280000   CALL 00403D77
         0040148A | E9 95FEFFFF   JMP 00401324
         0040148F | E9 5C690000   JMP 00407DF0
         00401494 | 53 65 78 ..   ASCII "SexVideo:http://"
         004014A4 | 77 77 77 ..   ASCII "www.bilibili.tv/"
         004014B4 | 76 69 64 ..   ASCII "video/av294254/",0
         004014B4 | 76 69 64 ..   ASCII "苍井空2011/",0


这种信息写在入口点效果更为明显,因为在调试器中一般(不排除 TLS)程序是断在 OEP 的,然后你就可以在 OEP 的上面或者下面写一些不良的、○秽○情信息或者是网站。其实你也完全可以将整个程序中都加入大量这样的信息。调试带这种反调试程序的人,没有定力的、或者被汇编代码消磨完定力的,基本上都会忍不住的!慢慢地,调试着表情会变得猥琐,行为会变得龌龊,肾功能也会渐渐衰竭,最终○尽人亡!英雄难过美人关,此招一出,谁与争锋!!!!

菜鸟小宝 发表于 2013-9-5 02:21

楼主用词也太精辟了吧,挑逗法。无聊法。好吧,我来学习的你这些用词我就用1,2,3,4代替{:301_1003:}

瓜子吧3 发表于 2014-6-15 19:23

[●○                           梦已逝,心已碎,留下只是在为离开做准备。 ]

紫凌飘雪 发表于 2013-9-6 11:32

lz真是人才

凌风神舞 发表于 2013-9-6 15:11

哈哈,很有意思,我记得在看雪上看到一个人在破棒子的软件,由于种种原因限制,只能进行动态调试,然后他调试的时候,碰到棒子程序员埋下的威胁代码,原话记不清了,大概是再调试就格你的盘

:-) 发表于 2013-9-7 08:56

这种反调试果然够残忍啊~

hlkiller 发表于 2013-9-7 18:26

看来调试程序还需要不弱的定力啊

丶小丑 发表于 2013-9-7 18:35

楼主有意思 ,,,

amulin 发表于 2013-9-7 19:14

太邪恶了

小淫仙 发表于 2013-9-8 23:49

要是这样的话,调试整个程序

小雨细无声 发表于 2013-9-9 17:37

油菜花呐
页: [1] 2 3
查看完整版本: 盘点史上几种另类反调试!