ページ内コンテンツ
efg01解析
- (by sero, 2010/2/2~)
- このページはSeroがefg01のソースを読んでわかったことをメモするページです
- よって、正確な情報であるという保障はありません
- その点留意していただければ幸いです
- 優先的に解析結果がほしい分野があればコメント欄へどうぞ 実力の及ぶ限り努力します
解析の前に
- ここでは、OSASK.NETトップから[各種過去ログ集メニュー]→[2009.11.01時点でのトップページ]→[おもな成果物/OSASK-HB系]からダウンロードできるabcdw017を対象とします
- また、当面の間はAPIコールを中心に解析します
概要
- GUIGUI01のAPIは複数の機能を一度に実行できる
- そのため、実行するAPIの機能を順に並べたパケットをefg01に渡すことになっている
- その形式は、GH4と呼ばれる
efg01に到達するまで
- APIコール(z_tools/guigui01/g01libc0.lib/startup.askのg01_execcmd(0))
- JMP [ESI]
- efg01/asm_apiで、レジスタをスタックに積んでから、
- efg01/c_api()がコールされる
型名・構造体など
- UCHAR
- 実体はunsigned char型
- READ_EH4
- 概要: (名前はEH4になっているが)GH4形式のパケットからデータを取り出すための構造体 FIFO構造を持つ
- UCHAR buf[READ_EH4_BUFLEN] : パケットのデータを一時的にキャッシュするバッファ
- int r : 次のデータがあるbuf上のインデックス
- 概要: (名前はEH4になっているが)GH4形式のパケットからデータを取り出すための構造体 FIFO構造を持つ
void c_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int eax, int eip)
- 概要: GUIGUI01のAPI処理本体(名称は「Cで書かれたAPI」に由来すると思われる) 行数: 797行
- 引数: APIを呼び出したときのアプリのレジスタの値(これを変更すると、アプリのレジスタも書き換わる)
- 主要なローカル変数
- struct READ_API ra : efg01に渡されるパケットから情報を取り出すための構造体
- int f3 = 1 : あといくつのAPI機能を実行するか(初期値は1、つまり、一つの機能を実行したら終了)
- メインの処理
if (edi == 0) // EDIが0だったら cmd = (UCHAR *) eip; // APIパケットの開始はEIPから init_ra(&ra, cmd); // raを初期化し、パケット情報を受け取る準備をする ra.reg32 = &edi; // レジスタを参照・書き換えするための準備 ra.st0 = &eip; // 詳細は不明(guigui01.h(つまりC言語からのアクセス)を使うだけならおそらく使われていない(要調査TODO)) for (;;) { if (f3 == 0) // 実行する機能の残りが0ならば goto fin; // API処理終了 f3--; // 今からひとつ処理する i = getnum_api(&ra, 0); // パケットからひとつデータを取り出す if (i == 0) continue; // API番号0はパディングのためスキップされる if (i == 3) { // パケットの終端、またはパケットの延長 中略 return; } if (i == 4) { // アプリの終了 中略 exit(1); } if (i == 5) { // 文字列表示 中略 } else if (i == 6) { // コマンドラインオプションの処理 中略 } else if (i == 0x00ffffff) { // ジャンクAPI(仕様が決定版でないAPI)の処理 中略 } else { printf("c_api: error i=%d\n", i); exit(1); } }
Counter: 275,
today: 3,
yesterday: 1
初版日時: 2010-02-02 (火) 22:47:46
最終更新: 2010-02-05 (金) 00:00:00 (JST) (319d) by lina
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | sero/efg01解析 | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | lina | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |