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

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

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

19774さん:2008/08/20(水) 17:48:29
codeは雛型。
codeとWNDPROC型と指定されたバイト数のメモリを確保し、実行、読み込み、書き込みを許可する。
次に雛形をコピー。
そして、必要な情報を書き込んだ後、サブクラス化を実行する。
そして、確保されたメモリのポインタを返すと。

20774さん:2008/08/20(水) 17:51:01
こうすると、procの第一引数に確保されたメモリのポインタが入っている。
また、次に呼び出すプロシージャのアドレスは、pを渡されたアドレスだとすると。
*(((WNDPROC *)p) - 1)
で取得できるという代物だ。
此れで態々グローバル変数を利用する必要が無くなる。
メモリの管理についてはもう少し良い方法があるが、64kb程しか一回にリークしないので問題ないかと。
此れでソースが少なくてすむね!

21774さん:2008/08/20(水) 17:57:09
というか、二時間というのはバイトコードの打つ方法に時間がかかった。
Intelの資料糞読みにくい。

22774さん:2008/08/20(水) 18:00:45
何故[ESP]を直接参照する方法が無いんだ!
0x89, 0xE3, //MOV EBX, ESI

0x89, 0xE3, //MOV EBX, ESP
の間違えですた。

23774さん:2008/08/20(水) 18:01:57
[ESP]を直接参照できればもう少しソースコードを短くすることが出来るのだがなあ。
というか此れ自体も適当に入力したので、もうちょっと短く出来るのかもしれない。

24774さん:2008/08/20(水) 18:09:44
一応、返却値として、その確保されたメモリへのポインタを返しているので、
bytesに適当な値を指定したら、
*((int *)p) = 123;
とかすれば、初期状態で変数を与えることも出来るねえと。
因みに、VirtualAllocの仕様上メモリの内容は0で初期化されてます。

25774さん:2008/08/20(水) 18:10:26
と言うことで、此れをMemoPanelに利用しようかなあと。
環境依存だから動かない環境があるかなあ?

26774さん:2008/08/20(水) 18:42:44
おしゃべり総合商社「ネイリー」
http://narude531masu.blog59.fc2.com/
---
P検なんてあったなあ。
なつかしす。
今じゃ要らない資格ですね。因みに俺は四級のはず。
Wordとかエクセルは全然使わないんだけれどもwwww

27774さん:2008/08/20(水) 19:55:58
うはwww、VirtualAlloc関数滅茶苦茶メモリ勿体無いwwwww
ちゃんとメモリ管理はした方が良いようですwwwww

28774さん:2008/08/20(水) 21:58:36
operator new[]で確保したメモリは実行できることが保証されているの?
良く分からんwww

29 ◆rCEzuNnL0g:2008/08/21(木) 18:40:10
Sleipnir.APIが利用できれば、かなりスクリプト+EXEで色々と正確に出来そう。
正確というのは、違うウィンドウとかに効果を起こさないとかそんなことね。

Sleipnir.API.Handleを見ればウィンドウハンドルが分かるので、GetWindowThreadProcessId()を利用すればプロセスIDを取得することが出来る。
で、そこでOpenProcess()を利用すれば、プロセスハンドルを取得できる。
という事で、此れを利用すれば色々とウマーなことが出来るのはではなかろうかと。
VirtualAllocEx()とか使ったり、WriteProcessMemory()とか使うとウマーじゃなかろうか。
まあここら辺でも見ればいいかと。
-----
常駐プログラム隠蔽テクニック
http://ruffnex.oc.to/kenji/text/dll_inj/
-----

30 ◆rCEzuNnL0g:2008/08/21(木) 18:42:56
---
ProcessHandle_ProcessID_WindowHandle - trick-with-Wiki
http://wiki.trick-with.net/ProcessHandle_ProcessID_WindowHandle.html
---
プロセスIDとプロセスハンドルとウィンドウハンドルの件
良いサイト発見!

31 ◆rCEzuNnL0g:2008/08/21(木) 20:40:14
次の JavaScript の仕様はこうなる! ECMAScript 3.0 から 3.1 への変更点まとめ - IT戦記
http://d.hatena.ne.jp/amachang/20080821/1219302804
---
ちょwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
IEでもgetter、setter始まったなwwwwwwwwwwwwwwwwwwwwwwwwww
まだちょっと理解できていない部分があるので、これから勉強を。

32 ◆rCEzuNnL0g:2008/08/21(木) 20:43:39
__defineGetter__、__defineSetter__
で定義したGetter,Setterはfor inで列挙できるみたい。
まあ、どうでもいいことか。

33 ◆rCEzuNnL0g:2008/08/21(木) 20:47:13
MemoPanelに検索機能があったほうがウマーかなあ。

34 ◆rCEzuNnL0g:2008/08/21(木) 20:56:33
>>29
スクリプトからEXEを起動するには、
new ActiveXObject("WScript.Shell").Run()
で。
---
1.10 プログラムを実行する、ファイルやフォルダを開く(Runメソッド) - VBScript & JScript(JavaScript) Tips for WSH
http://www.happy2-island.com/vbs/cafe02/capter00110.shtml
---

35 ◆rCEzuNnL0g:2008/08/21(木) 20:58:41
最近Sleipnir関連のtwitterの動きが熱すぎるw

36 ◆rCEzuNnL0g:2008/08/21(木) 21:00:58
正直な所、キャッシュポッドパネルがspxプラグインだったのは吹いたw
sqlite3.dllも使ってみるか?

37 ◆rCEzuNnL0g:2008/08/21(木) 22:12:23
SUB ESP, 4
PUSH EAX
PUSH EBX
ADD ESP, 12
MOV EAX, imm32
POP EBX
PUSH EAX
PUSH EBX
SUB ESP, 8
POP EBX
POP EAX
JMP cd

38 ◆rCEzuNnL0g:2008/08/21(木) 22:24:12
0x81, 0xEC,    0x04, 0x00, 0x00, 0x00    //SUB ESP, 4
0x50,                                //PUSH EAX
0x53,                                //PUSH EBX
0x81, 0xC4, 0x0C, 0x00, 0x00, 0x00    //ADD ESP, 12
0xB8, 0x00, 0x00, 0x00, 0x00,        //MOV EAX, imm32
0x5B,                                //POP EBX
0x50,                                //PUSH EAX
0x53,                                //PUSH EBX
0x81, 0xEC,    0x08, 0x00, 0x00, 0x00    //SUB ESP, 8
0x5B,                                //POP EBX
0x58,                                //POP EAX
0xE9, 0x00, 0x00, 0x00, 0x00,        //JMP cd

39 ◆rCEzuNnL0g:2008/08/21(木) 22:44:01
今までは、EAXレジスタとEBXレジスタを利用して、引数を積んでいたが、
EAXレジスタの値が変わってしまっていた。
という事でEAXレジスタの内容も変わらないようにした。
それが上のアセンブリ。

40 ◆rCEzuNnL0g:2008/08/21(木) 23:18:11
取り敢えず、やりたいことはやったので、(本当はもう一つあるのだが、スクリプトで代用可能)
一部環境で起動出来ない問題を究明したい。

sqlite3.dllがエクスポートしている関数は0x64個か・・・
結構少ないなあ。

41 ◆rCEzuNnL0g:2008/08/21(木) 23:23:34
因みにFenrirLib.fxがエクスポートしているのは0x0729個。
vcl100.bplは0x1D19個。

取り敢えずfxプラグインは、FPI_CreateInstanceをエクスポートすれば良いみたい。

42 ◆rCEzuNnL0g:2008/08/21(木) 23:25:46
_FPI_CreateInstance@4
って何だ?

43 ◆rCEzuNnL0g:2008/08/21(木) 23:29:42
あ、MemoPanel.spxも
SPX_GetPluginInfo
SPX_Initialize
_SPX_GetPluginInfo@0
_SPX_Initialize@4
の四つをエクスポートしていた。
下の二つが何かが気になるなあ。

44 ◆rCEzuNnL0g:2008/08/21(木) 23:30:18
@の後は、引数の数*4だと思われ。

45 ◆rCEzuNnL0g:2008/08/21(木) 23:31:01
FPI = Fenrir Plugin Interface?

46 ◆rCEzuNnL0g:2008/08/21(木) 23:32:58
JIT Actionsも含めて全て、
FPI_CreateInstanceを呼んでいる。

47 ◆rCEzuNnL0g:2008/08/22(金) 18:43:34
レンコン=拳銃… ネット隠語検知 「犯罪」を防止 総務省がソフト開発へ:ニュース - CNET Japan
http://japan.cnet.com/news/media/story/0,2000056023,20379040,00.htm?ref=rss
---
備忘録。メモ。

48 ◆rCEzuNnL0g:2008/08/22(金) 21:04:01
これがC++のソースなんだぜ?
-----
const BYTE *p = ((BYTE *)_p - sizeof(WNDPROC) - sizeof(void *));
SetProc(*((WNDPROC *)(p + sizeof(void *))));
void * const p_code = (void *)(*((DWORD *)p));
void * const base = (void *)((DWORD)p_code & 0xFFFF0000);
SIZE_T * const used = (SIZE_T *)base;
const SIZE_T code_size = *((SIZE_T *)((BYTE *)base + sizeof(SIZE_T)));
BYTE ** const p_p = *((BYTE ***)((BYTE *)base + sizeof(SIZE_T) + sizeof(SIZE_T)));
void * const now_base = (void *)((DWORD)*p_p & 0xFFFF0000);

49 ◆rCEzuNnL0g:2008/08/23(土) 16:27:15
SPXプラグインからアクションを実行する方法を考え中。

50 ◆rCEzuNnL0g:2008/08/23(土) 17:03:16
取り敢えずFenrirLibは大量のクラスを出力しているっぽいので、メンバ変数とメンバ関数の解析を・・・

51 ◆rCEzuNnL0g:2008/08/23(土) 17:06:44
DLLの活用
http://www5a.biglobe.ne.jp/~javajava/ari/30bcc/kimitu/kimitu03.html
---
を参考にして、規則性を解読する。

52 ◆rCEzuNnL0g:2008/08/23(土) 17:12:04
-----
private:
string str;
public:
test_class();
void set_str(string &s);
void show();
-----
??0test_class@@QAE@ABV0@@Z
??0test_class@@QAE@XZ
??1test_class@@QAE@XZ
??4test_class@@QAEAAV0@ABV0@@Z
?func@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z
?set_str@test_class@@QAEXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
?show@test_class@@QAEXXZ
-----

53 ◆rCEzuNnL0g:2008/08/23(土) 17:17:21
>>52
駄目です!僕には解読できません><

最近稀に、フィードバックエージェントが出ずにSleipnirが華麗に落ちるときがあるなあ。
間違えて、閉じるを押してしまっているとは到底思えれないし。
何故だ!

54 ◆rCEzuNnL0g:2008/08/23(土) 17:34:27
取り敢えず自分でクラスをエクスポートしたDLLを作ってみた。
上手く行った。上手いもんだなあ。

55 ◆rCEzuNnL0g:2008/08/23(土) 17:38:44
VC++で作ってみた
---
序数: 0001 名前: ??0test_class@@QAE@ABV0@@Z
序数: 0002 名前: ??0test_class@@QAE@XZ
序数: 0003 名前: ??1test_class@@QAE@XZ
序数: 0004 名前: ??4test_class@@QAEAAV0@ABV0@@Z
序数: 0005 名前: ?func@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z
序数: 0006 名前: ?set_str@test_class@@QAEXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
序数: 0007 名前: ?show@test_class@@QAEXXZ
----
一緒だwww

56 ◆rCEzuNnL0g:2008/08/23(土) 17:55:05
うーん。
この情報を見ただけでは、そのクラスがメンバ変数に何を持っているのは分からないんだよなあ。
分かれば、メモリを確保して、ecxレジスタにポインタを入れて、普通に呼び出せば良いのだが・・・

57 ◆rCEzuNnL0g:2008/08/23(土) 17:56:19
??0test_class@@QAE@ABV0@@Z
??0test_class@@QAE@XZ
??1test_class@@QAE@XZ
??4test_class@@QAEAAV0@ABV0@@Z
がコントラスタなのかな?
通常は、
引数なしのコントラスタ。
コピーコントラスタ。
が作られるんだったけなあ。
もう忘れた。

58 ◆rCEzuNnL0g:2008/08/23(土) 17:57:24
だけれども、
str.match(/??[0-9]([^@]+)@@/);
RegExp.$1でクラスの名前は少なくとも取得できるなあ。

59 ◆rCEzuNnL0g:2008/08/23(土) 18:02:36
取り敢えず、手動で列挙してみる。

