こんにちは(こんばんは)、rozeoです。
あるトピ→
http://dixq.net/forum/viewtopic.php?f=3&t=14215
で話題の中でみけCATさんがMakeoutlog.exeというファイルを作っていました。
これはDXライブラリのlog出力のフラグを外部からTRUEにしているようですが、このような外部からフラグ操作などを行う実行ファイルとは一体どういったソースを書いているのでしょうか?
みけCATさん個人への質問のような感じになりましたがよろしくお願いします。
他トピックスで気になった
Re: 他トピックスで気になった
この実行ファイルは「フラグをTRUEにする」ではなく、「フラグをFALSEにする処理を潰す」という処理をしています。
改造対象の「クイックソート解説アプリ.exe」をOllyDbgなどで解析してSetOutApplicationLogValidFlagを呼んでいる場所を特定し、
そこをNOP=0x90で埋めます。
ソースコード自体はこちらになります。
改造対象の「クイックソート解説アプリ.exe」をOllyDbgなどで解析してSetOutApplicationLogValidFlagを呼んでいる場所を特定し、
そこをNOP=0x90で埋めます。
ソースコード自体はこちらになります。
#include <windows.h>
int main(int argc,char* argv[]) {
HANDLE* fp;
if(argc<2) {
MessageBox(NULL,"Please drop the file!","error",MB_OK | MB_TOPMOST | MB_ICONSTOP);
return 1;
}
fp=CreateFile(argv[1],GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(fp==INVALID_HANDLE_VALUE) {
MessageBox(NULL,"File open error!","error",MB_OK | MB_TOPMOST | MB_ICONSTOP);
}
if(SetFilePointer(fp,0xE84,NULL,FILE_BEGIN)==0xFFFFFFFF) {
MessageBox(NULL,"File seek error!","error",MB_OK | MB_TOPMOST | MB_ICONSTOP);
} else {
DWORD written=0;
unsigned char buf[5]={0x90,0x90,0x90,0x90,0x90};
if(!WriteFile(fp,buf,5,&written,NULL) || written!=5) {
MessageBox(NULL,"File write error!","error",MB_OK | MB_TOPMOST | MB_ICONSTOP);
} else {
MessageBox(NULL,"Success!","make output log",MB_OK | MB_TOPMOST | MB_ICONINFORMATION);
}
}
CloseHandle(fp);
return 0;
}
オフトピック
File open error!が表示されたあとにFile seek error!が表示されるのはバグですね…
本来はFile open error!の時点で終了させるべきでした。
本来はFile open error!の時点で終了させるべきでした。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 他トピックスで気になった
はぁ〜…なるほど…フラグ操作ではなくNOPで埋めるというやり方もあったのか…
ありがとうございます。ためになりました。
ありがとうございます。ためになりました。