如何动态反跟踪?给点Asm ...End Up有分 (200分)

  • 主题发起人 zhoufujin
  • 开始时间
QSmile:<br>您好:<br>您说的“用花指令的方法写。这样反汇编看到的不正确。(静态) &nbsp;”<br>我对您的观点非常感兴趣,我是医生,业余学的Delphi,汇编会一点,但是不明白“花指令”的含义,请您赐教,多谢了。<br>
 
如果有人能发明一种不能破解的技术,那么他一定会赚大钱,呵呵……<br>可以告诉你,反跟踪对一般破解者还可以,但对有点经验的人来说是没有用的。<br>所谓花指令,我理解就是在关键的程序加一些无用的循环、跳转或替代等。<br>如:<br>button1.onclick:=mybutton.click;<br>button2.onclick:=button1.click;<br>a:=4;<br>b:=a;<br>制造多一些“垃圾”, 使程序编译后,难以读懂。<br>当然,付出的代价是降低编程效率、程序可读性。
 
简单花指令例子:<br>asm<br>&nbsp; mov eax,0 //what ever u want to do<br>&nbsp; jnz @@a1 &nbsp;/_花指令结构<br>&nbsp; db 13 &nbsp; &nbsp;/ &nbsp;-〉此行为无用的干扰代码,用dasm32等无法正常反编译<br>&nbsp; jz @@a1 /<br>@@a1:<br>&nbsp; mov edx,11<br>end;
 
谢谢,受益匪浅。<br>另外上边文章中提到“代码混乱器”在那里可以下载?<br>祝大家节日快乐
 
DOS下还有一个逆执行加密方法!<br>即看起来,指令居然是从尾部向头部执行!当然,CPU硬件决定这是无法从硬件上实施的,只能软件模拟,不知道Win32下还能不能用。
 
花指令的方法,比较同意 tt.t 的说法。<br>还可以把字符串的地址传给寄存器,再用寄存器压栈,<br>这样用 W32DASM 反汇编就看不到字符串了。<br>因为字符串很容易曝露代码位置。<br>如:<br><br>&nbsp; mov eax,offset szText<br>&nbsp; push eax<br>&nbsp; call YourFunction
 
受益匪浅,继续交流。<br>我的一个骨龄软件被别人破解,损失巨大,<br>还有什么高招,能增加破解的难度?
 
听课先!另外,我觉得要想完全干掉调试工具是不可能的!如果你的软件能防止任何调试,同时也就意味着你的软件无法制作了,因为,你自己用什么调试呢?如果你自己可以调试,那就根本不能防止其它软件来调试嘛。这其实就是一个逻辑悖论!
 
回zqw0117。<br><br>我的DLL原理就是反调器器,所以在你调试代码时必须将调用这个DLL的函数去掉,否则他会把DELPHI的调试器认为是非法调试。可能产生异常。而等代码完成之后再加入DLL。
 
回kimlon<br><br>您的Dll我觉得还是很有价值的!不过价格太贵了!其实,除了调试外,还有反汇编,代码防止调试是可能有效的(比如,您的dll),但防止反汇编就恐怕麻烦点。即使用了花指令,对于一些高手来说,恐怕也不是什么难题!而且kimlon兄把花指令放到dll里面就根本不保险了!除非能放到程序exe文件里面!<br><br>呵呵,我想我还是很认同kimlon兄的研究和产品的,如果有机会愿意购买一份源码!
 
DLL可以免费使用,我做个DLL的最主要的目的就是有感于我们的作品经常被人破解,虽然不敢说我的DLL可以100%防止被破解,但如果能延迟软件被破解的时间,那么我们的目的也就达到了。记得有一位高人说过,没有破不了的软件,主要是看有没有价值!<br><br>而且DLL是外挂的,还是很不保险的。
 
再回kimlon兄<br><br>谢谢您的提醒!您的Dll我想我以后一定会用的,也感谢您给大家的帮助,如果有机会我还是愿意买您的源码,算是对您的支持吧!有机会也希望和您认识一下,交个朋友!QQ:185845281,认证就写kimlon就行了!不过说明一下,由于我最近一些特殊情况,我从明天开始就不能上网了(本来是今天的,结果推迟了),要是不能及时回QQ,请谅解!
 
我试试kimlon的东东。
 
kimlon:<br>您是怎样识别正在运行WinHex等调试工具的?能否透露1、2?<br>大家一定会非常感谢您的!
 
应该和汇编上面的某些关键INT中断来表示吧。不过对于判断是否有WinHex的运行是很简单的,查找class名称或者窗体标题就可以判断,如果要更深入一点,学杀毒软件用特征码也能够判断啊!呵呵,不过,也许我说的不是kimlon用的方法。
 
顶部