したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1みみず★:2008/08/10(日) 23:28:15
あまりにもプログラミングの内容が増えすぎた。
よって隔離スレの中を更に隔離。

1108774さん:2008/12/16(火) 19:53:41 ID:CENbthlg0
jQueryを使うときに気をつけるべき8のポイント : tech.kayac.com - KAYAC engineers' blog
http://tech.kayac.com/archive/jquery-checkpoints.html
IPv6 とかよくわからない人間が IPv6 対応サイトを作る際の知っておくべき 8 つの注意点 - にぽたん研究所
http://blog.livedoor.jp/nipotan/archives/51195204.html
HTTP Status Code
http://status-code.com/

1109774さん:2008/12/16(火) 20:44:01 ID:CENbthlg0
IPv4で規制中に書き込むスレッド
http://ipv6.2ch.net/test/read.cgi/ipv6/1222776717/14-15n
IPv4で規制中に書き込むスレッド
http://ipv6.2ch.net/test/read.cgi/ipv6/1222776717/
----
同じスレですね。はい。
勉強になる。

1110774さん:2008/12/17(水) 18:31:25 ID:CENbthlg0
Get faster Gmail with a faster browser - Help Center
http://mail.google.com/support/bin/answer.py?&answer=107906&hl=en
-----
wwwwwwwwwwwwwwwwwwwwwwww

1111774さん:2008/12/17(水) 20:19:47 ID:CENbthlg0
うーん。
頑張って他のexeに.textセクションだけでも紛れさせれないか頑張っているのだが・・・

1112774さん:2008/12/17(水) 22:29:37 ID:CENbthlg0
std::priority_queue<pair<DWORD, IMAGE_SECTION_HEADER *>, vector<pair<DWORD, IMAGE_SECTION_HEADER *> >, std::greater<vector<pair<DWORD, IMAGE_SECTION_HEADER *> >::value_type > >
これは酷い型宣言。

1113774さん:2008/12/17(水) 22:31:22 ID:CENbthlg0
正確にはこうだな

std::priority_queue<std::pair<DWORD, IMAGE_SECTION_HEADER *>, std::vector<std::pair<DWORD, IMAGE_SECTION_HEADER *> >, std::greater<std::vector<std::pair<DWORD, IMAGE_SECTION_HEADER *> >::value_type > > q;

1114774さん:2008/12/17(水) 23:40:46 ID:CENbthlg0
しょぼーん。
頑張って書いたのに、意味なかった。
今までの四時間を返せ!

1115774さん:2008/12/17(水) 23:41:29 ID:CENbthlg0
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <functional>

#include <windows.h>
#include <tchar.h>

#if defined(UNICODE) || defined(_UNICODE)
#error UNICODE版はサポートしてないみたいです。
#endif
#if defined(_WIN64)
#error 64bit版はサポートしてないみたいです。
#endif

#define RVA(po, rva) \
((void *)(((BYTE *)(po)) + ((long)(rva))))

IMAGE_SECTION_HEADER *GetTextSection(IMAGE_SECTION_HEADER *section, WORD numOfSection){
for(int i = 0; i < numOfSection; ++i){
if(lstrcmpA((char *)section[i].Name, ".text") == 0){
return &section[i];
}
}
return NULL;
}

1116774さん:2008/12/17(水) 23:42:02 ID:CENbthlg0
void Unko(void *src, void *des, DWORD srcSize, DWORD desSize){
IMAGE_DOS_HEADER *pSrcDosHeader = (IMAGE_DOS_HEADER *)src;
IMAGE_DOS_HEADER *pDesDosHeader = (IMAGE_DOS_HEADER *)des;

if(pSrcDosHeader->e_magic == IMAGE_DOS_SIGNATURE && pDesDosHeader->e_magic == IMAGE_DOS_SIGNATURE){
IMAGE_NT_HEADERS32 *pSrcNtHeader = (IMAGE_NT_HEADERS32 *)RVA(src, pSrcDosHeader->e_lfanew);
IMAGE_NT_HEADERS32 *pDesNtHeader = (IMAGE_NT_HEADERS32 *)RVA(des, pDesDosHeader->e_lfanew);

if(pSrcNtHeader->Signature == IMAGE_NT_SIGNATURE && pDesNtHeader->Signature == IMAGE_NT_SIGNATURE){
WORD srcNumberOfSections = pSrcNtHeader->FileHeader.NumberOfSections;
WORD desNumberOfSections = pDesNtHeader->FileHeader.NumberOfSections;

IMAGE_SECTION_HEADER *pSrcSections = IMAGE_FIRST_SECTION(pSrcNtHeader);
IMAGE_SECTION_HEADER *pDesSections = IMAGE_FIRST_SECTION(pDesNtHeader);

IMAGE_SECTION_HEADER *pSrcTextSection = GetTextSection(pSrcSections, srcNumberOfSections);
IMAGE_SECTION_HEADER *pDesTextSection = GetTextSection(pDesSections, desNumberOfSections);

if(pSrcTextSection && pDesTextSection){
//ソースの.textセクションの大きさ
DWORD srcTextSectionSize = pSrcTextSection->SizeOfRawData;

//挿入先の.textセクションのファイル上の大きさ
DWORD desTextSectionSize = pDesTextSection->SizeOfRawData;
//挿入先の.textセクションのメモリ上の大きさ
DWORD desTextSectionVirtualSize = pDesTextSection->Misc.VirtualSize;

//挿入先のセクションのアラインメントの大きさ
DWORD desSectionAlignment = pDesNtHeader->OptionalHeader.SectionAlignment;
//挿入先のセクションのファイル上のアラインメントの大きさ
DWORD desFileAlignment = pDesNtHeader->OptionalHeader.FileAlignment;

//挿入後の.textセクションのファイル上の大きさ(もっと良い求め方があったが、忘れた。)幾らか足しているのはアセンブリ用(下の方のcode分)
DWORD desAfterTextSectionSize = ((srcTextSectionSize + desTextSectionSize) + desFileAlignment - 1 + 10 /*アセンブリ分*/) / desFileAlignment * desFileAlignment;
//.textセクションのファイル上の増加量
DWORD desTextSectionAddition = desAfterTextSectionSize - desTextSectionSize;
//挿入後の.textセクションのメモリ上の大きさ?良く分からん。
//DWORD desAfterTextSectionVirtualSize = (desAfterTextSectionSize + desSectionAlignment - 1) / desSectionAlignment * desSectionAlignment;
DWORD desAfterTextSectionVirtualSize = desTextSectionVirtualSize + desTextSectionAddition;

//挿入後のexeの大きさ
SIZE_T fileSize
= desSize //元のファイルの大きさ
+ desTextSectionAddition //増えた.textセクションの大きさ
;

void *p = VirtualAlloc(NULL, fileSize, MEM_COMMIT, PAGE_READWRITE);

1117774さん:2008/12/17(水) 23:42:25 ID:CENbthlg0
if(p){
#define DESTOP(po) (void *)((long)(po) - (long)(des) + (long)(p))
memcpy(p, des, desSize);
//TODO
//.textセクションの挿入&エントリポイントの変更&アセンブリ(バイナリ)の挿入&情報の修正

IMAGE_NT_HEADERS32 *pImageNtHeader = (IMAGE_NT_HEADERS32 *)DESTOP(pDesNtHeader);

IMAGE_SECTION_HEADER *pImageSections = (IMAGE_SECTION_HEADER *)DESTOP(pDesSections);
IMAGE_SECTION_HEADER *pTextSection = (IMAGE_SECTION_HEADER *)DESTOP(pDesTextSection);

//.textセクションより後ろにあるものを移動&値変更
{
//.textセクションの開始位置(RVA)
DWORD pTextSectionPointerToRawData = pTextSection->PointerToRawData;
std::priority_queue<std::pair<DWORD, IMAGE_SECTION_HEADER *>, std::vector<std::pair<DWORD, IMAGE_SECTION_HEADER *> >, std::greater<std::vector<std::pair<DWORD, IMAGE_SECTION_HEADER *> >::value_type > > q;
for(int i = 0; i < desNumberOfSections; ++i){
if(pImageSections[i].PointerToRawData > pTextSectionPointerToRawData){
q.push(std::pair<DWORD, IMAGE_SECTION_HEADER *>(pImageSections[i].PointerToRawData, &pImageSections[i]));
pImageSections[i].PointerToRawData += desTextSectionAddition;
}
}

while(!q.empty()){
std::pair<DWORD, IMAGE_SECTION_HEADER *> &top = q.top();
void *sp = RVA(p, top.first);
memmove(RVA(sp, desTextSectionAddition), sp, top.second->SizeOfRawData);

q.pop();
}
}

//.textセクションを弄くる
{
void *sp = RVA(p, pTextSection->PointerToRawData);
memmove(RVA(sp, desTextSectionAddition), sp, pTextSection->SizeOfRawData);
static const BYTE code[] = {
0xE8, 0x00, 0x00, 0x00, 0x00, //CALL rel32
0xE9, 0x00, 0x00, 0x00, 0x00, //JMP rel32
};

memcpy(sp, code, sizeof(code));
memcpy(RVA(sp, sizeof(code)), RVA(src, pSrcTextSection->PointerToRawData), pSrcTextSection->SizeOfRawData);

//挿入元のEXEのエントリポイントの.textでの相対位置
DWORD srcEntryPoint = pSrcNtHeader->OptionalHeader.AddressOfEntryPoint - pSrcNtHeader->OptionalHeader.BaseOfCode;
//挿入先のEXEのエントリポイントの.textでの相対位置
DWORD desEntryPoint = pDesNtHeader->OptionalHeader.AddressOfEntryPoint - pDesNtHeader->OptionalHeader.BaseOfCode;

pImageNtHeader->OptionalHeader.AddressOfEntryPoint = pImageNtHeader->OptionalHeader.BaseOfCode;
*((DWORD *)RVA(sp, 1)) = sizeof(code) - 5 + srcEntryPoint;
*((DWORD *)RVA(sp, 6)) = desTextSectionAddition + desEntryPoint - 10;
}

//.textセクションの大きさの修正
{
pTextSection->SizeOfRawData = desAfterTextSectionSize;
pTextSection->Misc.VirtualSize = desAfterTextSectionVirtualSize;
}

FILE *filew = fopen("out.exe", "wb");
fwrite(p, fileSize, 1, filew);
VirtualFree(p, fileSize, MEM_DECOMMIT);
}
}
}
}
}

1118774さん:2008/12/17(水) 23:42:35 ID:CENbthlg0

int main(int argc, char **argv){
if(argc < 4){
std::cerr << "引数が少ないみたいです。" << std::endl;
std::cerr << "コマンド S D T" << std::endl;
return -1;
}
HANDLE hSrc = CreateFileA(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hDes = CreateFileA(argv[2], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hSrc != INVALID_HANDLE_VALUE && hDes != INVALID_HANDLE_VALUE){
LARGE_INTEGER srcSize, desSize;
if(GetFileSizeEx(hSrc, &srcSize) && GetFileSizeEx(hDes, &desSize)){
std::cout << "FROM:" << srcSize.QuadPart << "bytes" << std::endl;
std::cout << " TO :" << desSize.QuadPart << "bytes" << std::endl;

//でかすぎるのはここで一応切っておく。これより小さくても本当はやめるべきだが。
if(!srcSize.HighPart && !desSize.HighPart){
HANDLE hSrcMap = CreateFileMappingA(hSrc, NULL, PAGE_READONLY, 0, 0, NULL);
HANDLE hDesMap = CreateFileMappingA(hDes, NULL, PAGE_READONLY, 0, 0, NULL);
if(hSrcMap && hDesMap){
void *pSrc = MapViewOfFile(hSrcMap, FILE_MAP_READ, 0, 0, 0);
void *pDes = MapViewOfFile(hDesMap, FILE_MAP_READ, 0, 0, 0);
if(pSrc && pDes){
Unko(pSrc, pDes, srcSize.LowPart, desSize.LowPart);
}
if(pSrc)
UnmapViewOfFile(pSrc);
if(pDes)
UnmapViewOfFile(pDes);
}
if(hSrcMap)
CloseHandle(hSrcMap);
if(hDesMap)
CloseHandle(hDesMap);
}
}
}
if(hSrc != INVALID_HANDLE_VALUE)
CloseHandle(hSrc);
if(hDes != INVALID_HANDLE_VALUE)
CloseHandle(hDes);
}

1119774さん:2008/12/17(水) 23:48:21 ID:CENbthlg0
>>1115-1118
http://mimizu.karou.jp/static/exeinjection.cpp

1120774さん:2008/12/17(水) 23:55:27 ID:CENbthlg0
これくらいincludeしておけば、間違えなく安心。
#include <iostream>
#include <vector>
#include <deque>
#include <queue>
#include <map>
#include <string>
#include <algorithm>
#include <functional>

#include <cstdio>
#include <cstdlib>
#include <climits>
#include <ctime>

int main(int argc, char **argv){

}

1121774さん:2008/12/18(木) 02:43:49 ID:CENbthlg0
>また、第8回日本情報オリンピック予選の結果通知は、12月23日(火)を予定しています。
落ちてるだろうがwktk

1122774さん:2008/12/18(木) 18:50:04 ID:CENbthlg0
jQueryを良くする25のTIPS[to-R]
http://blog.webcreativepark.net/2008/12/17-225630.html

1123774さん:2008/12/19(金) 17:10:52 ID:CENbthlg0
メニューの項目上で右クリックを出来るようにするっていうのは難しいのか?

1124774さん:2008/12/19(金) 18:22:05 ID:CENbthlg0
C#って凄く簡単にGUI作れるね!

1125774さん:2008/12/19(金) 18:57:45 ID:CENbthlg0
随分と前からgccを入れていたのだが、ようやく使ってみた。
物凄く簡単じゃんww

1126774さん:2008/12/19(金) 18:58:59 ID:CENbthlg0
PATH通した。

1127774さん:2008/12/19(金) 19:01:40 ID:CENbthlg0
MinGM(gcc)だとファイル名を指定しないとa.exe(a.out)が出力されるのが粋だよな。

1128774さん:2008/12/19(金) 19:40:42 ID:CENbthlg0
Windows の基本的なコマンド集 - IT戦記
http://d.hatena.ne.jp/amachang/20081219/1229674783
-----
Unixのほうがいいんじゃね?

1129774さん:2008/12/19(金) 20:00:59 ID:CENbthlg0
PowerShellを入れている。

1130774さん:2008/12/19(金) 20:04:43 ID:CENbthlg0
バージョン情報が2006だし。
けっこう古いな。

1131774さん:2008/12/19(金) 20:10:41 ID:CENbthlg0
GNU make 日本語訳(Coop編) - 目次
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html
-----
そろそろmakefileの勉強ですか?
遅いですね。

1132774さん:2008/12/19(金) 20:59:33 ID:CENbthlg0
一個Sleipnir用のプラグインを思いついたけれども、正規の方法じゃ無理だなあ。
まあ、ただ単に他のウィンドウのEditボックスの内容をURLとして開くようなそんな機能。

1133774さん:2008/12/20(土) 17:04:11 ID:CENbthlg0
Firefoxで最後のタブを閉じても終了しないようにするには
browser.tabs.closeWindowWithLastTab

false
にすれば良いみたい。

1134774さん:2008/12/20(土) 19:27:19 ID:CENbthlg0
今更ながら、Script+EXEでSleipnirは全て弄くれることをおもいだした。

1135774さん:2008/12/21(日) 13:39:36 ID:CENbthlg0
ハードリンクとジャンクションを作れるようにしてやった。

1136774さん:2008/12/21(日) 17:51:35 ID:CENbthlg0
Sleipnirにコードを注入して、そこからスレッドを走らせるコードを書いたら全然うまくいかなかったわけだが、今漸く理由が分かった。
まず、VC++でDebugでビルドすると、関数ポインタが指している場所が、本体にジャンプする命令であるからである。
だからその周辺をコピーしてもコピーしていない場所にジャンプすることになってしまうので、落ちると。
次にコードを実行してからVirtualFreeExするのが早すぎることだ。
これでは、コピーされていても、コードを実行する前にメモリが開放されて実行できない。
まあ、それだけのことだった。

#include <iostream>
#include <vector>
#include <deque>
#include <queue>
#include <map>
#include <string>
#include <algorithm>
#include <functional>

#include <cstdio>
#include <cstdlib>
#include <climits>
#include <ctime>

#include <windows.h>

#if defined(UNICODE) || defined(_UNICODE)
#error UNICODE無理。
#endif

struct Stop{
~Stop(){
//#ifdef _DEBUG
std::cout << "Enterで終了します" << std::endl;
std::getline(std::cin, std::string());
//#endif
}
};

void __declspec(naked) WINAPI TestProc(void *p){
__asm{
mov eax, 0
ret 4
}
}

int main(int argc, char **argv){
Stop stop;
{
Stop stop;
}

//EnumWindows(Proc, 0);
std::cout << "-----------------------------" << std::endl;
std::cout << "argc = " << argc << std::endl;
for(int i = 0; i < argc; ++i){
std::cout << "第" << i << "引数:" << argv[i] << std::endl;
}
std::cout << "-----------------------------" << std::endl;

if(argc < 2){
#ifdef _DEBUG
argv[1] = new char[9];

sprintf(argv[1], "%x", (unsigned int)FindWindowA("SleipnirMainWindow", NULL));
//delete・・・
#else
std::cerr << "引数が足りません><" << std::endl;
return -1;
#endif
}

HWND hWnd = (HWND)std::strtoul(argv[1], NULL, 16);

DWORD PID;
GetWindowThreadProcessId(hWnd, &PID);

std::cout << "HWND of Sleipnir is " << hWnd << std::endl;
std::cout << "PID of Sleipnir is " << PID << std::endl;

HANDLE hProcess = OpenProcess(
PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION,
FALSE,
PID
);

if(hProcess){
LPVOID p = VirtualAllocEx(hProcess, NULL, 0x00010000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

BYTE dummy[8];
WriteProcessMemory(hProcess, p, TestProc, 0x00000100, (SIZE_T *)dummy);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)p, NULL, 0, (LPDWORD)dummy);

WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess, p, 0x00010000, MEM_DECOMMIT);

CloseHandle(hThread);
CloseHandle(hProcess);
}else{
std::cerr << "OpenProcess Error" << std::endl;
}
}

1137774さん:2008/12/21(日) 23:55:48 ID:CENbthlg0
キーロガーを書いている。
多分公開しない。

1138774さん:2008/12/21(日) 23:56:35 ID:CENbthlg0
マイクロソフト曰く、リスキーなことをやっているようだ。

1139774さん:2008/12/22(月) 17:49:53 ID:CENbthlg0
Lunascape5 beta来たねえ。
Acid3が100/100だってさ。
まあ、レンダリングエンジンは作ってないだろうから、ソース拾ってコンパイルして突っ込めばおkじゃね?
テスト版のtrunkビルドで良い感じかと。
Sleipnirおせえええええ。

1140774さん:2008/12/22(月) 18:02:05 ID:CENbthlg0
Windows Vista 搭載パソコンを買ってきてやったことまとめ - IT戦記
http://d.hatena.ne.jp/amachang/20081221/1229855379

1141774さん:2008/12/22(月) 18:43:56 ID:CENbthlg0
WebkitってAcid3通過してたよねーと思って調べたら予想通り。
-----
Webkit が acid3 test を pass!
http://d.hatena.ne.jp/amachang/20080327/1206607705
-----
こんなのもあった。
-----
WebKit 開発者の一部よ、恥を知れ! - Opera の非公開テストビルドと WebKit Nightly r31342 が Acid3 をクリア
http://end-of-file.net/blog/2008-03.html#date-2008-03-27
-----
これは・・・