FActionData
FButton
FButtonEx
FButtonState
FByteArrayInputStream
FByteArrayOutputStream
FCharConv
FClientDC
FCmdUI
FColorManager2
FColorManager3
FColorManager
FComboBox
FComboEdit
FComboListBox
FCustomDialog
FCustomDialogEx
FDataInputStream
FDataOutputStream
FDropDownButton
FEdit
FFileInputStream
FFileOutputStream
FFrameSkinManager
FGZip
FGlobal
FGuiManager
FHistoryData
FHoldWnd
FHttpConnection
FImageList
FIniProfile
FMemoryDC
FMenuBar
FObject
FOptionDialogData
FOwnerDrawItem
FOwnerDrawMenu
FPaintDC
FPlugin
FPluginItem
FProgressBar
FReBar
FRotineChecker
FSearchEngine
FSearchItemCombo
FSearchItemList
FSetting
---100行目まで---

60 ◆rCEzuNnL0g:2008/08/23(土) 18:06:09
FSiSu
FSkinItem
FSmartInstallerItemBase
FSmartInstallerManager
FSpliter
FStartupRotineChecker
FStatic
FStatusBar
FStatusBarEx
FStatusBarItemData
FStdMemoryManager
FString
FStringIdManager
FThemeManager
FThemeMap
FToolBar
FToolBarButtonData
FToolBarButtonDataEx
FToolBarEx2
FToolBarEx3
FToolBarEx
FToolInfo
FToolTipCtrl
FTreeCtrl
FTreeCtrlEx2
FWaitCursor
FWebDataObjectAnalyzer
FWebDataSourceFactory
FWindowDC
FWnd
FXmlDocument
FXmlElement

61 ◆rCEzuNnL0g:2008/08/23(土) 18:07:37
$FDCT
というのがあるのだが、よくわからん・・・

62 ◆rCEzuNnL0g:2008/08/23(土) 18:08:49
取り敢えずメンバ関数も手動で列挙してみる。

63 ◆rCEzuNnL0g:2008/08/23(土) 18:18:40
?$FDCT::AboutDoc()
?$FDCT::AboutPath()
FToolTipCtrl::Activate()
FImageList::Add(,) (四つオーバーロードされている)
FCustomDialog::AddButtonInfo(,)
FCustomDialogEx::AddButtonInfo(,)
FXmlDocument::AddElement(,,,)
FSiSu::AddEntry(,,)
FCustomDialogEx::AddImageInfo(,,)
FSearchItemCombo::AddItem(,)
FSearchItemList::AddItem(,)
FIniProfile::AddKey(,,)
FCustomDialog::AddLink(,,)
FCustomDialogEx::AddLink(,,)
?$FDCT::AddMetaFileComment(,)
FOwnerDrawMenu::AddOwnerDrawSeparator(,,)
FOwnerDrawMenu::AddOwnerDrawSubMenu(,,,,)
FOwnerDrawMenu::AddOwnerDrawText(,,,)
FGuiManager::AddPreTransChain(,)
FActionData::AddRef()

体が持たないので、以下省略

64 ◆rCEzuNnL0g:2008/08/23(土) 18:22:17
一応__thiscallについて復習しておくと、
固定長の引数の場合は、スタックへ最後の引数から積み、thisポインタはecxレジスタへ。
可変長の引数の場合は、スタックへ最後の引数から積み、thisポインタは最後にスタックに積む。
で良いと思う。

65 ◆rCEzuNnL0g:2008/08/23(土) 18:22:37
マイクロソフトの資料から引用。
The __thiscall calling convention is used on member functions and is the default calling convention used by C++ member functions that do not use variable arguments. Under __thiscall, the callee cleans the stack, which is impossible for vararg functions. Arguments are pushed on the stack from right to left, with the this pointer being passed via register ECX, and not on the stack, on the x86 architecture.

66 ◆rCEzuNnL0g:2008/08/23(土) 18:26:07
variable:[形]可変の
via:[前]…を通って, …経由; …によって
さて、皆は翻訳できるかな?

67 ◆rCEzuNnL0g:2008/08/23(土) 18:28:30
convention:[名]集会, 会合, 会議, 大会; ((集合的)) (集会への)出席者[代表者]; 協定, 協約; (社会の)慣例[習], 因襲; (芸術上の)しきたり, 約束; 【コンピュータ】規約

The __thiscall calling convention is used on member functions and is the default calling convention used by C++ member functions that do not use variable arguments.
__thiscall呼び出し規約は、メンバー関数に利用され、可変長でない引数をとらないメンバー関数でデフォルトの呼び出し規約です。

68 ◆rCEzuNnL0g:2008/08/23(土) 18:32:24
Under __thiscall, the callee cleans the stack, which is impossible for vararg functions.
__thiscall呼び出し規約では、呼び出された側がスタックを片付けます、此れは引数をとる関数では重要なことです。

(なんだかwhich以下が訳しにくい。)

69 ◆rCEzuNnL0g:2008/08/23(土) 18:34:01
Arguments are pushed on the stack from right to left, with the this pointer being passed via register ECX, and not on the stack, on the x86 architecture.
x86互換機では、引数は右から左にスタックにプッシュし、thisポインタはスタックではなくECXレジスタを通して渡されます。

70 ◆rCEzuNnL0g:2008/08/23(土) 18:37:12
vararg member functions use the __cdecl calling convention.
可変長の引数をとるメンバ関数は__cdecl呼び出し規約を利用します。
All function arguments are pushed on the stack, with the this pointer placed on the stack last
全ての引数はスタックに積まれ、thisポインタは最後にスタックに詰まれます。
(訳注:__cdeclは呼び出し側がスタックを綺麗にする。引数は右から左へ積む。)

71 ◆rCEzuNnL0g:2008/08/23(土) 18:37:43
__thiscall (C++)
http://msdn.microsoft.com/ja-jp/library/ek8tkfbw(VS.80).aspx
---
詳しくはここへね。

72 ◆rCEzuNnL0g:2008/08/23(土) 19:03:36
あくまでも此れは、Microsoftのソフトだけの話。
他のコンパイラでは違う実装かもしれない。

