青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

防調試相關做法

Posted on 2009-10-14 15:01 S.l.e!ep.¢% 閱讀(413) 評論(0)  編輯 收藏 引用 所屬分類: Crack
1.程序窗口句柄檢測
原理:用FindWindow函數查找具有相同窗口類名和標題的窗口,如果找到就說明有OD在運行
//********************************************
//通過查找窗口類名來實現檢測OllyDBG
//********************************************
function AntiLoader():Boolean;
const
OllyName='OLLYDBG';
var
Hwnd:Thandle;
begin
Hwnd:=FindWindow(OllyName,nil);
if Hwnd<>0 then
??? Result:=True
else
??? Result:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if AntiLoader then
??? MessageBox(Handle,'找到調試器!','提示',MB_OK+MB_ICONINFORMATION)
else
??? MessageBox(Handle,'未找到調試器!','提示',MB_OK+MB_ICONINFORMATION)
end;

2.用線程環境塊檢測
原理:用ring3級下的調試器對可執行程序進行調試時,調試器會把被調試的可執行程序作為一個子線程進行跟蹤.這時被調試的可執行程序的PEB結構偏移0x02處的BeingDebugged的值為1,如果可執行程序未被調試,則值為0,所以可以利用這個值來檢測程序是否被ring3級下的調試器調試
//***************************************
//使用PEB結構檢測OllyDBG
//***************************************
function AntiLoader():Boolean; //檢測調試器;
var
YInt,NInt:Integer;
begin
asm
??? mov eax,fs:[$30]
??? //獲取PEB偏移2h處BeingDebugged的值
??? movzx eax,byte ptr[eax+$2]
??? or al,al
??? jz @No
??? jnz @Yes
??? @No:
????? mov NInt,1
??? @Yes:
????? Mov YInt,1
end;
if YInt=1 then
??? Result:=True;
if NInt=1 then
??? Result:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if AntiLoader then
??? MessageBox(Handle,'發現調試器!','提示',MB_OK+MB_ICONINFORMATION)
else
??? MessageBox(Handle,'未發現調試器!','提示',MB_OK+MB_ICONINFORMATION);
end;
3.用API函數IsDebuggerPresent檢測
原理:操作系統將調試對象設置為在特殊環境中運行,而kernel32.dll中的API函數IsDebuggerPresent的功能是用于判斷進程是否處于調試環境中,這樣就可以利用這個API函數來查看進程是否在調試器中執行
//****************************************
//利用IsDebuggerPresent函數檢測OllyDBG
//****************************************
function AntiLoader():Boolean;
var
isDebuggerPresent: function:Boolean;
Addr: THandle;
begin
Addr := LoadLibrary('kernel32.dll');
isDebuggerPresent := GetProcAddress(Addr, 'IsDebuggerPresent');
if isDebuggerPresent then
??? Result:=True
else
??? Result:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if AntiLoader then
??? MessageBox(Handle,'發現調試器!','提示',MB_OK+MB_ICONINFORMATION)
else
??? MessageBox(Handle,'未發現提示器!','提示',MB_OK+MB_ICONINFORMATION);
end;
4.檢查程序的父進程
原理:Windows操作系統下的GUI可執行程序的父進程都是explorer.exe(CUI可執行程序的父進程是CMD.exe,系統服務的父進程是Service.exe,在實際使用的時候需要根據自己的程序類型來選擇父進程實現反跟蹤),而正被調試器OD調試的程序的父進程是調試器的執行程序ollydbg.exe而不是別的.所以可以利用檢查父進程是否為explorer.exe的方法來檢測OD.
//***************************************************
//檢查父進程來檢測OllyDBG
//***************************************************
function AntiLoader():Boolean;
const
ParentName='\EXPLORER.EXE';
var
hSnap,hProcess:THandle;
szBuffer:array[0..MAX_PATH] of char;
FileName:array[0..MAX_PATH] of char;
Process32:PROCESSENTRY32;
LoopFlag:BOOL;
begin
////得到所有進程的列表快照
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if hSnap=INVALID_HANDLE_VALUE then
begin
??? Result:=False;
??? Exit;
end;
Process32.dwSize:=sizeof(PROCESSENTRY32);
//查找進程
LoopFlag:=Process32First(hSnap,Process32);
if LoopFlag=False then
begin
??? CloseHandle(hSnap);
??? Result:=False;
??? Exit;
end;
while Integer(LoopFlag)<>0 do
??? begin
????? if Process32.th32ProcessID=GetCurrentProcessId() then
??????? begin
????????? hProcess:=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Process32.th32ParentProcessID);
????????? if hProcess<>0 then
??????????? begin
????????????? if GetModuleFileNameEx(hProcess,0,FileName,MAX_PATH)<>0 then
??????????????? begin
????????????????? //取得系統目錄
????????????????? GetWindowsDirectory(szBuffer,MAX_PATH);
????????????????? //合并系統目錄和\EXPLORER.EXE
????????????????? StrCat(szBuffer,ParentName);
????????????????? //轉換成大寫以后比較當前調試程序的進程是否為父進程
????????????????? if UpperCase(String(FileName))<>UpperCase(String(szBuffer)) then
??????????????????? Result:=True
????????????????? else
??????????????????? Result:=False;
??????????????? end;
??????????? end
????????? else
??????????? Result:=False;
??????? end;
????? LoopFlag:=Process32Next(hSnap,Process32);
??? end;
CloseHandle(hSnap);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if AntiLoader then
??? MessageBox(Handle,'發現調試器!','提示',MB_OK+MB_ICONINFORMATION)
else
??? MessageBox(Handle,'未發現調試器!','提示',MB_OK+MB_ICONINFORMATION)
end;
5.檢查STARTUPINFO結構
原理:Windows操作系統中的explorer.exe創建進程的時候會把STARTUPINFO結構中的值設為0,而非explorer.exe創建進程的時候會忽略這個結構中的值,也就是結構中的值不為0,所以可以利用這個來判斷OD是否在調試程序.
/************************************************
//通過檢測STARTUPINFO結構來檢測OllyDbg
//************************************************
function AntiLoader():Boolean;
var
Info:STARTUPINFO;
begin
GetStartupInfo(Info);
if (Info.dwX<>0) or (Info.dwY<>0) or (Info.dwXCountChars<>0) or (Info.dwYCountChars<>0) or
???? (Info.dwFillAttribute<>0) or (Info.dwXSize<>0) or (Info.dwYSize<>0) then
??? Result:=True
else
??? Result:=False;
end;
procedure TMainFrm.FormCreate(Sender: TObject);
begin
if AntiLoader then
??? MessageBox(Handle,'發現調試器!','提示',MB_OK)
else
??? MessageBox(Handle,'未發現調試器!','提示',MB_OK);
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产国产综合| 亚洲欧美激情视频| 亚洲尤物在线视频观看| 亚洲日本久久| 夜夜嗨av一区二区三区四区| 亚洲精品在线免费观看视频| 99在线精品视频| 亚洲免费在线视频一区 二区| 在线视频免费在线观看一区二区| 中日韩美女免费视频网址在线观看| 亚洲在线观看视频网站| 欧美在线综合视频| 亚洲国产成人精品久久| 亚洲精品视频在线观看免费| 亚洲一区二区毛片| 久久久久久日产精品| 欧美喷水视频| 国产日韩av高清| 亚洲国产精品va在看黑人| 亚洲精品中文字| 欧美一区二区在线| 欧美成熟视频| 99在线精品免费视频九九视| 欧美与黑人午夜性猛交久久久| 久久这里只精品最新地址| 欧美三级乱人伦电影| 一区二区三区在线视频免费观看| 亚洲免费观看高清在线观看 | 日韩视频免费在线观看| 亚洲欧美一区二区三区在线| 可以看av的网站久久看| 国产精品亚洲欧美| 亚洲免费电影在线观看| 快播亚洲色图| 亚洲女人天堂av| 欧美日本久久| 亚洲激情另类| 久久久久久久999| 亚洲在线视频一区| 欧美77777| 亚洲少妇诱惑| 欧美一区二区三区精品| 欧美精品在线观看播放| 韩国免费一区| 久久国产日本精品| 中国亚洲黄色| 欧美视频四区| 在线亚洲观看| 亚洲欧洲在线播放| 快播亚洲色图| 国产情侣一区| 欧美亚洲午夜视频在线观看| 亚洲国产精品一区制服丝袜| 久久久之久亚州精品露出| 国产欧美日韩另类一区 | 国产午夜亚洲精品羞羞网站| 亚洲深夜福利网站| 亚洲精品小视频在线观看| 久久香蕉国产线看观看网| 国产毛片精品国产一区二区三区| 亚洲午夜日本在线观看| 亚洲美女视频网| 欧美日韩在线大尺度| 日韩一区二区电影网| 亚洲人在线视频| 欧美日韩在线播放三区| 亚洲中字黄色| 午夜亚洲性色福利视频| 国内视频一区| 欧美成人日本| 欧美激情视频在线播放| 亚洲午夜久久久久久久久电影网| 在线视频一区观看| 国产欧美日本在线| 另类av导航| 欧美国内亚洲| 亚洲欧美色婷婷| 性娇小13――14欧美| 国内一区二区在线视频观看| 老司机免费视频一区二区| 美女精品在线观看| 中国av一区| 亚洲欧美日韩国产中文| 18成人免费观看视频| 最新日韩中文字幕| 国产精品亚洲精品| 欧美成人一二三| 欧美午夜精品一区| 久久激五月天综合精品| 麻豆精品传媒视频| 亚洲一区免费网站| 久久久精品2019中文字幕神马| 亚洲国产色一区| 亚洲一区久久久| 亚洲国产综合在线看不卡| 99精品国产福利在线观看免费| 国产视频在线观看一区二区三区| 免费亚洲视频| 亚洲一区二区三区高清| 西西人体一区二区| 亚洲精品裸体| 性欧美在线看片a免费观看| 亚洲激情视频网| 亚洲一区二区三区国产| 亚洲国产婷婷香蕉久久久久久99 | 亚洲东热激情| 亚洲一级电影| 日韩亚洲国产精品| 久久久精品国产免大香伊| 在线综合+亚洲+欧美中文字幕| 欧美一区精品| 亚洲欧美色一区| 欧美日韩不卡| 欧美顶级少妇做爰| 国产午夜亚洲精品理论片色戒| 亚洲精品午夜| 亚洲欧洲综合另类在线| 久久精品在线视频| 欧美一区二区在线播放| 欧美日韩一级黄| 亚洲国产精品电影| 亚洲第一在线视频| 欧美在线播放视频| 久久er精品视频| 国产精品麻豆欧美日韩ww| 亚洲精品国久久99热| 亚洲国产日韩欧美| 久久久久**毛片大全| 久久久久一区| 国产日韩精品在线观看| 亚洲特级毛片| 亚洲欧美日韩国产精品| 国产精品99免费看| 亚洲天堂av图片| 亚洲免费在线精品一区| 国产精品久久久久久久一区探花 | 日韩午夜三级在线| 日韩一本二本av| 欧美日本在线观看| 一区二区欧美视频| 先锋影音国产一区| 国产日韩欧美精品一区| 欧美亚洲专区| 久久躁日日躁aaaaxxxx| 激情综合久久| 欧美第一黄色网| 亚洲精品麻豆| 亚洲欧美国产日韩中文字幕| 国产精品wwwwww| 亚洲欧美国产另类| 久久亚洲国产成人| 亚洲高清资源| 欧美日韩mv| 亚洲专区一二三| 欧美99在线视频观看| 99riav久久精品riav| 亚洲在线观看视频| 香蕉久久精品日日躁夜夜躁| 国产日产欧美一区| 久久青青草原一区二区| 亚洲天堂av在线免费观看| 午夜精品久久久久久| 国产一区二区福利| 久久综合亚洲社区| 亚洲毛片播放| 久久精品国产综合精品| 亚洲第一网站| 欧美亚洲成人免费| 久久天堂国产精品| 99精品欧美| 蜜臀99久久精品久久久久久软件| 亚洲破处大片| 国产午夜精品福利| 欧美国产在线电影| 性欧美video另类hd性玩具| 欧美国产精品劲爆| 性欧美精品高清| 亚洲日本中文字幕| 国产精品午夜视频| 欧美大片免费看| 欧美一区二区三区免费大片| 亚洲电影自拍| 久久精品国产精品亚洲综合| 亚洲精品一二| 有坂深雪在线一区| 国产精品乱码一区二区三区| 久久综合亚州| 欧美亚洲尤物久久| 一本色道久久88精品综合| 欧美二区在线播放| 久久精品一区二区| 亚洲欧美一区二区精品久久久| 91久久精品国产91久久| 国产日韩av一区二区| 欧美日韩精品免费看| 欧美va亚洲va国产综合| 欧美亚洲三级| 亚洲综合精品一区二区| 一区二区三区四区蜜桃| 亚洲激情在线|