1142774さん:2008/12/22(月) 18:52:36 ID:CENbthlg0
でも次の読むと直っているらしい。

1143774さん:2008/12/22(月) 18:56:34 ID:CENbthlg0
Lunascape爆発しないかな?

1144774さん:2008/12/22(月) 21:01:01 ID:CENbthlg0
SVGをなぜか勉強中。
うまくやれば、Canvasよりも上手く描画できるかも?

1145774さん:2008/12/22(月) 21:04:34 ID:CENbthlg0
一番上の兄者、爆発しろ。

1146774さん:2008/12/23(火) 14:21:23 ID:CENbthlg0
完璧なソースだ・・・
我ながら感動。

1147774さん:2008/12/23(火) 14:27:49 ID:CENbthlg0
何やるって、hProcessさえ取得できれば、そのプロセスに独自のDLLをマッピングして、そのDLLの中の任意の関数を実行してしまうって言うプログラムである。

1148774さん:2008/12/23(火) 18:15:43 ID:CENbthlg0
予選通過したみたい。
だけれども67しかない・・・
80は行ったと思ったんだけれども・・・

1149774さん:2008/12/23(火) 18:26:42 ID:CENbthlg0
俺の結果----------
問題1(20,あり) 問題2(20,あり) 問題3(15,あり)
問題4(4,あり) 問題5(8,あり) 問題6(0,なし)
------------------
問題3が何故一問間違っているのかが訊きたい。
問題4が何故一問しか合ってないのか訊きたい。
まあ他は提出したのはあっているようだ。

1150774さん:2008/12/23(火) 22:52:19 ID:CENbthlg0
http://g.e-hentai.org/
目もメモ

1151774さん:2008/12/23(火) 23:08:26 ID:CENbthlg0
>>1150
UIに感動した。
レートされている量が、星の濃さで分かるというのは素晴らしいと思った。

1152774さん:2008/12/24(水) 13:16:30 ID:CENbthlg0
価格.com - SEAGATE ST31000333AS (1TB SATA300 7200) 価格比較
http://kakaku.com/item/05302015940/
-----
やすい・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

1153774さん:2008/12/25(木) 15:53:57 ID:CENbthlg0
この組み合わせが価格.com的に良い!
-----
価格.com - SEAGATE ST31000333AS (1TB SATA300 7200) 価格比較
http://kakaku.com/item/05302015940/
価格.com - COREGA CG-HDC2U3100 価格比較
http://kakaku.com/item/05391310834/

1154774さん:2008/12/26(金) 14:46:50 ID:CENbthlg0
Lunascape 5.0β、Acid3で100点満点を達成
http://slashdot.jp/it/08/12/24/1225220.shtml
---
>辛口で申しわけないが、WebKitが100点を出せたのであって,
>そのレンダリングエンジンをLunascapeが採用したにすぎない。
-----
コメント糞わらたwwwwwwwwwwwwwwwwwwwww
Lunascapeは初心者向けのようです。

1155774さん:2008/12/26(金) 18:10:15 ID:CENbthlg0
キーロガー難しい・・・
割り込み的な感じだから困る

1156774さん:2008/12/26(金) 18:53:36 ID:CENbthlg0
ちゃんと設計を考え直そう。

少なくとも一つはウィンドウを作る必要性はある。
で、もう一つスレッドを用意してそこで書き込みを行うようにするか。
そうすれば、スレッドセーフになる。

1157774さん:2008/12/26(金) 18:55:18 ID:CENbthlg0
取り敢えず、一度ウィンドウにSendMessageして、そのウィンドウからPostThreadMessageでスレッドにデータを送るようにしよう。
そうすれば、割り込みが行う処理は少なく出来る。
少なくとも、ハードディスクに書き込む時間の分短く出来る。

