国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何防止密碼框的密碼被人破譯

2019-11-18 18:36:26
字體:
來源:轉載
供稿:網友
  在此給大家敲一個警鐘,看看你的系統有沒有類似的問題,不瞞各位,我以前的系統就存在該問題(冒汗,數據庫的連接暴露無疑)。
    在 Delphi 6 以前的版本,只要簡單的給文本框發送 WM_GETTEXT 消息,就可以獲得文本框的內容。
代碼如下:

// 顯示鼠標當前所在的文本框內容
function ShowWindowText():string;
var
    pPoint:TPoint;
    WinText:string;
    mText:PChar;
    hWnd:Integer;
begin
    GetCursorPos(pPoint);
    SetLength(WinText,256);
    hWnd:=WindowFromPoint(pPoint);
    GetWindowText(hWND,PChar(WinText),256);
    SetLength(WinText,StrLen(PChar(WinText)));
    result:=WinText;
end;
用上面的這個方法就可以查看 Foxmail 的密碼,不信的話你可以自己試試(Foxmai 開發組要注意了~-^)

    可能 Borland 也發現了這個問題,到了 Delphi 6,用該方法只能查看到文本框的 Name 屬性了,不過話雖如此,還是瞞不過“iOpus PassWord Recovery XP”,那么我們是不是就沒有辦法了呢?回答是否定的,這回大家就看看我的辦法吧!

    既然要獲得文本框的內容,無非是采用發送消息的方式,如果我們把消息屏蔽掉,它是不是就沒有辦法了呢?對,既然問題已經找到,我們就開始吧,先從 TEdit 派生一個 TCEdit ,重載它的消息事件,將外來的消息屏蔽掉,這時候就有人有異議了:“你把消息屏蔽,那么是不是程序本身和 Delphi 也不知道它的內容了”,這個問題問得好,對于這個問題,我們可以再重載它的 GetText 方法,但是從我的代碼中各位并沒有看到我將該方法重載,我的考慮是因為,GetText 方法會首先成為一些破解程序的攻擊目標,故此沒有使用,而是新增了一個方法,以后就可以用這個方法去訪問文本框的值了,因為文本框只認識這個方法,這樣一來,就是“iOpus Password Recovery XP”也沒有辦法了:),下面列出源代碼,請各位指教。

unit uCEdit;

interface

uses Windows,StdCtrls,Messages,Classes;

TYPE
    TCEdit=class(TEdit)
    PRivate
        bEnable:boolean;            // 允許使用
        procedure WndProc(var Msg: TMessage);override;
    public
        constructor Create(AOwner: TComponent); override;

        function MyGetText():string;
    published

    end;

procedure Register;

implementation

{ CEdit }

//注冊控件
procedure Register;
begin
    RegisterComponents('Additional', [TCEdit]);
end;

constructor TCEdit.Create(AOwner: TComponent);
begin
    inherited Create(AOwner);
    // 禁止使用
    bEnable:=false;
end;

function TCEdit.MyGetText: string;
begin
    // 程序本身還是用允許的
    bEnable:=true;
   
    result:=Text;
end;

procedure TCEdit.WndProc(var Msg: TMessage);
begin
    if (Msg.Msg=WM_GETTEXT) or (Msg.Msg=EM_GETLINE)  then
    begin
        if bEnable then
        begin
            bEnable:=false;
            inherited;
        end;
    end
    else inherited;
end;

end.

基本上我們大家所看到的大部分需要輸入口令的軟件,如:QQ、Foxmail、CuteFTP和DameWare Mini Remote Control 等都沒有進行保護。


上一篇:從獲取DBGrid行號想到的

下一篇:有關TDataSet的研究

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 邢台市| 巴林右旗| 金溪县| 任丘市| 瓦房店市| 通化县| 鄂托克前旗| 平安县| 孟津县| 天峨县| 沧州市| 台安县| 通江县| 孝义市| 河曲县| 甘南县| 昌江| 鹤庆县| 鱼台县| 平江县| 通山县| 浏阳市| 龙井市| 阳城县| 新营市| 平潭县| 涪陵区| 巍山| 保靖县| 佛教| 武安市| 庐江县| 淄博市| 增城市| 新巴尔虎左旗| 商河县| 丹棱县| 白山市| 大丰市| 武穴市| 光泽县|