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

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>
            日韩一级视频免费观看在线| 国产一区二区三区高清| 99国产精品久久久久久久成人热| 嫩草国产精品入口| 免费观看不卡av| 免费久久99精品国产自| 欧美大片在线观看一区| 91久久精品一区二区三区| 免费欧美在线| 亚洲国内自拍| 亚洲一区视频在线| 欧美一级一区| 麻豆精品国产91久久久久久| 另类专区欧美制服同性| 欧美国产日韩a欧美在线观看| 欧美成人在线免费视频| 国产精品久久久久久模特| 国产一区二区三区观看| 亚洲国产精品一区二区第一页 | 在线亚洲一区| 欧美有码在线视频| 欧美电影资源| 老司机午夜精品| 欧美日韩免费观看一区| 欧美精品午夜| 国产日韩高清一区二区三区在线| 亚洲高清不卡在线| 亚洲欧美成人| 欧美电影免费观看大全| 亚洲一区二区三区四区在线观看| 久久久久在线| 国产精品免费看| 亚洲伦理在线免费看| 香蕉免费一区二区三区在线观看| 欧美成人免费网站| 欧美一级午夜免费电影| 欧美日韩在线视频一区二区| 亚洲高清自拍| 久久一区二区三区国产精品| 宅男66日本亚洲欧美视频| 免费亚洲婷婷| 一区在线影院| 香蕉免费一区二区三区在线观看| 亚洲精品在线看| 欧美jizz19性欧美| 影音欧美亚洲| 久久精品国产99| 亚洲综合三区| 欧美亚日韩国产aⅴ精品中极品| 最新日韩在线| 亚洲成色www8888| 欧美在线视频在线播放完整版免费观看| 狂野欧美激情性xxxx欧美| 亚洲直播在线一区| 欧美日韩精品在线| 99热免费精品| 亚洲区中文字幕| 欧美成人tv| 亚洲免费av观看| 亚洲人成啪啪网站| 欧美精品97| 一区二区三区国产精华| av成人激情| 欧美午夜视频| 午夜免费电影一区在线观看| 亚洲一级特黄| 国产精品永久免费| 欧美资源在线观看| 久久国产主播精品| 一区免费观看| 亚洲国产精品黑人久久久| 欧美大片在线看免费观看| 亚洲欧洲一二三| 亚洲国产天堂久久综合| 欧美日韩国产大片| 亚洲午夜精品一区二区| 亚洲尤物精选| 在线观看日韩www视频免费 | 欧美黄网免费在线观看| 伊人色综合久久天天| 久久综合久久久| 久久综合免费视频影院| 亚洲日本成人网| 99精品国产福利在线观看免费| 国产精品久久一区二区三区| 久久久久久电影| 毛片一区二区三区| 在线一区二区三区四区| 午夜精品短视频| 亚洲大胆av| 日韩亚洲欧美高清| 国产欧美日韩91| 奶水喷射视频一区| 欧美色网一区二区| 久久综合网hezyo| 欧美**人妖| 欧美一区二区三区日韩| 久久成人亚洲| 一本大道久久a久久综合婷婷| 亚洲专区在线视频| 亚洲精品久久久久久久久| 亚洲素人一区二区| 亚洲国产欧美另类丝袜| 亚洲一区二区视频| 亚洲日本电影在线| 午夜精品久久久久久久久久久久久| 亚洲电影在线播放| 亚洲人妖在线| 一区二区三区在线视频免费观看 | 欧美电影在线观看| 国产精品网红福利| 亚洲人成艺术| 亚洲福利视频网站| 午夜精品福利视频| 99riav久久精品riav| 久久精品官网| 午夜精品福利视频| 欧美高清视频一区二区三区在线观看| 午夜精品一区二区在线观看| 欧美国产日韩在线观看| 久久噜噜亚洲综合| 国产精品稀缺呦系列在线| 日韩视频不卡| 99精品99| 欧美激情精品久久久久久免费印度 | 欧美日韩在线免费观看| 麻豆九一精品爱看视频在线观看免费 | 一区二区三区免费看| 久久久美女艺术照精彩视频福利播放| 亚洲欧美欧美一区二区三区| 欧美片第1页综合| 欧美承认网站| 在线免费不卡视频| 久久美女性网| 欧美成人性网| 亚洲国产影院| 欧美福利一区二区三区| 亚洲国内自拍| 亚洲欧美bt| 国产精品ⅴa在线观看h| 日韩一二在线观看| 日韩视频第一页| 欧美电影资源| 亚洲毛片在线看| 亚洲午夜电影| 国产精品毛片在线| 午夜国产精品视频| 久久亚洲综合色| 91久久国产综合久久蜜月精品 | 亚洲国产精品专区久久| 亚洲日本激情| 欧美午夜精品久久久久久超碰| 亚洲精品自在在线观看| 亚洲无线视频| 国产精品亚洲аv天堂网| 午夜精品久久久99热福利| 久久精品动漫| 在线日韩视频| 欧美日韩免费观看一区| 亚洲欧美怡红院| 欧美成人精品一区| 一区二区欧美国产| 国产精品视区| 免费国产一区二区| 99精品99| 久久精品一二三区| 在线看欧美视频| 欧美日韩精品一区二区| 欧美亚洲网站| 亚洲精品1234| 久久精品亚洲热| 99精品视频一区| 韩国三级电影一区二区| 欧美精品一区二区三区高清aⅴ| 亚洲色在线视频| 久久精品水蜜桃av综合天堂| 亚洲福利视频一区二区| 国产伦理一区| 久久蜜桃精品| 一区二区三区产品免费精品久久75 | 亚洲欧美美女| 亚洲国产99| 欧美伊久线香蕉线新在线| 最新国产乱人伦偷精品免费网站| 国产精品一区二区欧美| 毛片一区二区三区| 欧美一级片一区| 99成人在线| 欧美成人网在线| 欧美综合77777色婷婷| 日韩写真视频在线观看| 国内综合精品午夜久久资源| 欧美私人啪啪vps| 麻豆精品在线播放| 亚洲欧美日韩精品久久奇米色影视 | 亚洲欧美一区二区三区久久| 亚洲破处大片| 米奇777超碰欧美日韩亚洲| 性做久久久久久久免费看| 一本色道久久综合亚洲精品不 |