1158774さん:2008/12/26(金) 19:23:49 ID:CENbthlg0
無限ループはfor(;;)で統一しよう。

1159774さん:2008/12/26(金) 19:33:27 ID:CENbthlg0
何故PostMessageで処理しないかというと、なんかウィンドウメッセージは優先順位があるらしく、嫌いだから。
SendMessageならば即座にそっちに処理が其の点安心。
スレッドメッセージならば優先順位は無いと思うから、良いね!ということ。

1160774さん:2008/12/26(金) 20:11:17 ID:CENbthlg0
PostThreadMessageが上手くいかない・・・

1161774さん:2008/12/26(金) 20:19:41 ID:CENbthlg0
217 名前:名無し~3.EXE[sage] 投稿日:2008/12/26(金) 18:48:40 ID:sd88u1wC
>《NEWS@もっと!関西》なにわの型破りITベンチャー「フェンリル」残業ゼロ、休暇タップリでも躍進中! | 企業戦略 | 投資・経済・ビジネスの東洋経済オンライン
>http://www.toyokeizai.net/business/strategy/detail/AC/2a318124c2755ee5f5bc8f151b4100fb/
>グーグルとは、ユーザーがフェンリルのWebブラウザ上でグーグルのスポンサーリンクをクリックすれば、
>そのクリックごとにフェンリルに報酬が入る契約になっている。
>
>本当にこれだけでお金が入るのか?
>入るのだったらクリックするが・・・
---
Sleipnir Part214
http://pc11.2ch.net/test/read.cgi/win/1230041362/217
-----
ちょwwwwwwwww
それで金が入るのかwwwwwwwwww
積極的に押すしwwww

1162774さん:2008/12/26(金) 20:31:37 ID:CENbthlg0
マイクロソフト爆発しろ!

PostThreadMessageはWM_USER以降しか利用できないなんて何処に書いてあるんだ!
少なくとも1は送信できねーじゃねーか!

1163774さん:2008/12/26(金) 20:34:06 ID:CENbthlg0
test = 整瑳

1164774さん:2008/12/26(金) 20:48:16 ID:CENbthlg0
メモリ確保の時間とMutexの同期にかかる時間はどっちの方がでかいのかな?

1165774さん:2008/12/26(金) 20:59:59 ID:CENbthlg0
Mutexのほうが7.09645倍かかっていると申しております。

1166774さん:2008/12/26(金) 21:05:13 ID:CENbthlg0
同一プロセス内だからCreticalSectionという手があった。
なんとメモリ確保の0.212188倍!
最速である。

1167774さん:2008/12/26(金) 21:07:32 ID:CENbthlg0
Mutexは七倍ぐらい、CreticalSectionなら四分の一ぐらいみたい。
charのメモリをnewしてdeleteする時間に比べてね。

1168774さん:2008/12/26(金) 21:07:49 ID:CENbthlg0
#include <windows.h>
#include <iostream>
#include <string>

const unsigned int count = 10000000;

int main(int argc, char **argv){
DWORD s = GetTickCount();

for(unsigned int i = 0; i < count; ++i){
char *p = new char;
delete p;
}

DWORD e = GetTickCount();

std::cout << e - s << std::endl;

unsigned int diff = e - s;

s = GetTickCount();

HANDLE hMutex = CreateMutex(NULL, FALSE, NULL);

for(unsigned int i = 0; i < count; ++i){
WaitForSingleObject(hMutex, INFINITE);

ReleaseMutex(hMutex);
}

e = GetTickCount();

std::cout << e - s << std::endl;

unsigned int diff2 = e - s;

CloseHandle(hMutex);

CRITICAL_SECTION cs;

s = GetTickCount();

InitializeCriticalSection(&cs);

for(unsigned int i = 0; i < count; ++i){
EnterCriticalSection(&cs);

LeaveCriticalSection(&cs);
}

DeleteCriticalSection(&cs);

e = GetTickCount();

std::cout << e - s << std::endl;

unsigned int diff3 = e - s;

std::cout << (double)diff2 / (double)diff << std::endl;
std::cout << (double)diff3 / (double)diff << std::endl;

std::getline(std::cin, std::string());
}

1169774さん:2008/12/26(金) 21:26:10 ID:CENbthlg0
よし上手くいった。
今日は枕を高くして寝られます。

1170774さん:2008/12/27(土) 19:28:19 ID:CENbthlg0
何故、printfにはバイナリを出力する方法が無いんだ!

1171774さん:2008/12/27(土) 20:48:29 ID:CENbthlg0
取り敢えず、使っているパソコンのキーボードにあるキーのうち、「半角/全角」「-^\@[;:],./\」以外は網羅した。

1172774さん:2008/12/27(土) 21:26:38 ID:CENbthlg0
ShiftとCtrlとAltは押したときと離した時が分からないと駄目だよな。

