2: 2010-02-03 (水) 20:53:04 sero[6] [7] | 3: 2010-02-04 (木) 01:10:44 sero[6] [8] | ||
---|---|---|---|
Line 19: | Line 19: | ||
+ efg01/asm_apiで、レジスタをスタックに積んでから、 | + efg01/asm_apiで、レジスタをスタックに積んでから、 | ||
+ efg01/c_api()がコールされる | + efg01/c_api()がコールされる | ||
+ | |||
+ | ** void c_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int eax, int eip) [#k101e498] | ||
+ | - 引数: APIを呼び出したときのアプリのレジスタの値(これを変更すると、アプリのレジスタも書き換わる) | ||
+ | - 主要なローカル変数 | ||
+ | -- struct READ_API ra : efg01に渡されるパケットから情報を取り出すための構造体 | ||
+ | -- int f3 = 1 : あといくつのAPI機能を実行するか(初期値は1、つまり、一つの機能を実行したら終了) | ||
+ | - メインの処理 | ||
+ | if (edi == 0) | ||
+ | cmd = (UCHAR *) eip; | ||
+ | init_ra(&ra, cmd); | ||
+ | ra.reg32 = &edi; | ||
+ | ra.st0 = &eip; | ||
+ | for (;;) { | ||
+ | 中略 | ||
+ | } |
(This host) = http://osask.net