73 ◆rCEzuNnL0g:2008/08/24(日) 09:13:13
(´・ω・`)ショボーン
昨日試したけれども、メンバー関数のアドレスが取得できない・・・
どんなに頑張っても__thiscallな関数はvoid *にすら型変換できない・・・

74 ◆rCEzuNnL0g:2008/08/24(日) 09:13:49
馬鹿野郎!

75 ◆rCEzuNnL0g:2008/08/24(日) 19:04:14
es3.1:es3.1_proposal_working_draft [ES4 Wiki]
http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft
---
後で読む。

76 ◆rCEzuNnL0g:2008/08/24(日) 19:39:16
エレメントの大きさと位置を測定する
http://msdn.microsoft.com/ja-jp/library/cc392317.aspx
---
適当なときに読む。

77 ◆rCEzuNnL0g:2008/08/25(月) 17:16:41
Firefox 3.1に搭載予定のJavaScriptエンジン「TraceMonkey」,数倍〜数十倍の高速化:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20080825/313337/
----
Firefox 3.1 beta激しく期待。
ブランチ版は入れるのが心配なので敬遠気味。betaならば多分大丈夫。
プログラムフォルダを全て消される可能性は低いだろう(笑)。

78 ◆rCEzuNnL0g:2008/08/27(水) 12:48:28
開発者のFirefox 3:特集 - builder by ZDNet Japan
http://builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/
Google,検索キーワードをリアルタイムで推測する「Google Suggest」を正式提供へ:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20080827/313474/
---
すげーーーーー
入れてみようwwwwwwwwwwwwwwww
Canvasを頑張って練習しようwwwwwwwwwwwww
----
うpだて - みみず日記
http://d.hatena.ne.jp/sub_chon/20080827/1219808408
----
更新したよー。

79 ◆rCEzuNnL0g:2008/08/27(水) 12:56:30
Shiretoko(Firefox 3.1a)入れてみた。

80 ◆rCEzuNnL0g:2008/08/27(水) 13:12:14
どうでもいいけれども、
特権を持ったオブジェクトをWebページ側が取得できれば、いろいろなことが出来る。
まあ、此れは当たり前。
此れがISleipnirであったり、GM_XMLHttpRequestであったりするだけ。
根本は何も違わない。

81 ◆rCEzuNnL0g:2008/08/27(水) 13:17:33
JavaScriptエンジンがさらに高速化されたFirefox 3.1を一足早く試す方法 - おさんぽブログ
http://d.hatena.ne.jp/kokoromo/20080827/1219807601
を見て新しいの入れた。

82 ◆rCEzuNnL0g:2008/08/27(水) 15:28:47
Twitter / javascripter: function b_search(a,v)(func...
http://twitter.com/javascripter/statuses/899790598
---
function b_search(a,v)(function s(h,t,w)h>t?-1:(w=(h+t)>>1,v===a[w]?w:(v<a[w]?t=w-1:h=w+1,s(h,t))))(0,a.length-1)
---
よくこんなの書くなー

83 ◆rCEzuNnL0g:2008/08/27(水) 15:32:15
アクセスチャートを作ろう! Pathtraq ページチャート API と Google Chart API の合わせ技! - IT戦記
http://d.hatena.ne.jp/amachang/20080827/1219815788

84774さん:2008/08/27(水) 17:06:55
んな、馬鹿な。
なんかFenrirLib.fxを見ていたのだが、毎回ウィンドウズのバージョンを取得しているのだが。
んなもん、起動中にウィンドウズのバージョンが変わるはずが無いんだから、グローバル変数で取得しておいてキャッシュしておいた方が軽いと思うぞ。
なんか内部ではFStringというクラスを使っているっぽい。
普通にstd::stringを使ったほうが早いんじゃないの?
まあ、FirefoxとかOperaだったら独自のクラスを使っているっぽいと思うので、まあ良いか。
せっかくDLL化しているんだったら、DLLだけ更新すれば良いのにね。

85 ◆rCEzuNnL0g:2008/08/27(水) 17:09:09
OllyDbg2安定してるなあ。

間違えて上げちまった・・・

86 ◆rCEzuNnL0g:2008/08/27(水) 17:22:11
MinGW - Wikipedia
http://ja.wikipedia.org/wiki/MinGW
---
後で試す。

87 ◆rCEzuNnL0g:2008/08/27(水) 17:22:28
>>86
MinGW | Minimalist GNU for Windows
http://www.mingw.org/

88 ◆rCEzuNnL0g:2008/08/27(水) 19:28:45
Sleipnir Part203
http://pc11.2ch.net/test/read.cgi/win/1218261313/888
----
Sleipnir test3
リリース候補版。

89 ◆rCEzuNnL0g:2008/08/27(水) 21:25:52
モジラ、Firefoxプラグイン「Ubiquity」を公開--手軽なマッシュアップが可能に:ニュース - CNET Japan
http://japan.cnet.com/news/media/story/0,2000056023,20379387,00.htm?ref=rss

90 ◆rCEzuNnL0g:2008/08/27(水) 21:26:29
Twitter / javascripter
http://twitter.com/javascripter

91 ◆rCEzuNnL0g:2008/08/28(木) 17:18:40
「Winnyウイルスの被害を疑似体験」、ディアイティがツールを公開:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20080828/313664/
外部JavaScriptの動的ロード - 0x集積蔵
http://d.hatena.ne.jp/os0x/20080827/1219815828
HTML5 の DOCTYPE 宣言って IE6 でも標準モードになるんですね - IT戦記
http://d.hatena.ne.jp/amachang/20080828/1219902321
動的ローディング雑感 - IT戦記
http://d.hatena.ne.jp/amachang/20080828/1219898838
【速報】IE8 Beta 2 で DOM オブジェクトに対して Getter / Setter を追加できるように! - IT戦記
http://d.hatena.ne.jp/amachang/20080828/1219888510

92 ◆rCEzuNnL0g:2008/08/29(金) 19:16:31
現在、FStringを研究中。
というか、コントラスタを見ればそのクラスの容量が分かるトラップwwwww
FWndは18bytesっぽい。

93 ◆rCEzuNnL0g:2008/08/29(金) 19:20:55
ん?
なんか一回実行するごとに10bytesメモリリークしていないか・・・?
俺はまだ、解析の基本が分かってません><

94 ◆rCEzuNnL0g:2008/08/29(金) 19:27:13
>>92
最初の四バイトは、virtual用かもしれないな。
アドレスが固定だから。
他の十四バイトは0で初期化されているようだ。

95 ◆rCEzuNnL0g:2008/08/29(金) 19:49:05
うわあああああああああああああああああああああああああああ
クリップボードが開きっぱなしになったああああああああああああああああああ
此れじゃあ、コピーも出来ないし、貼り付けも出来ないいいいいいいいいいい

96 ◆rCEzuNnL0g:2008/08/29(金) 19:50:21
どのウィンドウが悪い!
OllyDbg2.0を終了したら動いた!
やっぱりalpha版だけはあるなwwwwww
何がいけなかったんだろうか。

97 ◆rCEzuNnL0g:2008/08/29(金) 19:50:44
正確には、pre-alpha版だね!
早く新しいバージョンでないかな?

98 ◆rCEzuNnL0g:2008/08/29(金) 21:28:04
CPU Disasm
Address Hex dump Command Comments
41031210 /$ 56 PUSH ESI ; FenrirLib_fx.?GetText@FCmdUI@@UAGXPAPA_W@Z(guessed Arg1,Arg2)

99 ◆rCEzuNnL0g:2008/08/29(金) 21:30:03
此れを呼び出すと、アクションに渡された引数が得られるようだ。

100 ◆rCEzuNnL0g:2008/08/29(金) 21:31:55
どうでもいいけれども、なんだかクラック対策のために、DLLの出力がクラスになっている気がする。
それとも、此れは、namespaceなのかな?
(クラスだったら、呼び出しの前にecxにポインタ入れるからねえ。)

101 ◆rCEzuNnL0g:2008/08/29(金) 21:36:50
今、探しているのは、アクションを呼び出すルーチン。

102 ◆rCEzuNnL0g:2008/08/29(金) 21:38:27
48A018D0 |. FF15 3410A048 CALL DWORD PTR DS:[<&FenrirLib_fx.?FfxFree@@YGXPAX@Z>] ; \FenrirLib_fx.?FfxFree@@YGXPAX@Z
>>98で取得したら、
此れで返却しましょうね、っと。

103 ◆rCEzuNnL0g:2008/08/29(金) 21:39:35
CPU Disasm
Address Hex dump Command Comments
410127DB /$ FF7424 04 PUSH DWORD PTR SS:[ARG.1] ; FenrirLib_fx.?FfxAlloc@@YGPAXI@Z(guessed Arg1)
410127DF |. FF15 8C150041 CALL DWORD PTR DS:[<&MSVCR71.malloc>]
410127E5 |. 59 POP ECX
410127E6 \. C2 0400 RETN 4
410127E9 /$ FF7424 04 PUSH DWORD PTR SS:[ARG.1] ; FenrirLib_fx.?FfxFree@@YGXPAX@Z(guessed Arg1)
410127ED |. FF15 90150041 CALL DWORD PTR DS:[<&MSVCR71.free>]
410127F3 |. 59 POP ECX
410127F4 \. C2 0400 RETN 4

何という実装wwww

104 ◆rCEzuNnL0g:2008/08/29(金) 21:43:31
??1とかなっているのはコンストラクタっぽい(コントラスタと思っていた俺涙目www)

105 ◆rCEzuNnL0g:2008/08/29(金) 21:45:18
間違えた、デストラクタっぽい。

106 ◆rCEzuNnL0g:2008/08/29(金) 21:59:31
引数を持つアクションと、持たないアクションは別ルーチンで呼び出されるっぽい。

107 ◆rCEzuNnL0g:2008/08/29(金) 22:01:51
CPU Disasm
Address Hex dump Command Comments
4888FC40 /$ 83EC 18 SUB ESP,18 ; SagittariusDock_fx.4888FC40(guessed Arg1)
4888FC43 |. 57 PUSH EDI
4888FC44 |. 8B7C24 20 MOV EDI,DWORD PTR SS:[ARG.1]
4888FC48 |. 8A87 60010000 MOV AL,BYTE PTR DS:[EDI+160]
4888FC4E |. 84C0 TEST AL,AL
4888FC50 |. 0F85 49020000 JNE 4888FE9F
4888FC56 |. 8B4F 60 MOV ECX,DWORD PTR DS:[EDI+60]
4888FC59 |. 8B01 MOV EAX,DWORD PTR DS:[ECX]
4888FC5B |. 53 PUSH EBX
4888FC5C |. 55 PUSH EBP
4888FC5D |. 56 PUSH ESI
4888FC5E |. FF50 34 CALL DWORD PTR DS:[EAX+34]
4888FC61 |. 8B8F 5C010000 MOV ECX,DWORD PTR DS:[EDI+15C]
4888FC67 |. 8DAF 5C010000 LEA EBP,[EDI+15C]
4888FC6D |. 51 PUSH ECX ; /hWnd
4888FC6E |. 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX ; |
4888FC72 |. FF15 58148848 CALL DWORD PTR DS:[<&USER32.IsWindowVisible>] ; \USER32.IsWindowVisible
4888FC78 |. 85C0 TEST EAX,EAX
4888FC7A |. 0F84 95000000 JE 4888FD15
4888FC80 |. 8B55 00 MOV EDX,DWORD PTR SS:[EBP]
4888FC83 |. 8B1D 88148848 MOV EBX,DWORD PTR DS:[<&USER32.SendMessageW>]
4888FC89 |. 6A 00 PUSH 0 ; /lParam = 0
4888FC8B |. 6A 00 PUSH 0 ; |wParam = 0
4888FC8D |. 68 88010000 PUSH 188 ; |Msg = LB_GETCURSEL
4888FC92 |. 52 PUSH EDX ; |hWnd
4888FC93 |. FFD3 CALL EBX ; \USER32.SendMessageW
4888FC95 |. 8BF0 MOV ESI,EAX
4888FC97 |. 83FE FF CMP ESI,-1
4888FC9A |. 74 79 JE SHORT 4888FD15
4888FC9C |. A1 C8708948 MOV EAX,DWORD PTR DS:[488970C8]
4888FCA1 |. B9 C8708948 MOV ECX,OFFSET SagittariusDock_fx.488970C8
4888FCA6 |. FF50 0C CALL DWORD PTR DS:[EAX+0C]
4888FCA9 |. 56 PUSH ESI ; /Arg2
4888FCAA |. 83C0 10 ADD EAX,10 ; |
4888FCAD |. 55 PUSH EBP ; |Arg1
4888FCAE |. 8D7C24 24 LEA EDI,[ESP+24] ; |
4888FCB2 |. 894424 24 MOV DWORD PTR SS:[ESP+24],EAX ; |
4888FCB6 |. E8 35230000 CALL 48891FF0 ; \SagittariusDock_fx.48891FF0

108 ◆rCEzuNnL0g:2008/08/29(金) 22:02:11
4888FCBB |. 8B7424 1C MOV ESI,DWORD PTR SS:[ESP+1C]
4888FCBF |. 8B46 F4 MOV EAX,DWORD PTR DS:[ESI-0C]
4888FCC2 |. 85C0 TEST EAX,EAX
4888FCC4 |. 74 31 JE SHORT 4888FCF7
4888FCC6 |. 8B4D 00 MOV ECX,DWORD PTR SS:[EBP]
4888FCC9 |. 6A 00 PUSH 0 ; /SHOW = SW_HIDE
4888FCCB |. 51 PUSH ECX ; |hWnd
4888FCCC |. FF15 60148848 CALL DWORD PTR DS:[<&USER32.ShowWindow>] ; \USER32.ShowWindow
4888FCD2 |. 8B7C24 18 MOV EDI,DWORD PTR SS:[ESP+18]
4888FCD6 |. 56 PUSH ESI ; /Text
4888FCD7 |. 57 PUSH EDI ; |hWnd
4888FCD8 |. FF15 8C148848 CALL DWORD PTR DS:[<&USER32.SetWindowTextW>] ; \USER32.SetWindowTextW
4888FCDE |. 8B46 F4 MOV EAX,DWORD PTR DS:[ESI-0C]
4888FCE1 |. 50 PUSH EAX
4888FCE2 |. 50 PUSH EAX
4888FCE3 |. 68 B1000000 PUSH 0B1
4888FCE8 |. 57 PUSH EDI
4888FCE9 |. FFD3 CALL EBX
4888FCEB |. 6A 00 PUSH 0
4888FCED |. 6A 00 PUSH 0
4888FCEF |. 68 B7000000 PUSH 0B7
4888FCF4 |. 57 PUSH EDI
4888FCF5 |. FFD3 CALL EBX
4888FCF7 |> 83C6 F0 ADD ESI,-10
4888FCFA |. 8D56 0C LEA EDX,[ESI+0C]
4888FCFD |. 83C8 FF OR EAX,FFFFFFFF
4888FD00 |. F0:0FC102 LOCK XADD DWORD PTR DS:[EDX],EAX
4888FD04 |. 48 DEC EAX
4888FD05 |. 85C0 TEST EAX,EAX
4888FD07 |. 7F 08 JG SHORT 4888FD11
4888FD09 |. 8B0E MOV ECX,DWORD PTR DS:[ESI]
4888FD0B |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
4888FD0D |. 56 PUSH ESI
4888FD0E |. FF52 04 CALL DWORD PTR DS:[EDX+4]
4888FD11 |> 8B7C24 2C MOV EDI,DWORD PTR SS:[ESP+2C]
4888FD15 |> FF15 70148848 CALL DWORD PTR DS:[<&USER32.GetFocus>] ; [USER32.GetFocus
4888FD1B |. 394424 18 CMP DWORD PTR SS:[ESP+18],EAX
4888FD1F |. 75 0F JNE SHORT 4888FD30
4888FD21 |. FF15 70118848 CALL DWORD PTR DS:[<&FenrirLib_fx.?IsCtrlDown@FMisc@@SG_ ; [FenrirLib_fx.?IsCtrlDown@FMisc@@SG_NXZ
4888FD27 |. 84C0 TEST AL,AL

109 ◆rCEzuNnL0g:2008/08/29(金) 22:02:25
4888FD29 |. C64424 13 01 MOV BYTE PTR SS:[ESP+13],1
4888FD2E |. 75 05 JNE SHORT 4888FD35
4888FD30 |> C64424 13 00 MOV BYTE PTR SS:[ESP+13],0
4888FD35 |> 8B4F 60 MOV ECX,DWORD PTR DS:[EDI+60]
4888FD38 |. 8B01 MOV EAX,DWORD PTR DS:[ECX]
4888FD3A |. 8D5424 14 LEA EDX,[ESP+14]
4888FD3E |. 52 PUSH EDX
4888FD3F |. FF50 40 CALL DWORD PTR DS:[EAX+40]
4888FD42 |. 8B4424 14 MOV EAX,DWORD PTR SS:[LOCAL.5]
4888FD46 |. 8B48 08 MOV ECX,DWORD PTR DS:[EAX+8]
4888FD49 |. 85C9 TEST ECX,ECX
4888FD4B |. 0F84 35010000 JE 4888FE86
4888FD51 |. BF 0C000000 MOV EDI,0C
4888FD56 |. E8 D543FFFF CALL 48884130 ; [SagittariusDock_fx.48884130
4888FD5B |. 8BF0 MOV ESI,EAX
4888FD5D |. 8936 MOV DWORD PTR DS:[ESI],ESI
4888FD5F |. 8976 04 MOV DWORD PTR DS:[ESI+4],ESI
4888FD62 |. 8B4C24 14 MOV ECX,DWORD PTR SS:[LOCAL.5]
4888FD66 |. 8B41 0C MOV EAX,DWORD PTR DS:[ECX+0C]
4888FD69 |. 8D7C24 1C LEA EDI,[LOCAL.3]
4888FD6D |. 897424 24 MOV DWORD PTR SS:[LOCAL.1],ESI
4888FD71 |. E8 AA52FFFF CALL 48885020 ; [SagittariusDock_fx.48885020
4888FD76 |. 8B5C24 2C MOV EBX,DWORD PTR SS:[ARG.1]
4888FD7A |. 8BD7 MOV EDX,EDI
4888FD7C |. 52 PUSH EDX ; /Arg2
4888FD7D |. 8D4424 28 LEA EAX,[LOCAL.1] ; |
4888FD81 |. 50 PUSH EAX ; |Arg1
4888FD82 |. 8BC3 MOV EAX,EBX ; |
4888FD84 |. E8 F7DAFFFF CALL 4888D880 ; \SagittariusDock_fx.4888D880
4888FD89 |. 8B4424 1C MOV EAX,DWORD PTR SS:[LOCAL.3]
4888FD8D |. 83C0 F0 ADD EAX,-10
4888FD90 |. 8D48 0C LEA ECX,[EAX+0C]
4888FD93 |. 83CA FF OR EDX,FFFFFFFF
4888FD96 |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
4888FD9A |. 4A DEC EDX
4888FD9B |. 85D2 TEST EDX,EDX
4888FD9D |. 7F 08 JG SHORT 4888FDA7
4888FD9F |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
4888FDA1 |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
4888FDA3 |. 50 PUSH EAX

110 ◆rCEzuNnL0g:2008/08/29(金) 22:02:45
4888FDA4 |. FF52 04 CALL DWORD PTR DS:[EDX+4]
4888FDA7 |> 8B16 MOV EDX,DWORD PTR DS:[ESI]
4888FDA9 |. 8BC2 MOV EAX,EDX
4888FDAB |. 33C9 XOR ECX,ECX
4888FDAD |. 3BC6 CMP EAX,ESI
4888FDAF |. 74 38 JE SHORT 4888FDE9
4888FDB1 |> 8B00 /MOV EAX,DWORD PTR DS:[EAX]
4888FDB3 |. 41 |INC ECX
4888FDB4 |. 3BC6 |CMP EAX,ESI
4888FDB6 |.^ 75 F9 \JNE SHORT 4888FDB1
4888FDB8 |. 83F9 01 CMP ECX,1
4888FDBB |. 75 2C JNE SHORT 4888FDE9
4888FDBD |. 8B42 08 MOV EAX,DWORD PTR DS:[EDX+8]
4888FDC0 |. 8B78 0C MOV EDI,DWORD PTR DS:[EAX+0C]
4888FDC3 |. 57 PUSH EDI ; /Arg1
4888FDC4 |. 8D4C24 18 LEA ECX,[LOCAL.5] ; |
4888FDC8 |. FF15 4C118848 CALL DWORD PTR DS:[<&FenrirLib_fx.??8FString@@QAE_NPB_W@ ; \FenrirLib_fx.??8FString@@QAE_NPB_W@Z
4888FDCE |. 84C0 TEST AL,AL
4888FDD0 |. 75 17 JNE SHORT 4888FDE9
4888FDD2 |. 8B4C24 18 MOV ECX,DWORD PTR SS:[LOCAL.4]
4888FDD6 |. 57 PUSH EDI ; /Text
4888FDD7 |. 51 PUSH ECX ; |hWnd
4888FDD8 |. FF15 8C148848 CALL DWORD PTR DS:[<&USER32.SetWindowTextW>] ; \USER32.SetWindowTextW
4888FDDE |. 57 PUSH EDI ; /Arg1
4888FDDF |. 8D4C24 18 LEA ECX,[LOCAL.5] ; |
4888FDE3 |. FF15 38108848 CALL DWORD PTR DS:[<&FenrirLib_fx.??4FString@@QAEAAV0@PB ; \FenrirLib_fx.??4FString@@QAEAAV0@PB_W@Z
4888FDE9 |> 8D5424 14 LEA EDX,[LOCAL.5]
4888FDED |. 52 PUSH EDX ; /Arg2
4888FDEE |. 8D4424 24 LEA EAX,[LOCAL.2] ; |
4888FDF2 |. 50 PUSH EAX ; |Arg1
4888FDF3 |. E8 E8D7FFFF CALL 4888D5E0 ; \SagittariusDock_fx.4888D5E0
4888FDF8 |. 8D4C24 14 LEA ECX,[LOCAL.5]
4888FDFC |. 51 PUSH ECX ; /Arg1
4888FDFD |. 8BC3 MOV EAX,EBX ; |
4888FDFF |. E8 AC160000 CALL 488914B0 ; \SagittariusDock_fx.488914B0
4888FE04 |. 8B55 00 MOV EDX,DWORD PTR SS:[EBP]
4888FE07 |. 6A 00 PUSH 0 ; /SHOW = SW_HIDE
4888FE09 |. 52 PUSH EDX ; |hWnd
4888FE0A |. FF15 60148848 CALL DWORD PTR DS:[<&USER32.ShowWindow>] ; \USER32.ShowWindow
4888FE10 |. 8B4424 20 MOV EAX,DWORD PTR SS:[LOCAL.2]

111 ◆rCEzuNnL0g:2008/08/29(金) 22:02:57
4888FE14 |. 8B48 0C MOV ECX,DWORD PTR DS:[EAX+0C]
4888FE17 |. 8B5424 14 MOV EDX,DWORD PTR SS:[LOCAL.5]
4888FE1B |. 51 PUSH ECX ; /Arg2
4888FE1C |. 53 PUSH EBX ; |Arg1
4888FE1D |. 8B5A 0C MOV EBX,DWORD PTR DS:[EDX+0C] ; |
4888FE20 |. 33C0 XOR EAX,EAX ; |
4888FE22 |. E8 991C0000 CALL 48891AC0 ; \SagittariusDock_fx.48891AC0
4888FE27 |. 8A4424 13 MOV AL,BYTE PTR SS:[LOCAL.6+3]
4888FE2B |. 84C0 TEST AL,AL
4888FE2D |. 74 0B JE SHORT 4888FE3A
4888FE2F |. 8B4424 18 MOV EAX,DWORD PTR SS:[LOCAL.4]
4888FE33 |. 50 PUSH EAX ; /hWnd
4888FE34 |. FF15 D0138848 CALL DWORD PTR DS:[<&USER32.SetFocus>] ; \USER32.SetFocus
4888FE3A |> 8D4C24 20 LEA ECX,[LOCAL.2]
4888FE3E |. FF15 3C108848 CALL DWORD PTR DS:[<&FenrirLib_fx.??1FString@@QAE@XZ>] ; [FenrirLib_fx.??1FString@@QAE@XZ
4888FE44 |. 8D4424 24 LEA EAX,[LOCAL.1]
4888FE48 |. E8 F345FFFF CALL 48884440 ; [SagittariusDock_fx.48884440
4888FE4D |. 68 F4708948 PUSH OFFSET SagittariusDock_fx.488970F4 ; /Arg1 = SagittariusDock_fx.488970F4
4888FE52 |. E8 4943FFFF CALL 488841A0 ; \SagittariusDock_fx.488841A0
4888FE57 |. 8B0D FC708948 MOV ECX,DWORD PTR DS:[488970FC]
4888FE5D |. 890E MOV DWORD PTR DS:[ESI],ECX
4888FE5F |. 8935 FC708948 MOV DWORD PTR DS:[488970FC],ESI
4888FE65 |. 83C4 04 ADD ESP,4
4888FE68 |. 8D4C24 14 LEA ECX,[LOCAL.5]
4888FE6C |. C705 F4708948 MOV DWORD PTR DS:[488970F4],0
4888FE76 |. FF15 3C108848 CALL DWORD PTR DS:[<&FenrirLib_fx.??1FString@@QAE@XZ>] ; [FenrirLib_fx.??1FString@@QAE@XZ
4888FE7C |. 5E POP ESI
4888FE7D |. 5D POP EBP
4888FE7E |. 5B POP EBX
4888FE7F |. 5F POP EDI
4888FE80 |. 83C4 18 ADD ESP,18
4888FE83 |. C2 0400 RETN 4
4888FE86 |> 8B55 00 MOV EDX,DWORD PTR SS:[EBP]
4888FE89 |. 6A 00 PUSH 0 ; /SHOW = SW_HIDE
4888FE8B |. 52 PUSH EDX ; |hWnd
4888FE8C |. FF15 60148848 CALL DWORD PTR DS:[<&USER32.ShowWindow>] ; \USER32.ShowWindow
4888FE92 |. 8D4C24 14 LEA ECX,[LOCAL.5]
4888FE96 |. FF15 3C108848 CALL DWORD PTR DS:[<&FenrirLib_fx.??1FString@@QAE@XZ>] ; [FenrirLib_fx.??1FString@@QAE@XZ
4888FE9C |. 5E POP ESI
4888FE9D |. 5D POP EBP
4888FE9E |. 5B POP EBX
4888FE9F |> 5F POP EDI
4888FEA0 |. 83C4 18 ADD ESP,18
4888FEA3 \. C2 0400 RETN 4

112 ◆rCEzuNnL0g:2008/08/29(金) 22:04:19
http://jbbs.livedoor.jp/bbs/read.cgi/computer/38153/1218378495/107-111n
サジタリウスによるアクションの呼び出し?

113 ◆rCEzuNnL0g:2008/08/29(金) 22:08:45
ぐわああああああああああああああ
もう、逆アセンブリ読むの疲れた。
明日のために寝ます(`・ω・´) シャキーン

