何度もすいません。
http://eternalwindows.jp/security/acces ... rol13.html
このサイトにある
openorocessの保護についてですが、
おそらくこの部分
void RestartProcess(LPTSTR lpszKey, DWORD dwRemoveAccess)
{
TCHAR szAccountName[256];
TCHAR szModuleName[MAX_PATH];
PACL pDacl;
DWORD dwSize;
EXPLICIT_ACCESS explicitAccess;
SECURITY_ATTRIBUTES securityAttributes;
SECURITY_DESCRIPTOR securityDescriptor;
STARTUPINFO startupInfo;
PROCESS_INFORMATION processInformation;
dwSize = sizeof(szAccountName) / sizeof(TCHAR);
GetUserName(szAccountName, &dwSize);
BuildExplicitAccessWithName(&explicitAccess, szAccountName, PROCESS_ALL_ACCESS & ~dwRemoveAccess, GRANT_ACCESS, 0);
SetEntriesInAcl(1, &explicitAccess, NULL, &pDacl);
InitializeSecurityDescriptor(&securityDescriptor, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&securityDescriptor, TRUE, pDacl, FALSE);
securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
securityAttributes.lpSecurityDescriptor = &securityDescriptor;
securityAttributes.bInheritHandle = FALSE;
GetModuleFileName(NULL, szModuleName, MAX_PATH);
startupInfo.dwFlags = 0;
GetStartupInfo(&startupInfo);
CreateProcess(szModuleName, lpszKey, &securityAttributes, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInformation);
CloseHandle(processInformation.hThread);
CloseHandle(processInformation.hProcess);
}
この部分を変更して、以下のようなものを作りたいです。
========================
1)test.exeが起動してあった場合、そのPIDを調べて、セキュリティの設定でReadProcessMemoryとWriteprocesMemoryを禁止させる
========================
というものです。
test.exeが起動してあった場合、PIDを調べるというのは、前回教えていただきました。
DWORD GetPIDTID(LPCTSTR program, LPDWORD tid)
{
HANDLE hSnapshot;
PROCESSENTRY32 pe;
THREADENTRY32 te;
TCHAR szFileTitle[64];
DWORD pid = 0xFFFFFFFF;
*tid = 0xFFFFFFFF;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD, 0);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hSnapshot, &pe))
{
do
{
GetFileTitle(pe.szExeFile, szFileTitle, 64);
if (lstrcmpi(szFileTitle, program) == 0)
{
pid = pe.th32ProcessID;
break;
}
} while(Process32Next(hSnapshot, &pe));
}
if (pid != 0xFFFFFFFF)
{
te.dwSize = sizeof(THREADENTRY32);
if (Thread32First(hSnapshot, &te))
{
do
{
if (te.th32OwnerProcessID == pid)
{
*tid = te.th32ThreadID;
break;
}
} while(Thread32Next(hSnapshot, &te));
}
}
CloseHandle(hSnapshot);
}
return pid;
}
これでPIDを取得できます。
printf("test.exeを起動してください。\n");
for(;;)
{
pid = GetPIDTID(TEXT("test.exe"), &tid);
if (tid != 0xFFFFFFFF)
break;
Sleep(1000);
}
これでPIDを取得しました。
あとは、セキュリティレベルを変更して、メモリの読み込みと書き込みを禁止したいのですが、
どこをいじったらよいかわかりません。
SECURITY_ATTRIBUTES securityAttributes;
SECURITY_DESCRIPTOR securityDescriptor;
このへんでセキュリティの設定をしているなぁ~
ということはわかったのですが、
どこをいじればいいでしょうか・・・・
現在は
test.exeが起動されたらそのPIDを取得することはできました。
openprocessにはPIDが必要なわけですから。。。。
ここからせきゅりてぃれべるを変更したいです。
よろしくお願いします。
openprocessの保護
ページ移動
- 掲示板
- ↳ C言語何でも質問掲示板
- ↳ 四聖龍神録2 掲示板
- ↳ 四聖龍神録Plus掲示板
- ↳ AerobeatPlus掲示板
- 副次コンテンツ
- ↳ 作品お披露目掲示板
- 登録ユーザー用コンテンツ
- ↳ 登録ユーザー掲示板
- コミュニティフォーラム
- ↳ みんなでソースコードをレビューしよう
- ↳ 3DCGソフト使用者のコミュ
- ↳ Win32 API
- ↳ 組み込み系スクリプト言語をつかってみよう
- ↳ 東方好きあつまれ
- ↳ C言語誰でも交流サイト - mixC++ -
- ↳ ビット論理演算が好きな人♪
- ↳ 企画関係について語ろうか
- ↳ エフェクトアニメーション
- ↳ 学生で集まってみる?
- ↳ DirectX SDK
- ↳ マイコン/FPGA電子工作部
- ↳ PHPに可能性を無限大
- ↳ Code Golf を楽しもう!
- ↳ 作曲している人で話し合ってみませんか♪
- ↳ ソフト制作コミュ
- ↳ El Shaddai - エルシャダイ -
- ↳ PSPプログラミング
- ↳ CINEMA 4D
- ↳ お絵かきコミュニティ
- ↳ 素材作ってみたよ!
- ↳ OpenGL
- ↳ OpenCV
- ↳ RPGを作りたい!
- ↳ ポケモン好き集まれ
- ↳ ならば .NETをやらないか?
- ↳ 1から勉強してみないか?
- ↳ 赤髪超大好き♪
- ↳ ノースリーブ
- ↳ 伝説の戦士プリキュアを語ろう
- ↳ コンテストコミュニティー
- ↳ DXライブラリ何でも質問コミュニティ
- ↳ 四聖龍神録コミュニティ
- ↳ HTML/CSS/JavaScript
- ↳ 生放送コミュ
- ↳ サンプルを共有するコミュニティ
- ↳ おすすめマーカー
- ↳ minecraft
- ↳ Xtal Language
- ↳ マインクラフト
- ↳ 数学やらないか?
- ↳ 習ったことをプログラムで表してみよう!
- ↳ 小物アプリ作成や ら な い か
- ↳ AIの可能性は無限大
- ↳ 自作OS製作(GUI入門)[雑談]
- ↳ リレーコーディング
- ↳ Unix/Linux
- ↳ 競技プログラミングごっこやろうぜ
- ↳ 夏休みプログラミングイベント2012 in MixC++
- ↳ D言語を広めよう
- ↳ Scala布教の会
- ↳ 3Dゲーム作ろうぜ!モデリング~プログラミングまで
- ↳ 言語に興味を持ったら是非!!
- ↳ レイヴンズ・ネスト
- ↳ C言語とC++言語のコミュニティー!
- ↳ 放課後ふぁんたじあ
- ↳ マイ サンプルズ
- ↳ ガンヲタの館
- ↳ 歯科機器
- ↳ 歯科機器情報
- ↳ 52歳からはじめるC言語
- mixC++更新・仕様変更履歴