如何检测程序的主跳转是否已被修改?想写这样的函数来检测,ASM不懂,也不知道如何下手,希望各位补充一下function ReadJnz(var BaseAddr: Pointer): Boolean; 
begin
   asm
   end;
end; //var BaseAddr: Pointer   为主跳转地址(我不知道思路是否正确 :()

解决方案 »

  1.   

    constantine(飘遥的安吉儿) ( ) 信誉:105 
    怎么 这样的问题都发到非技术了+++++++++++++++++++++++++++
    好像现在都比较兴非技术区....
      

  2.   

    检查基址还不如给自己做CheckSum,不过一句话说回来,都没用,防君子不防小人。
      

  3.   

    我写的一个小玩意儿,有你想要的功能:)
    写得不好,勉强能用
    function GetEIP: Integer;
    asm
      mov eax, [esp];
      sub eax, 5;     //call GetEIP占用5字节
    end;procedure CheckTrailDayCount(StartDate: TDateTime; DayCount: Integer);
    //uses DateUtils
    var
      EIPValue: Integer;
    begin
      EIPValue := GetEIP;
      EIPValue := EIPValue + DaysBetween(Now, StartDate) div DayCount;
      asm
        add EIPValue, $51        //end line - GetEIP line
        mov eax, offset @JmpPos; //Check Key Code
        mov eax, [eax];
        and eax, $00FFFFFF;
        sub eax, $00FC65FF;      //If not changed eax will be 0
        jz @JmpPos;
        mov eax, EIPValue
        sub eax, 3
        and [eax], $FF000000    //Write back FF65FC
        or [eax], $00FC65FF
    @JmpPos:
        jmp EIPValue;          //FF65FC
      end;
    end;
      

  4.   

    严重同意za的: za() ( ) 信誉:100  2006-06-13 09:50:00  得分: 0  
     
     
       检查基址还不如给自己做CheckSum,不过一句话说回来,都没用,防君子不防小人。
      
     
      

  5.   

    基本上友情飘过~~~CSDN论坛浏览器:http://CoolSlob.ys168.com/
      

  6.   

    hellolongbin(一个人[让我自由的飞翔]) ( ) 信誉:115  2006-06-13 11:52:00  得分: 0  
    老之貌似用灌水机liangqingzhi(老之) ( ) 信誉:105  2006-06-13 18:45:00  得分: 0  
    DS开发的应该不是灌水机吧CoolSlob(CSDN论坛浏览器:http://CoolSlob.ys168.com/) ( ) 信誉:100  2006-06-13 20:23:00  得分: 0  
    不是,你怎么不用用看-_-!---------
    CoolSlob同学,要学会联系上下文。说明小之同学正在用你的那个破玩意儿。
      

  7.   

    WOKAO,小花还不睡觉。
    赶快睡觉,赶快睡觉啊。
    to cuteant:
      你身为2星,叫我“同学”,太说不过去了吧-_-#CSDN论坛浏览器:http://CoolSlob.ys168.com/
      

  8.   

    CoolSlob同学的理解能力也太...