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

S.l.e!ep.¢%

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

防調試相關做法

Posted on 2009-10-14 15:01 S.l.e!ep.¢% 閱讀(416) 評論(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>
            亚洲精品在线电影| 欧美风情在线观看| 麻豆精品在线视频| 欧美一级一区| 欧美日韩成人| 欧美国产日韩一区二区| 国产偷久久久精品专区| 一本久道久久久| 亚洲精品美女91| 久久久久高清| 久久久噜噜噜久噜久久| 国产精品青草久久| 一区二区三区视频观看| 亚洲精品护士| 美女视频黄a大片欧美| 久热精品在线视频| 国产一区二区三区在线观看免费 | 亚洲网站在线播放| 亚洲精品免费看| 麻豆国产精品一区二区三区| 久久久久久伊人| 国产在线精品成人一区二区三区| 亚洲无线视频| 午夜精品一区二区三区四区 | 欧美日韩免费观看一区| 亚洲福利视频在线| 亚洲国产天堂久久综合网| 久久久99久久精品女同性| 久久深夜福利| 黄色精品网站| 久久视频在线免费观看| 狂野欧美性猛交xxxx巴西| 黄色成人在线观看| 久久久精品久久久久| 久久精品在线观看| 精品不卡一区| 久久一二三四| 亚洲国产高清在线| 中文日韩电影网站| 国产精品久久7| 午夜精品影院在线观看| 久久久久久九九九九| 影音先锋日韩精品| 欧美福利视频| 国产精品99久久久久久久久久久久| 亚洲私人黄色宅男| 国产欧美一区二区视频| 久久成人人人人精品欧| 女生裸体视频一区二区三区| 亚洲精品在线二区| 国产精品久久久久婷婷| 久久gogo国模裸体人体| 欧美激情一区二区在线| 亚洲已满18点击进入久久| 国产欧美日韩一区二区三区在线观看 | 麻豆免费精品视频| 亚洲精品国产精品国自产在线 | 国产精品久久夜| 欧美伊人久久久久久久久影院| 久久亚洲图片| 99综合在线| 国产欧美精品日韩区二区麻豆天美 | 亚洲国产成人在线播放| 亚洲欧美综合| 91久久精品日日躁夜夜躁国产| 欧美另类久久久品| 欧美一区激情| 亚洲巨乳在线| 另类春色校园亚洲| 亚洲性线免费观看视频成熟| 国内久久精品| 欧美日韩在线精品| 久久香蕉精品| 亚洲欧美日本国产有色| 亚洲国产导航| 久久久久国产一区二区| 一区二区三区av| 在线免费高清一区二区三区| 欧美香蕉大胸在线视频观看| 久久久欧美精品sm网站| 亚洲一级免费视频| 亚洲精品久久| 欧美激情久久久| 久久精品日产第一区二区| aa级大片欧美| 91久久亚洲| 影音先锋亚洲视频| 国产欧美一级| 国产精品播放| 欧美日本亚洲| 欧美国产在线电影| 久久久久久久一区二区三区| 亚洲免费一区二区| 一区二区三区www| 亚洲黄色尤物视频| 欧美成人精品在线播放| 久久久噜噜噜久久久| 欧美一区二区性| 亚洲免费视频中文字幕| 中文精品在线| 亚洲色图自拍| 一区二区三区高清不卡| 亚洲精品自在久久| 亚洲日本va午夜在线影院| 在线精品福利| 亚洲成人在线| 经典三级久久| 在线观看国产日韩| 亚洲国产精品电影在线观看| 韩国三级在线一区| 精品二区视频| 一区二区在线视频| 影音先锋亚洲电影| 亚洲国产一区在线| 亚洲精品系列| 亚洲图片欧美午夜| 亚洲欧美中文日韩在线| 午夜免费电影一区在线观看| 性欧美xxxx大乳国产app| 欧美一区二区三区在线视频| 午夜精品视频网站| 久久久国产精品一区二区中文| 久久精品系列| 免费一区视频| 亚洲福利视频网| 99ri日韩精品视频| 午夜精品美女自拍福到在线| 欧美一区二区三区在线观看| 久久久视频精品| 欧美激情一区二区三区成人| 欧美色中文字幕| 国产日韩欧美不卡| 亚洲国产精品日韩| 亚洲视频一区二区| 久久精品国产久精国产一老狼| 另类专区欧美制服同性| 亚洲国产另类久久精品| 一本色道久久综合亚洲精品婷婷 | 国产精品一区二区三区成人| 国产婷婷色综合av蜜臀av| 永久久久久久| 在线一区二区三区四区| 久久aⅴ国产欧美74aaa| 亚洲成人自拍视频| 亚洲图片欧美日产| 久久亚洲图片| 国产精品国产a级| 伊甸园精品99久久久久久| 一区二区三区鲁丝不卡| 久久久久久综合| 亚洲黄网站在线观看| 午夜精品福利一区二区三区av | 国产精品日本欧美一区二区三区| 国产一区欧美| 一区二区免费在线观看| 久久综合999| 亚洲视频每日更新| 欧美~级网站不卡| 国产日韩亚洲欧美综合| 亚洲免费观看在线观看| 久久精品色图| 在线视频精品| 快射av在线播放一区| 国产伦精品一区二区三区视频孕妇 | 99精品久久| 久久久久久久综合| 一区二区欧美精品| 免费日韩视频| 黄色av日韩| 久久精品国产在热久久| 亚洲免费观看在线观看| 老司机成人在线视频| 国产日韩精品一区二区三区在线| 日韩一级成人av| 久久永久免费| 欧美一区二区三区精品电影| 欧美日韩中国免费专区在线看| 亚洲国产精品精华液网站| 久久久久久电影| 午夜精品免费视频| 国产精品看片资源| 亚洲欧美日韩综合| 亚洲美女av网站| 欧美久久在线| 日韩午夜一区| 最新日韩在线视频| 免费日韩成人| 亚洲黄色精品| 欧美激情aⅴ一区二区三区| 久久久久久穴| 韩国女主播一区| 久久久久久9| 久久gogo国模裸体人体| 国产永久精品大片wwwapp| 久久精品国产综合| 欧美在线地址| 在线日本成人| 亚洲电影一级黄| 欧美—级高清免费播放| 99riav久久精品riav|