114 ◆rCEzuNnL0g:2008/08/29(金) 22:21:05
CPU Disasm
Address Hex dump Command Comments
0046854D |. 51 PUSH ECX
0046854E |. 50 PUSH EAX
0046854F |. FF52 30 CALL DWORD PTR DS:[EDX+30]
00468552 |. 8B47 18 MOV EAX,DWORD PTR DS:[EDI+18]
00468555 |. 8B0428 MOV EAX,DWORD PTR DS:[EBP+EAX]
00468558 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
0046855A |. 50 PUSH EAX
0046855B |. FF51 1C CALL DWORD PTR DS:[ECX+1C] ←ここでアクション用の関数呼び出し(引数あり)
0046855E |. 8B57 18 MOV EDX,DWORD PTR DS:[EDI+18]
00468561 |. 8B042A MOV EAX,DWORD PTR DS:[EBP+EDX]
00468564 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00468566 |. 68 5CDD4100 PUSH Sleipnir.0041DD5C
0046856B |. 50 PUSH EAX
0046856C |. FF51 30 CALL DWORD PTR DS:[ECX+30]
0046856F |. EB 0C JMP SHORT 0046857D
00468571 |> 8B57 18 MOV EDX,DWORD PTR DS:[EDI+18] ←ここでアクション用の関数呼び出し(引数なし)
00468574 |. 8B042A MOV EAX,DWORD PTR DS:[EBP+EDX]
00468577 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00468579 |. 50 PUSH EAX
0046857A |. FF51 1C CALL DWORD PTR DS:[ECX+1C]
0046857D |> 897424 34 MOV DWORD PTR SS:[ESP+34],ESI
00468581 |. FF15 74104000 CALL DWORD PTR DS:[<&FenrirLib_fx.?FfxGetClient@@YGPAVFI

115 ◆rCEzuNnL0g:2008/08/29(金) 22:21:57
>>114は間違え
CPU Disasm
Address Hex dump Command Comments
0046854D |. 51 PUSH ECX
0046854E |. 50 PUSH EAX
0046854F |. FF52 30 CALL DWORD PTR DS:[EDX+30]
00468552 |. 8B47 18 MOV EAX,DWORD PTR DS:[EDI+18]
00468555 |. 8B0428 MOV EAX,DWORD PTR DS:[EBP+EAX]
00468558 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
0046855A |. 50 PUSH EAX
0046855B |. FF51 1C CALL DWORD PTR DS:[ECX+1C] ←ここでアクション用の関数呼び出し(引数あり)
0046855E |. 8B57 18 MOV EDX,DWORD PTR DS:[EDI+18]
00468561 |. 8B042A MOV EAX,DWORD PTR DS:[EBP+EDX]
00468564 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00468566 |. 68 5CDD4100 PUSH Sleipnir.0041DD5C
0046856B |. 50 PUSH EAX
0046856C |. FF51 30 CALL DWORD PTR DS:[ECX+30]
0046856F |. EB 0C JMP SHORT 0046857D
00468571 |> 8B57 18 MOV EDX,DWORD PTR DS:[EDI+18]
00468574 |. 8B042A MOV EAX,DWORD PTR DS:[EBP+EDX]
00468577 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00468579 |. 50 PUSH EAX
0046857A |. FF51 1C CALL DWORD PTR DS:[ECX+1C] ←ここでアクション用の関数呼び出し(引数なし)
0046857D |> 897424 34 MOV DWORD PTR SS:[ESP+34],ESI
00468581 |. FF15 74104000 CALL DWORD PTR DS:[<&FenrirLib_fx.?FfxGetClient@@YGPAVFI

116 ◆rCEzuNnL0g:2008/08/29(金) 22:27:16
ECXが0の時が引数なしみたい。
さて、何処でECXが来るのか。

117 ◆rCEzuNnL0g:2008/08/29(金) 22:38:51
どうやら
Action(Param)
のActionとParamを切り分ける関数があるらしい。
で、その関数へポインタへのポインタを渡して、そこにAction名とParamへのポインタを代入して貰う。
そのときに、Paramが存在しないならば、ParamへのポインタはNULLになる。
よってECXはその値を持ってくるので(ry
ということである。
さて、またアセンブリを読んでしまった。

118 ◆rCEzuNnL0g:2008/08/29(金) 22:44:11
今度こそ本当に寝よう。
(`・ω・´) シャキーン


新着レスの表示


名前: E-mail(省略可)

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

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

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

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