Entries from 2006-12-01 to 1 month

DLLエントリポイントの問題の切り分け

monalibcが特殊だからか? 否 DLLTEST.DLLを作ってみたが現象は同じ monalibcが monapi に依存しているからか? 否 DLLTEST.DLLをmonapiから独立にしたが変わらなかった Mapファイルを見てみよう dlltest .text 0x00401000 0x80 dlltest_impl.o 0x00401050 dl…

社員旅行

DLLエントリポイント 8

MONAPI.DLLの dllmain は呼べるようになった。 MONALIBC.DLLの dllmain のcallで失敗する。 問題を切り分けている最中だけど、DLLの作り方が悪いのかも。

26年も経っているのか

今日はJohn Lennonの命日ですね。 People say Im crazy doing what Im doing Well they give me all kinds of warnings to save me from ruin When I say that Im o.k. well they look at me kind of strange Surely youre not happy now you no longer play…

オープンソースマガジンに記事を書きました

OSM (オープンソースマガジン) 2007年 01月号 [雑誌]に「ハッカーへの遠回り」という記事を書きました。 今日発売です。

最近気づいたのだけど

「あぁ、今日は暇だなぁ。何やろうかな?」という日が、ここ数年全然ないな。 やりたいことあるってことだろうから良いことに違いない。

dword/word/byteの話

ライト・ポータブル・コードをパラパラとめくっていて思ったのですが、Monaで使っている dword(符号無し32bit) word(符号無し16bit) byte(符号無し8bit) のやりかたは良くないかもしれない。一度スレでも指摘されたし。 Monaで描かれているコードの移植性を…

return 書き忘れた

Perlの影響か?C++でreturn 書き忘れた。

DLLエントリポイント - 7

EntryPointがRelocateされなきゃいけないのだけどその辺りがまだ調べきれていない。

Mona Application SDK(0.3.0alpha8版)

BaysideさんによりMona Application SDK(0.3.0alpha8版)がリリースされました。 ダウンロードはSourceForge.netからどうぞ。

DLLエントリポイント 6

依存しているDLLを、依存順に列挙できた。 あともう少し!。 PELinkerが保持していた PEData* を vector で管理するようにした。 algorithmで reverse したかったという(ぉ

ぐったり

ぐったりしてコードが書けないのでライセンスの文章でもチェックしよう。

svn:ignore

mona-stdioに svn:ignore をあれこれ設定した。 これで svn add 忘れを防止しないとな。

Boostどうにかならんかな?

ふと思い立ってBoostはMonaで動かないかなと20分くらいやってみたがダメだった。 libstdc++のutilityヘッダがないとか。libstc++を整備しないとダメかなぁ。 g++付属のlibstdc++をリンクしたらライセンス的にまずいんだろうか? 良く分からない。ついでに例外…

libstc++のライセンスを詳しく

4.4BSD Liteはnon-freeなの? →核心部分。良く見たらberoさんだ。 g++TryCatch - めらまんホームページ ということで、gccを利用してMonaのアプリにgcc付属のlibstdc++や例外周りのコードをリンクすることはよさげ。 gccのlibstdc++をツリーにいれたらまた別…

DLLエントリポイント - 実験4

またまた実験 00000000 55 push ebp 00000001 89E5 mov ebp,esp 00000003 B878563412 mov eax,0x12345678 00000008 FFD0 call eax 0000000A C9 leave 0000000B C3 retということはきっとこんなことが出来るはず void hello() { printf("hello\n"); } int mai…

DLLエントリポイント - 実験3

そろそろ核心部分です。 ndisasm -u call.oの一部 00000130 55 push ebp 00000131 89E5 mov ebp,esp 00000133 81EC08000000 sub esp,0x8 00000139 8B4508 mov eax,[ebp+0x8] 0000013C FFD0 call eax 0000013E C9 leave 0000013F C3 retこんな感じです。 main…

DLLエントリポイント - 実験5

もう少し隠蔽しましょう。 void hello() { printf("%s\n", __func__); } void goodbye() { printf("%s\n", __func__); } typedef unsigned char byte; typedef unsigned short word; typedef unsigned int dword; byte* make_code(void (**functions)(void),…

DLLエントリポイント - 実験1

本当はアセンブラで書いてアセンブルしてバイナリ列を該当部に使って終わりなのですが寄り道。 引数で受け取ったアドレスの関数を call する関数を書いてアセンブリのコードを眺めます。 unsined int なのはお行儀が良くないですが気にしないでください。 vo…

貴重な資料

c:\xxxxx\oldmona\ref で貴重な資料を大量発掘。NoName(のなめ)とかOrange PekoeとかELFの資料とか 一番熱いのが ホイールマウス.txt (笑。

今日のできごと

未踏の説明会に行ってきた。良い出会いや思いもよらない繋がりを発見した。行き帰りの電車でC++クックブックを半分位読んだ。STLの使いかたが甘かったなあとか、Boost良さげだなぁとか知らないことが多くて勉強になった。 クックブックに載っているコード自…

DLLエントリポイント - 実験2

実験その2です、今度は call 部分を外出しにします。 call.asm BITS 32 global call_func call_func: push ebp mov ebp, esp sub esp, 8 mov eax, dword [ebp + 8] call eax leave retnasm -felf call.asm -o call.o main.cpp extern "C" void call_func(uns…