icentury 发表于 2011-2-25 12:48

用E语言检测是否被调试,开发者必用的超级代码[E语言源码]

{:301_996:}想保护自己的 软件不被 破解者调试和调用吗?
那么跟我来吧。部分代码展示。
判断循环首 (Found ≠ 0)' 遍历所有进程
   
.判断开始 (取操作系统类别 () = 3)
      ExeName = 取进程文件名 (Pn.th32ProcessID)' 2000/xp要从模块那里才能正确取出执行的文件名
    .默认
      ExeName = 到小写 (到文本 (Pn.szExefile))' 98下直接取进程名就可以了,在模块那里没有的,所以反而取不出来,不过这个名字是一个路径,要转换一下
      ExeName = 取文本右边 (ExeName, 取文本长度 (ExeName) - 倒找文本 (ExeName, “\”, , 真))
    .判断结束
    .如果 (ExeName = 到小写 (取执行文件名 ()))' 自己的进程
      ParentProc = Pn.th32ParentProcessID' 得到父进程的进程ID
      H = OpenProcess (#PROCESS_ALL_ACCESS, 真, Pn.th32ParentProcessID)' 父进程的句柄
      ' CloseHandle (H)' 如果下面要使用TerminateProcess (H, 0)的话这一句不用写
    .否则
      .如果真 (ExeName = ExplName)
            ExplProc = Pn.th32ProcessID' Explorer的进程ID
      .如果真结束
    .如果结束
    Found = Process32Next (sHandle, Pn)' 查找下一个
.判断循环尾 ()
CloseHandle (sHandle)
.如果 (ParentProc ≠ ExplProc)' 如果父进程不是Explorer,则是调试器……

    TerminateProcess (H, 0)' 杀之!除之而后快哦! :)如果要使用这一句的话请把上面一句CloseHandle (H)去掉就可以了
    ' 你还可以加上其它什么死机代码来消遣消遣这位破解者 :)


cyn123 发表于 2011-3-15 02:57

本帖最后由 cyn123 于 2011-3-15 03:05 编辑

回复 icentury 的帖子

不好意思,我不是高手 但是这个代码我确实能看懂 而且也很好破解我觉得你的标题挺吸引人 “开发者必用的超级代码” 有点言过其辞了只是就事论事 请楼主注意您的言辞别乱喷 52不是你一人的天下 说的好你就谢谢人家 说的不和你心意 难道都是垃圾? 清者自清,浊者自浊 孔子还不耻下问呢 你焉能比圣人强否?

xuanzhouguheng 发表于 2011-2-25 12:51

如果人家diy的od呢?

binliao 发表于 2011-2-25 13:42

思路不错。

binliao 发表于 2011-2-25 13:47

马上测试,效果不错。

xiaoyou 发表于 2011-2-26 01:53

3765999 发表于 2011-3-1 01:13

有的OD检测不到········

hdxqfx 发表于 2011-3-1 19:28

落雪飞花 发表于 2011-3-11 04:40

楼主的个人图片很个性啊!

icentury 发表于 2011-3-13 01:22

回复 落雪飞花 的帖子

{:1_912:}多谢夸奖··{:1_905:}

cyn123 发表于 2011-3-13 20:51

有啥难度? 一个JMP就OVER了 只能骗骗新手
页: [1] 2 3 4
查看完整版本: 用E语言检测是否被调试,开发者必用的超级代码[E语言源码]