1173774さん:2008/12/27(土) 22:18:54 ID:CENbthlg0
>>1172は実装した。
ずっと押しているときにShiftとかの押されたメッセージがいっぱい発生するが、前回のステータスが含まれているので、それを使って華麗にスルー。
他のキーはそのまま書き込んでいるので、ずっと押しているとログが長くなる長くなる・・・
SetThreadPriorityで書き込みスレッドの優先度をTHREAD_PRIORITY_IDLEにしているので、
>Base priority of 1 for IDLE_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, ABOVE_NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority of 16 for REALTIME_PRIORITY_CLASS processes.
ということだそうです。

via http://msdn.microsoft.com/en-us/library/ms686277%28VS.85%29.aspx

1174774さん:2008/12/27(土) 22:27:16 ID:CENbthlg0
試しに東方のキーのログを取ってみたら
65.0 KB (66,628 バイト)
になってしまった。
これは直ぐにばれるだろうJK

1175774さん:2008/12/27(土) 22:30:28 ID:CENbthlg0
同じ時刻に同じログが重なっているのが気になるなあ。
複数のウィンドウに同じメッセージが届いているとは思えれないから、これはバグか?

1176774さん:2008/12/27(土) 23:25:44 ID:CENbthlg0
LINQおもすれー

1177774さん:2008/12/28(日) 00:10:27 ID:CENbthlg0
code == HC_ACTION
みたいなのを追加したらなくなった。
よかったよかった。

1178774さん:2008/12/28(日) 02:16:46 ID:CENbthlg0
この掲示板のクッキーはこの掲示板だけで通用するようにして欲しい。
現状では、jbbs.livedorr.jp全体に有効であるのが、ちと辛い。

1179774さん:2008/12/28(日) 20:52:31 ID:CENbthlg0
Shiretoko重い。物凄く重い。
動作自体は軽いことは認めるんだけれども、描画に精一杯でユーザーの動作を受け付けない。
まず、起動時に三十秒近く止まる。まあ俺の環境だけなのかもしれないけれども。

1180774さん:2008/12/28(日) 20:55:12 ID:CENbthlg0
まあ、それ以上にSleipnirは重いのかもしれない。

1181774さん:2008/12/28(日) 20:57:13 ID:CENbthlg0
Hamachiya2だったかHamatiya2だったか忘れたが、顔を見たら、やっぱり普通の人だなあと。

1182774さん:2008/12/28(日) 21:16:06 ID:CENbthlg0
どうでも良いことかもしれないんだけれどもさ、ブラウザってどのタイミングで画面を描画するのかな?
表示領域外は描画しないにしても、スクロールバーがあるからそのために縦の大きさを測るために、一度場所だけは計算しなければならない。

ああ、めんどうくさ。

1183774さん:2008/12/28(日) 21:50:44 ID:CENbthlg0
正直一度完成してしまったものをまた書き換えるのは面倒なことである。
だからせっかく作ったキーロガーもここまま放置されるのであろう。

1184774さん:2008/12/28(日) 21:58:23 ID:CENbthlg0
多分x64用にコンパイルするならば128bitsの変数が使えるみたい。
その最大値は、
+170141183460469231731687303715884105727
最小値は
-170141183460469231731687303715884105728
である。

1185774さん:2008/12/28(日) 22:19:35 ID:CENbthlg0
情報オリンピックって、windows.hって使えるのかな?
使えるならばプロセスと、スレッドのプライオリティーを最高にしてチートが出来るんだけどw
まあ、それで出来るくらい簡単な問題は無いと思うが。

1186774さん:2008/12/28(日) 22:23:13 ID:CENbthlg0
Sleipnirのウィンドウスタイルの値は
0x04CF8000
っと。

---------------------------
エラー
---------------------------
04CF8000
---------------------------
OK
---------------------------

1187774さん:2008/12/28(日) 22:33:57 ID:CENbthlg0
>>1186をバイナリにすると・・・
0000 0100 1100 1111 1000 0000 0000 0000
っと。
いらないか。

1188774さん:2008/12/28(日) 22:36:47 ID:CENbthlg0
WS_CLIPSIBLINGS = 0x04000000
WS_OVERLAPPEDWINDOW = 0x00CF0000
であると。

ref
ウィンドウスタイル
http://yokohama.cool.ne.jp/chokuto/urawaza/prm/window_style.html

1189774さん:2008/12/28(日) 22:39:32 ID:CENbthlg0
残りの0x00008000
はなんだろう?
まあ大体見当は付いている。
しかし、ヘッダが無いので分からない。
-----
タイトルにファイル名を出させない!
http://athomejp.com/goldfish/mfc/window/nonfilename.asp
「無題 − タイトル」から「無題 −」をはずす方法
http://donnk.com/Nmura/soft/help012.html
-----
らへんかな・・・

