Load and Unload (ZT)
摘要: 一、前言
在前一段時間,我遭遇了一個現象詭異的Bug,最后原因歸結為在DllMain里錯誤地調用了FreeLibrary(在本文最后對此Bug有詳細的解釋)。MSDN里關于禁止在DllMain里調用 LoadLibrary和FreeLibrary的解釋過于含糊不清,所以我重溫了一遍Russ Osterlund的"Windows 2000 Loader"一文,并仔細閱讀了泄漏的Win2000源代碼的相關部分。按照我一貫的習慣,我的閱讀過程形成了我這篇文章的主體。自從我2000年寫了"ATL接口映射宏詳解" 以來,我還沒寫過這么大塊頭的文章。我不知道有多少人耐著性子看完了"ATL接口映射宏詳解",我猜想這篇文章的命運也不會比它的前輩好多少。在這個技術更新越來越快的年代里,人們會對這種陷入實現細節的文章感到厭煩,而我自己在若干年后可能也不會有耐心和勇氣面對它,但文章最后對幾個問題的解釋也還是有實用價值的,另外尋根究底的精神也總是應該存在的。
..............
閱讀全文
Windows NT使用技巧、編程原理及程序示例(ZT)
摘要: 1. 利用Net User命令和Cacls命令做用戶管理
2. 利用At命令做日程管理
3. 利用用戶登錄腳本實現開機提示
4. 利用Net Session命令實現登錄用戶統計
5. Windows NT局域網管理API函數庫(NETAPI)簡介
6. 怎樣添加、刪除、配置用戶?
7. 怎樣修改用戶口令?
8. 怎樣編程實現用戶的注銷和關機?
9. 怎樣獲取所有登錄用戶列表?
10. 怎樣向用戶或計算機發送消息?
11. 怎樣實現遠程關閉計算機?
12. UNICODE字符串和普通ASCII字符串怎樣轉換?
13. 如何獲取系統錯誤信息?
14. 什么是Service(服務)程序?
15. 如何使自己的應用程序成為Service?
16. 如何編制Service程序?
..................
閱讀全文
LNK1103: debugging information corrupt; recompile module
摘要: Linking...
Creating library Debug/xxx.lib and object Debug/xxx.exp
uuid.lib(comcat.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Error executing link.exe.
.........
閱讀全文
控制臺下輸出DLL的調試信息(ZT)
摘要: 在cmd.exe下運行rundll32.exe mydll.dll,MyFunc ,本想直接在當前cmd窗口輸出調試信息.
可因rundll32是Win32 GUI程序而非Win32 console,所以cmd.exe標準輸入輸出句柄無法被mydll.dll繼承用來向父進程cmd.exe輸出數據.
這時, 如果用強行用GetStdHandle獲得句柄,然后用WriteConsole來進行輸出,則會發生無效句柄錯誤.
但是如果在這之前先AllocConsole,則可正常WriteConsole,但是會新建個控制臺窗口來輸出數據,很不爽 :-P
有沒有什么辦法向當前cmd.exe窗口輸出數據呢?
.............
閱讀全文
char *和char [ ]的區別(ZT)
摘要: 見程序如下:
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
char source[]="This is a source sentence";
//char *source="This is a source sentence";
strtok(source,"a");
printf("%s\n",source);
return 0;
}
如果用被注釋掉的那句話,程序運行的時候就報錯。
................
閱讀全文
Windows下的進程隱藏(ZT)
摘要: 9X環境中Windows提供了想光的API函數用于隱藏系統進程。但是到了2000以上系統,已經無法真正的做到對于進程的隱藏,除非編寫底層驅動。但是我們可以通過一些變通的辦法來達到隱藏進程的目的,其中一個就是遠程注入。簡單的說就是先編寫一個 API的DLL,然后將這個DLL庫注入到一個系統進程中,作為它的一個線程去執行。
要實現DLL注入,首先需要打開目標進程。
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允許遠程創建線程
PROCESS_VM_OPERATION | //允許遠程VM操作
PROCESS_VM_WRITE, //允許遠程VM寫
FALSE, dwRemoteProcessId )
...........
閱讀全文
ApiHook類(ZT)
摘要: // 頭文件
// ApiHook.h: interface for the CApiHook class.
//
//////////////////////////////////////////////////////////////////////
#ifndef API_HOOK_H
#define API_HOOK_H
class CApiHook
{
public :
HANDLE hProc ;
............
閱讀全文
APIHOOK之攔截OpenProcess(真正的實現了攔截TerminateProcess)(ZT)
摘要:
關于API HOOK(OpenProcess),根據網上文章改寫
以下是部分程序,在VC++6.0 Plat SDK 2003 SP1下編譯通過
#include <windows.h>
#include "APIHook.h"
extern CAPIHook g_OpenProcess;
// 自定義OpenProcess函數
#pragma data_seg("YCIShared")
HHOOK g_hHook = NULL;
DWORD dwCurrentProcessId=0;
#pragma data_seg()
HANDLE WINAPI Hook_OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
.................
閱讀全文
APIHOOK之殺毒軟件的簡單實現(ZT)
摘要: #define DEBUGMSG
#include <windows.h>
#include <windef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "Psapi.h"
#pragma comment (lib,"Psapi.lib")
#define erron GetLastError ()
TCHAR name[50]=""; //保存蟲蟲的文件名+路徑
FILE *Gfp=NULL; //輸出到文件
BOOL ScanVXER (LPTSTR V_FileName,long V_FileOffset,int V_Length,TCHAR *V_Contents);
//匹配特征碼函數
.......................
閱讀全文
應用層隱藏服務的項目(ZT)
摘要: 應用層隱藏服務的項目 2006-03-28
HideService
// *****************************************************************************//
//
// 文件名: AgentHk.cpp
// 所屬項目名稱:
// 所屬模塊名稱: AGENT Service Hook
// 所屬項目版本: 2.0
// 文件用途 :
// 文件作者 : horse_b
// 創建日期 : 2004-11-30
//
// 文件修改說明:
// 文件修改人:
// 修改日期:
//
//
//
//********************************************************************************//
.............
閱讀全文
啟動項新思路
摘要: 前幾天我看了一篇技術文章,是講述一種病毒的感染運行機制。原文中提到了一個木馬啟動的新的思路。(文章是兩年前的,唉,看來我們要學的東西好多阿)也許某些 ~高手已經會了,但是很多人也不知道。我整理出來,結合我自己的試驗,給大家簡單介紹一下。作為一個小教程,本文不涉及程序方面的知識,菜鳥老鳥都能看明白的。暫時我們只針對XP和2000系統。其他的系統我沒測試過,不敢亂說!
一般大家機器里都會有QQ吧,我們就用QQ來做試驗!!?
直接在開始菜單里找到運行欄,輸入regedit,打開注冊表編輯器。找到
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]
.........
閱讀全文
WSUS3安裝完畢,WSUS.MSC不能執行
摘要: 風馬牛不相及的垃圾提示:
MMC 不能打開文件 C:\Program Files\Update Services\administrationsnapin\wsus.msc。
這可能是由于文件不存在,不是一個 MMC 控制臺,或者用后來版本的 MMC 創建。也可能是由于您沒有訪問此文件的足夠權限。
解決方法:
安裝KB907265補丁,中文Windows2003補丁地址為:http://download.microsoft.com/download/4/4/3/443ecb98-2394-4c92-b9e6-c50998edb8cf/WindowsServer2003-KB907265-x86-CHS.exe
閱讀全文
WSUS3安裝中途出錯
摘要: 2007-05-15 18:19:20 Success MWUSSetup Validating pre-requisites...
2007-05-15 18:19:21 Error MWUSSetup Failed to determine if an higher version of WSUS is installed. Assuming it is not... (Error 0x80070002: 系統找不到指定的文件。)
2007-05-15 18:19:24 Success MWUSSetup Required MMC Version: 3. Current MMC Version: 2
2007-05-15 18:19:24 Success MWUSSetup Required MMC Version: 3. Current MMC Version: 2
2007-05-15 18:19:57 Success MWUSSetup
閱讀全文
Vista錯誤刪除了備份驅動目錄FileRepository后解決方法
摘要: 網上的東西真是沒多少可以相信的,我的Vista刪除了FileRepository目錄之后,USB不能用了,藍牙不能用了,設備管理器一堆感嘆號,更新驅動,塞Vista安裝盤也沒用,折騰了N久了,最近終于解決了(不要隨便相信所謂的“減肥”)
下載IMAGEX6000
將VISTA安裝光盤中的WIM文件解壓
以管理員模式運行命令提示符 IMAGEX.EXE /APPLY X:\SOURCES\INSTALL.WIM 4 X:\A 路徑自己改,目錄需先手工創建,4為U版
完成后把X:\A\Windows\System32\DriverStore\FileRepository中的文件復制回去就行了,不用重裝系統!
真想減肥,使用NTFS壓縮方式壓縮一下,其他就算了,以防萬一
閱讀全文
網頁木馬US-ASCII碼,unicode碼的加密解密(ZT)
摘要: 轉載:二少's Blog
US-ASCII加密,就是把7bit轉換為8bit
閱讀全文