想做一个本地程序自动登录的工具,程序有验证码,显示为图片,看看谁有识别经验,有偿指导一下。

解决方案 »

  1.   

    C/S程序的验证码很简单,因为可以保存验证码的值,所以验证的时候直接拿来对比,不用分析图片
    在Image上TextOut画字就可以了,可以多做几张底图
      

  2.   

    这种程序,通常是,填写用户名,填写密码,填写验证码,然后点登陆,这个时候连接服务器(或者本身就是单机的软件)Delphi/BC程序,下断 GetTickCount,QueryPerformanceCounter,断下后,判断是否是否是Randomize函数,如果是,返回回去,在附近找到CALL,跟进去看看是否是RandInt,如果是就找到Random函数地址了,然后对这个函数下断,或者干脆入口处改为XOR EAX,EAX;RET
    这样每次登陆的时候,多半就是固定的验证码了如果是C程序,下断 msvcrt.rand,剩下的操作一样了总之一个道理就是:让随机数不随机而是固定的数
      

  3.   

    procedure   TForm1.Button1Click(Sender:   TObject); 
    var 
        S:   string; 
        I:   Integer; 
        vPoint:   TPoint; 
        vLeft:   Integer; 
    begin 
        Randomize; 
        S   :=   Format( '%.4d ',   [Random(10000)]); 
        vLeft   :=   0; 
        Canvas.FillRect(Canvas.ClipRect); 
        for   I   :=   1   to   Length(S)   do 
        begin 
            Canvas.Font.Size   :=   Random(10)   +   9; 
            Canvas.Font.Color   :=   RGB(Random(256)   and   $C0, 
                Random(256)   and   $C0,   Random(256)   and   $C0); 
            if   Random(2)   =   1   then 
                Canvas.Font.Style   :=   [fsBold] 
            else   Canvas.Font.Style   :=   []; 
            Canvas.Font.Name   :=   Screen.Fonts[10]; 
            vPoint.X   :=   Random(4)   +   vLeft; 
            vPoint.Y   :=   Random(10); 
            Canvas.TextOut(vPoint.X,   vPoint.Y,   S[I]); 
            vLeft   :=   vPoint.X   +   Canvas.TextWidth(S[I]); 
        end; 
    end;
    复制粘贴同一代码
      

  4.   

    对。楼上的兄弟说的对,是要做验证码识别。
    示例图片可以看一下,截图都可以实现,已经保存为BMP,现在问题是要把图片转换为数字。
    http://user.qzone.qq.com/24584062?ptlang=2052#!app=4&via=QZ.HashRefresh