1190774さん:2008/12/28(日) 23:17:34 ID:CENbthlg0
CreateWindowExWをフックするとMFCのdllで例外が発生する。
今まで実績があるフック関数だからなあ。
何がいけないのだろうか。

1191774さん:2008/12/28(日) 23:46:38 ID:CENbthlg0
面白いことになってまいりました。
------
[STACK TRACE]
0x7C80A92B GetLocalTime() + 0xc7
kernel32.dll
0x7C80AA7C lstrcmpW() + 0x20
kernel32.dll
0x0153476F
sleipnir_hook.fx
0x769CC3EA WriteStringStream() + 0x28e
ole32.dll
0x769BF551 CoUnmarshalInterface() + 0x1d5d
ole32.dll
0x769A83F7 CoRegisterClassObject() + 0x567
ole32.dll
0x769A7F1B CoRegisterClassObject() + 0x8b
ole32.dll
0x4020606B Ordinal5376() + 0x2b
MFC71U.DLL
0xFF575653
<Unknown Module>

1192774さん:2008/12/28(日) 23:50:24 ID:CENbthlg0
何故だか分からんが、
ntdll.dllとkernel32.dll
でアクセスバイオレーションが起こるっていう。

1193774さん:2008/12/28(日) 23:53:59 ID:CENbthlg0
何故strcmpの部分で落ちるのかが理解できない。

1194774さん:2008/12/28(日) 23:57:40 ID:CENbthlg0
ああ分かった。
CreateWindow(Ex)のClassNameのところにはRegisterClass(Ex)が返したAtomが渡せるんだ!

1195774さん:2008/12/29(月) 00:02:42 ID:CENbthlg0
ああ、もう嫌だ。
やってられない。

早くSleipnirSDKが公開される事だけを祈ろう。

1196774さん:2008/12/29(月) 00:10:34 ID:CENbthlg0
ClassName < 0x00010000
の時はクラスアトム
ClassName >= 0x00010000
の時はアドレスって言うわけだ。

1197774さん:2008/12/29(月) 15:07:24 ID:CENbthlg0
Shiretokoで検索できなくなった。死んでしまえ!

1198774さん:2008/12/29(月) 18:17:25 ID:CENbthlg0
三百五十行ほどソースを打った。

1199774さん:2008/12/29(月) 18:17:47 ID:CENbthlg0
これでコアは完成である。

1200774さん:2008/12/29(月) 18:21:21 ID:CENbthlg0
俺の辞書にオブジェクト指向の言葉は無い!

1201774さん:2008/12/29(月) 19:19:19 ID:CENbthlg0
俺の兄を技術力で抑えてやる。
死に給へ!

1202774さん:2008/12/29(月) 19:56:40 ID:CENbthlg0
コアはプラグインを読み込んで、実行とか、そこらへんの管理のみ。

1203774さん:2008/12/29(月) 19:59:19 ID:CENbthlg0
取り敢えず、第一弾は任意のプロセスを隠蔽するプラグインを書く。

1204774さん:2008/12/29(月) 23:07:39 ID:CENbthlg0
某サイトのソースをコピペして、需要に合うように変更して色々と書いたら動いた!
自分自身すら見えなくなるって言う。
素晴らしい!

1205774さん:2008/12/29(月) 23:08:57 ID:CENbthlg0
勿論タスクマネージャからは見えないから、強制終了不能wwwwwww
兄者混乱wwwwwwwwwwwwww
Sleipnirとか俺の使っている実行形式は全部見えなくしてやるし。

1206774さん:2008/12/29(月) 23:23:14 ID:CENbthlg0
仕様を全部載せるとしよう。
まず、右下シェルの部分にアイコンを出すには任意の場所で
「やらないかやらないか」(yaranaikayaranaika)
と入力する必要がある。これはトグルである。
また、ポップアップメニューを出すには中ボタンをダブルクリックする必要がある。

まあ、それでプラグインの一覧と、全て有効、全て無効、終了などが表示される。

ただしシェルのアイコンは十五秒しか表示されないので、また表示するには上の奴をまた入力すればよい。
まず、何も情報を与えないで、やらないかを二回も一回も間違えずに入力しかつ、右下の部分を注目しかつ、中ボタンをダブルクリックしようとする奴なんて、居ないと思うので、まあこれで十分かと思う。
因みに終了のトリガーは、うえの方法か、「quitquitquitquit」と入力すれば終了する。
また、全て有効は「allonallon」と入力し、全て無効は「alloffalloff」と入力する。
これらはグローバルフックを利用しているので、どこで入力しても効果を発動するはずである。
非常に無駄である。

1207774さん:2008/12/30(火) 00:20:09 ID:CENbthlg0
タスクマネージャを開くと53->23にプロセスが減っているwww


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板