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

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

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

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
今度こそ本当に寝よう。
(`・ω・´) シャキーン

119 ◆rCEzuNnL0g:2008/08/30(土) 15:37:42
mapと__noSuchMethod__(失敗) - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20080830/1220071227
-----
__noSuchMethod__って凄いなあ。ソースに直接書いたものを文字列をして得られる。

120 ◆rCEzuNnL0g:2008/08/30(土) 16:31:12
??_7系はヴァーチャルポインタですかねえ。
取り敢えず、自分でdllをエクスポートしてみる。

121 ◆rCEzuNnL0g:2008/08/30(土) 17:03:26
main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: char const * __thiscall CSuper::GetStr(void)" (__imp_?GetStr@CSuper@@QAEPBDXZ) が関数 _main で参照されました。
main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: int __thiscall CSuper::GetLength(void)" (__imp_?GetLength@CSuper@@QAEHXZ) が関数 _main で参照されました。

122 ◆rCEzuNnL0g:2008/08/30(土) 17:05:29
main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: char * __thiscall CSuper::GetStr(void)" (__imp_?GetStr@CSuper@@QAEPADXZ) が関数 _main で参照されました。
main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: int __thiscall CSuper::GetLength(char *)" (__imp_?GetLength@CSuper@@QAEHPAD@Z) が関数 _main で参照されました。

123 ◆rCEzuNnL0g:2008/08/30(土) 17:08:41
const char *CSuper::GetStr()
-> __imp_?GetStr@CSuper@@QAEPBDXZ
char *CSuper::GetStr()
-> __imp_?GetStr@CSuper@@QAEPADXZ
-----
int CSuper::GetLength()
-> __imp_?GetLength@CSuper@@QAEHXZ
int CSuper::GetLength()
-> __imp_?GetLength@CSuper@@QAEHPAD@Z

124 ◆rCEzuNnL0g:2008/08/30(土) 17:20:06
__imp_?Get@CSuper@@QAEXXZ <- void void
__imp_?Get@CSuper@@QAEHXZ <- int void
__imp_?Get@CSuper@@QAEFXZ <- short void
__imp_?Get@CSuper@@QAEJXZ <- long void
__imp_?Get@CSuper@@QAEDXZ <- char void
__imp_?Get@CSuper@@QAEMXZ <- float void
__imp_?Get@CSuper@@QAENXZ <- double void
__imp_?Get@CSuper@@QAEOXZ <- long double void
__imp_?Get@CSuper@@QAEPAXXZ <- void* void
__imp_?Get@CSuper@@QAEPAHXZ <- int* void
__imp_?Get@CSuper@@QAEPADXZ <- char* void
__imp_?Get@CSuper@@QAEPAMXZ <- float* void
__imp_?Get@CSuper@@QAEPANXZ <- double* void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* void

返却値については、規則性が見えるなあ。

125 ◆rCEzuNnL0g:2008/08/30(土) 17:24:15
__imp_?Get@CSuper@@QAEIXZ <- unsigned int void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char void

此れやってて気づいたんだけれども、unsignedは実数系には付けれない。
此れ基本事項だよねwww

126 ◆rCEzuNnL0g:2008/08/30(土) 17:32:25
__imp_?Get@CSuper@@QAEXXZ <- void void
__imp_?Get@CSuper@@QAEHXZ <- int void
__imp_?Get@CSuper@@QAEFXZ <- short void
__imp_?Get@CSuper@@QAEJXZ <- long void
__imp_?Get@CSuper@@QAEDXZ <- char void
__imp_?Get@CSuper@@QAEMXZ <- float void
__imp_?Get@CSuper@@QAENXZ <- double void
__imp_?Get@CSuper@@QAEOXZ <- long double void
__imp_?Get@CSuper@@QAEPAXXZ <- void* void
__imp_?Get@CSuper@@QAEPAHXZ <- int* void
__imp_?Get@CSuper@@QAEPADXZ <- char* void
__imp_?Get@CSuper@@QAEPAMXZ <- float* void
__imp_?Get@CSuper@@QAEPANXZ <- double* void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* void
__imp_?Get@CSuper@@QAEAAHXZ <- int& void
__imp_?Get@CSuper@@QAEAADXZ <- char& void
__imp_?Get@CSuper@@QAEAAMXZ <- float& void
__imp_?Get@CSuper@@QAEAANXZ <- double& void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& void

127 ◆rCEzuNnL0g:2008/08/30(土) 17:37:37
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEHXZ <- int | void
__imp_?Get@CSuper@@QAEFXZ <- short | void
__imp_?Get@CSuper@@QAEJXZ <- long | void
__imp_?Get@CSuper@@QAEDXZ <- char | void
__imp_?Get@CSuper@@QAEMXZ <- float | void
__imp_?Get@CSuper@@QAENXZ <- double | void
__imp_?Get@CSuper@@QAEOXZ <- long double | void
__imp_?Get@CSuper@@QAEPAXXZ <- void* | void
__imp_?Get@CSuper@@QAEPAHXZ <- int* | void
__imp_?Get@CSuper@@QAEPADXZ <- char* | void
__imp_?Get@CSuper@@QAEPAMXZ <- float* | void
__imp_?Get@CSuper@@QAEPANXZ <- double* | void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* | void
__imp_?Get@CSuper@@QAEAAHXZ <- int& | void
__imp_?Get@CSuper@@QAEAADXZ <- char& | void
__imp_?Get@CSuper@@QAEAAMXZ <- float& | void
__imp_?Get@CSuper@@QAEAANXZ <- double& | void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& | void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int | void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char | void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* | void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* | void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& | void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& | void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper | void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* | void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& | void

__imp_?Get@CSuper@@QAE?BHXZ <- const int | void
__imp_?Get@CSuper@@QAE?BDXZ <- const char | void
__imp_?Get@CSuper@@QAEPBHXZ <- const int* | void
__imp_?Get@CSuper@@QAEPBDXZ <- const char* | void
__imp_?Get@CSuper@@QAEQAHXZ <- int* const | void
__imp_?Get@CSuper@@QAEQADXZ <- char* const | void

128 ◆rCEzuNnL0g:2008/08/30(土) 17:40:46
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEHXZ <- int | void
__imp_?Get@CSuper@@QAEFXZ <- short | void
__imp_?Get@CSuper@@QAEJXZ <- long | void
__imp_?Get@CSuper@@QAEDXZ <- char | void
__imp_?Get@CSuper@@QAEMXZ <- float | void
__imp_?Get@CSuper@@QAENXZ <- double | void
__imp_?Get@CSuper@@QAEOXZ <- long double | void
__imp_?Get@CSuper@@QAEPAXXZ <- void* | void
__imp_?Get@CSuper@@QAEPAHXZ <- int* | void
__imp_?Get@CSuper@@QAEPADXZ <- char* | void
__imp_?Get@CSuper@@QAEPAMXZ <- float* | void
__imp_?Get@CSuper@@QAEPANXZ <- double* | void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* | void
__imp_?Get@CSuper@@QAEAAHXZ <- int& | void
__imp_?Get@CSuper@@QAEAADXZ <- char& | void
__imp_?Get@CSuper@@QAEAAMXZ <- float& | void
__imp_?Get@CSuper@@QAEAANXZ <- double& | void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& | void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int | void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char | void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* | void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* | void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& | void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& | void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper | void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* | void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& | void

__imp_?Get@CSuper@@QAE?BHXZ <- const int | void
__imp_?Get@CSuper@@QAE?BDXZ <- const char | void
__imp_?Get@CSuper@@QAEPBHXZ <- const int* | void
__imp_?Get@CSuper@@QAEPBDXZ <- const char* | void
__imp_?Get@CSuper@@QAEABHXZ <- const int& | void
__imp_?Get@CSuper@@QAEABDXZ <- const char& | void
__imp_?Get@CSuper@@QAEQAHXZ <- int* const | void
__imp_?Get@CSuper@@QAEQADXZ <- char* const | void
__imp_?Get@CSuper@@QAEQBHXZ <- const int* const | void
__imp_?Get@CSuper@@QAEQBDXZ <- const char* cont | void

129 ◆rCEzuNnL0g:2008/08/30(土) 17:47:16
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEHXZ <- int | void
__imp_?Get@CSuper@@QAEFXZ <- short | void
__imp_?Get@CSuper@@QAEJXZ <- long | void
__imp_?Get@CSuper@@QAEDXZ <- char | void
__imp_?Get@CSuper@@QAEMXZ <- float | void
__imp_?Get@CSuper@@QAENXZ <- double | void
__imp_?Get@CSuper@@QAEOXZ <- long double | void
__imp_?Get@CSuper@@QAEPAXXZ <- void* | void
__imp_?Get@CSuper@@QAEPAHXZ <- int* | void
__imp_?Get@CSuper@@QAEPADXZ <- char* | void
__imp_?Get@CSuper@@QAEPAMXZ <- float* | void
__imp_?Get@CSuper@@QAEPANXZ <- double* | void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* | void
__imp_?Get@CSuper@@QAEAAHXZ <- int& | void
__imp_?Get@CSuper@@QAEAADXZ <- char& | void
__imp_?Get@CSuper@@QAEAAMXZ <- float& | void
__imp_?Get@CSuper@@QAEAANXZ <- double& | void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& | void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int | void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char | void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* | void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* | void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& | void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& | void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper | void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* | void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& | void

__imp_?Get@CSuper@@QAE?BHXZ <- const int | void
__imp_?Get@CSuper@@QAE?BDXZ <- const char | void
__imp_?Get@CSuper@@QAEPBHXZ <- const int* | void
__imp_?Get@CSuper@@QAEPBDXZ <- const char* | void
__imp_?Get@CSuper@@QAEABHXZ <- const int& | void
__imp_?Get@CSuper@@QAEABDXZ <- const char& | void
__imp_?Get@CSuper@@QAEQAHXZ <- int* const | void
__imp_?Get@CSuper@@QAEQADXZ <- char* const | void
__imp_?Get@CSuper@@QAEQBHXZ <- const int* const | void
__imp_?Get@CSuper@@QAEQBDXZ <- const char* cont | void

__imp_?Get@CSuper@@QAEPAPADXZ <- char** | void
__imp_?Get@CSuper@@QAEPAPBDXZ <- const char** | void
__imp_?Get@CSuper@@QAEPBQADXZ <- char* const* | void
__imp_?Get@CSuper@@QAEQAPADXZ <- char** const | void
__imp_?Get@CSuper@@QAEPBQBDXZ <- const char* const* | void
__imp_?Get@CSuper@@QAEQAPBDXZ <- const char** const | void
__imp_?Get@CSuper@@QAEQBQADXZ <- char* const* const | void
__imp_?Get@CSuper@@QAEQBQBDXZ <- const char* const* const | void

130 ◆rCEzuNnL0g:2008/08/30(土) 17:53:12
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEHXZ <- int | void
__imp_?Get@CSuper@@QAEFXZ <- short | void
__imp_?Get@CSuper@@QAEJXZ <- long | void
__imp_?Get@CSuper@@QAEDXZ <- char | void
__imp_?Get@CSuper@@QAEMXZ <- float | void
__imp_?Get@CSuper@@QAENXZ <- double | void
__imp_?Get@CSuper@@QAEOXZ <- long double | void
__imp_?Get@CSuper@@QAEPAXXZ <- void* | void
__imp_?Get@CSuper@@QAEPAHXZ <- int* | void
__imp_?Get@CSuper@@QAEPADXZ <- char* | void
__imp_?Get@CSuper@@QAEPAMXZ <- float* | void
__imp_?Get@CSuper@@QAEPANXZ <- double* | void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* | void
__imp_?Get@CSuper@@QAEAAHXZ <- int& | void
__imp_?Get@CSuper@@QAEAADXZ <- char& | void
__imp_?Get@CSuper@@QAEAAMXZ <- float& | void
__imp_?Get@CSuper@@QAEAANXZ <- double& | void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& | void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int | void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char | void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* | void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* | void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& | void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& | void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper | void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* | void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& | void

__imp_?Get@CSuper@@QAE?BHXZ <- const int | void
__imp_?Get@CSuper@@QAE?BDXZ <- const char | void
__imp_?Get@CSuper@@QAEPBHXZ <- const int* | void
__imp_?Get@CSuper@@QAEPBDXZ <- const char* | void
__imp_?Get@CSuper@@QAEABHXZ <- const int& | void
__imp_?Get@CSuper@@QAEABDXZ <- const char& | void
__imp_?Get@CSuper@@QAEQAHXZ <- int* const | void
__imp_?Get@CSuper@@QAEQADXZ <- char* const | void
__imp_?Get@CSuper@@QAEQBHXZ <- const int* const | void
__imp_?Get@CSuper@@QAEQBDXZ <- const char* cont | void

__imp_?Get@CSuper@@QAEPAPADXZ <- char** | void
__imp_?Get@CSuper@@QAEPAPBDXZ <- const char** | void
__imp_?Get@CSuper@@QAEPBQADXZ <- char* const* | void
__imp_?Get@CSuper@@QAEQAPADXZ <- char** const | void
__imp_?Get@CSuper@@QAEPBQBDXZ <- const char* const* | void
__imp_?Get@CSuper@@QAEQAPBDXZ <- const char** const | void
__imp_?Get@CSuper@@QAEQBQADXZ <- char* const* const | void
__imp_?Get@CSuper@@QAEQBQBDXZ <- const char* const* const | void

__imp_?Get@CSuper@@QAEPAPAPADXZ <- char*** | void
__imp_?Get@CSuper@@QAEPAPAPAPADXZ <- char**** | void
__imp_?Get@CSuper@@QAEPAPAPAPAPADXZ <- char***** | void

__imp_?Get@CSuper@@QAEAAPADXZ <- char*& | void
__imp_?Get@CSuper@@QAEAAPBDXZ <- const char*& | void
__imp_?Get@CSuper@@QAEABQADXZ <- char* const& | void

__imp_?Get@CSuper@@QAEAAPAPADXZ <- char**& | void

131 ◆rCEzuNnL0g:2008/08/30(土) 17:55:01
後で詳しく調べる。
-----------------------------------------
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEHXZ <- int | void
__imp_?Get@CSuper@@QAEFXZ <- short | void
__imp_?Get@CSuper@@QAEJXZ <- long | void
__imp_?Get@CSuper@@QAEDXZ <- char | void
__imp_?Get@CSuper@@QAEMXZ <- float | void
__imp_?Get@CSuper@@QAENXZ <- double | void
__imp_?Get@CSuper@@QAEOXZ <- long double | void
__imp_?Get@CSuper@@QAEPAXXZ <- void* | void
__imp_?Get@CSuper@@QAEPAHXZ <- int* | void
__imp_?Get@CSuper@@QAEPADXZ <- char* | void
__imp_?Get@CSuper@@QAEPAMXZ <- float* | void
__imp_?Get@CSuper@@QAEPANXZ <- double* | void
__imp_?Get@CSuper@@QAEPAOXZ <- long double* | void
__imp_?Get@CSuper@@QAEAAHXZ <- int& | void
__imp_?Get@CSuper@@QAEAADXZ <- char& | void
__imp_?Get@CSuper@@QAEAAMXZ <- float& | void
__imp_?Get@CSuper@@QAEAANXZ <- double& | void
__imp_?Get@CSuper@@QAEAAOXZ <- long double& | void

__imp_?Get@CSuper@@QAEIXZ <- unsigned int | void
__imp_?Get@CSuper@@QAEEXZ <- unsigned char | void
__imp_?Get@CSuper@@QAEPAIXZ <- unsigned int* | void
__imp_?Get@CSuper@@QAEPAEXZ <- unsigned char* | void
__imp_?Get@CSuper@@QAEAAIXZ <- unsigned int& | void
__imp_?Get@CSuper@@QAEAAEXZ <- unsigned char& | void

__imp_?Get@CSuper@@QAE?AV1@XZ <- CSuper | void
__imp_?Get@CSuper@@QAEPAV1@XZ <- CSuper* | void
__imp_?Get@CSuper@@QAEAAV1@XZ <- CSuper& | void

__imp_?Get@CSuper@@QAE?BHXZ <- const int | void
__imp_?Get@CSuper@@QAE?BDXZ <- const char | void
__imp_?Get@CSuper@@QAEPBHXZ <- const int* | void
__imp_?Get@CSuper@@QAEPBDXZ <- const char* | void
__imp_?Get@CSuper@@QAEABHXZ <- const int& | void
__imp_?Get@CSuper@@QAEABDXZ <- const char& | void
__imp_?Get@CSuper@@QAEQAHXZ <- int* const | void
__imp_?Get@CSuper@@QAEQADXZ <- char* const | void
__imp_?Get@CSuper@@QAEQBHXZ <- const int* const | void
__imp_?Get@CSuper@@QAEQBDXZ <- const char* cont | void

__imp_?Get@CSuper@@QAEPAPADXZ <- char** | void
__imp_?Get@CSuper@@QAEPAPBDXZ <- const char** | void
__imp_?Get@CSuper@@QAEPBQADXZ <- char* const* | void
__imp_?Get@CSuper@@QAEQAPADXZ <- char** const | void
__imp_?Get@CSuper@@QAEPBQBDXZ <- const char* const* | void
__imp_?Get@CSuper@@QAEQAPBDXZ <- const char** const | void
__imp_?Get@CSuper@@QAEQBQADXZ <- char* const* const | void
__imp_?Get@CSuper@@QAEQBQBDXZ <- const char* const* const | void

__imp_?Get@CSuper@@QAEPAPAPADXZ <- char*** | void
__imp_?Get@CSuper@@QAEPAPAPAPADXZ <- char**** | void
__imp_?Get@CSuper@@QAEPAPAPAPAPADXZ <- char***** | void

__imp_?Get@CSuper@@QAEAAPADXZ <- char*& | void
__imp_?Get@CSuper@@QAEAAPBDXZ <- const char*& | void
__imp_?Get@CSuper@@QAEABQADXZ <- char* const& | void

__imp_?Get@CSuper@@QAEAAPAPADXZ <- char**& | void

132 ◆rCEzuNnL0g:2008/08/30(土) 18:07:58
void | const int == void | int

133 ◆rCEzuNnL0g:2008/08/30(土) 18:12:53
後で詳しく調べる。
-----------------------------------------
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEXH@Z <- void | int
__imp_?Get@CSuper@@QAEXF@Z <- void | short
__imp_?Get@CSuper@@QAEXJ@Z <- void | long
__imp_?Get@CSuper@@QAEXD@Z <- void | char
__imp_?Get@CSuper@@QAEXM@Z <- void | float
__imp_?Get@CSuper@@QAEXN@Z <- void | double
__imp_?Get@CSuper@@QAEXO@Z <- void | long double

__imp_?Get@CSuper@@QAEXI@Z <- void | unsigned int
__imp_?Get@CSuper@@QAEXE@Z <- void | unsigned char

__imp_?Get@CSuper@@QAEXPAX@Z <- void | void*
__imp_?Get@CSuper@@QAEXPAH@Z <- void | int*
__imp_?Get@CSuper@@QAEXPAD@Z <- void | char*
__imp_?Get@CSuper@@QAEXPAM@Z <- void | float*
__imp_?Get@CSuper@@QAEXPAN@Z <- void | double*
__imp_?Get@CSuper@@QAEXPAO@Z <- void | long double*

__imp_?Get@CSuper@@QAEXAAH@Z <- void | int&
__imp_?Get@CSuper@@QAEXAAD@Z <- void | char&

__imp_?Get@CSuper@@QAEXPBD@Z <- void | const char*
__imp_?Get@CSuper@@QAEXQAD@Z <- void | char* const
__imp_?Get@CSuper@@QAEXQBD@Z <- void | const char* const

__imp_?Get@CSuper@@QAEXPAPAD@Z <- void | char**

134 ◆rCEzuNnL0g:2008/08/30(土) 19:12:06
その他、適当
-----------------------------------------
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEP6AXXZXZ <- void (__cdecl *)() | void
__imp_?Get@CSuper@@QAEP6GXXZXZ <- void (__stdcall *)() | void
__imp_?Get@CSuper@@QAEP6IXXZXZ <- void (__fastcall *)() | void
__imp_?Get@CSuper@@QAEP6AHXZXZ <- int (__cdecl *)() | void
__imp_?Get@CSuper@@QAEP6ADXZXZ <- char (__cdecl *)() | void
__imp_?Get@CSuper@@QAEP6APAXXZXZ <- void* (__cdecl *)() | void
__imp_?Get@CSuper@@QAEP6APADXZXZ <- char* (__cdecl *)() | void

__imp_?Get@CSuper@@QAEP6AXH@ZXZ <- void (__cdecl *)(int) | void
__imp_?Get@CSuper@@QAEP6AXD@ZXZ <- void (__cdecl *)(char) | void
__imp_?Get@CSuper@@QAEP6AXPAD@ZXZ <- void (__cdecl *)(char*) | void

__imp_?Get@CSuper@@QAEP6AXPAX@Z0@Z <- void (__cedcl *)(void *) | void*
__imp_?Get@CSuper@@QAEP6AXPAX@ZH@Z <- void (__cedcl *)(void *) | int

__imp_?Get@CSuper@@QAEPAY00DXZ <- char (*)[1] | void
__imp_?Get@CSuper@@QAEPAY01DXZ <- char (*)[2] | void
__imp_?Get@CSuper@@QAEPAY09DXZ <- char (*)[10] | void
__imp_?Get@CSuper@@QAEPAY0L@DXZ <- char (*)[11] | void
__imp_?Get@CSuper@@QAEPAY0M@DXZ <- char (*)[12] | void
__imp_?Get@CSuper@@QAEPAY0N@DXZ <- char (*)[13] | void
__imp_?Get@CSuper@@QAEPAY0O@DXZ <- char (*)[14] | void
__imp_?Get@CSuper@@QAEPAY0P@DXZ <- char (*)[15] | void
__imp_?Get@CSuper@@QAEPAY0BA@DXZ <- char (*)[16] | void
__imp_?Get@CSuper@@QAEPAY0BP@DXZ <- char (*)[31] | void
__imp_?Get@CSuper@@QAEPAY0CA@DXZ <- char (*)[32] | void
__imp_?Get@CSuper@@QAEPAY00HXZ <- int (*)[1] | void
__imp_?Get@CSuper@@QAEPAY00PADXZ <- char *(*)[1] | void

135 ◆rCEzuNnL0g:2008/08/30(土) 19:35:42
__imp_?Get@CSuper@@QAEP6AP6AXXZXZXZ <- void (__cdecl *(__cdecl *)())() | void

__imp_?Get@CSuper@@QAEPAY09P6AXXZXZ <- void (__cdecl*(*)[10])() | void
__imp_?Get@CSuper@@QAEPAY09P6APAY09P6APAY09P6APAY09P6AXXZXZXZXZXZ <- void (__cdecl *(*(__cdecl *(*(__cdecl *(*(__cdecl *(*)[10])(void))[10])(void))[10])(void))[10])(void)

136 ◆rCEzuNnL0g:2008/08/30(土) 19:51:01
詳しく調べる
-----------------------------------------
__imp_?Get@CSuper@@QAEXXZ <- void | void
__imp_?Get@CSuper@@QAEXH@Z <- void | int
__imp_?Get@CSuper@@QAEXHH@Z <- void | int, int
__imp_?Get@CSuper@@QAEXHD@Z <- void | int, char
__imp_?Get@CSuper@@QAEXHPAHAAH@Z <- void | int, int*, int&
__imp_?Get@CSuper@@QAEXV1@PAV1@AAV1@@Z <- void | CSuper, CSuper*, CSuper&
__imp_?Get@CSub@@QAEXVCSuper@@PAV2@AAV2@@Z <- void | CSuper, CSuper*, CSuper&
__imp_?Get@CSub@@QAEXHVCSuper@@PAD@Z <- void | int, CSuper, char*

137 ◆rCEzuNnL0g:2008/08/30(土) 20:31:08
int Get();
__imp_?Get@@YAHXZ
namespace AA{
int Get()
}
__imp_?Get@AA@@YAHXZ

138 ◆rCEzuNnL0g:2008/08/30(土) 20:34:42
class CSuper{public: static int Get();};
__imp_?Get@CSuper@@SAHXZ

139 ◆rCEzuNnL0g:2008/08/30(土) 22:53:03
今までに分かっていること・・・
・??_7FButton@@6B@
 FButtonの為の`vftable'。(何処から継承しているかは不明、継承元は一つ)
・??_7FActionData@@6BFIActionData2@@@
・??_7FActionData@@6BFObject@@@
 FActionDataの為のFIActionData2の`vftable'。(継承元は二つ以上)
 FActionDataの為のFObjectの`vftable'。

140 ◆rCEzuNnL0g:2008/08/30(土) 22:55:37
>>139の上は継承していない場合もある。
つまり、継承していないか、一つから継承している。

141 ◆rCEzuNnL0g:2008/08/30(土) 22:58:28
__imp_??0CSub@@QAE@XZ <- コンストラクタ void
__imp_??0CSub@@QAE@PBD@Z <- コンストラクタ const char*

142 ◆rCEzuNnL0g:2008/08/30(土) 23:00:39
__imp_??0CSub@@QAE@ABV0@@Z <- コピーコンストラクタ

143 ◆rCEzuNnL0g:2008/08/30(土) 23:19:21
自前で、コンストラクタ、コピーコンストラクタ、デストラクタを実装してエクスポートした。
エクスポートしているものは以下。
??0CClass@@QAE@ABV0@@Z
??0CClass@@QAE@XZ <- コンストラクタ
??1CClass@@QAE@XZ <- デストラクタ
??4CClass@@QAEAAV0@ABV0@@Z <- コピーコンストラクタ
一番は何かなあ?
多分此れも、コピーコンストラクタだと思う。
何故かって言うと、
-----
CClass e;
CClass e1 = e; // コピーコンストラクタ!
-----
これはコピーコンストラクタだと分かる。
だから??4CClass@@QAEAAV0@ABV0@@Zを見に行く。
次に、
-----
CClass e;
CClass e1(e);
-----
の時。
此れはコピーコンストラクタが実際は呼び出されるのだが、恐らくコンパイラの扱いでは、
“const CClass &”が渡されるコンストラクタだと思うのだろう。だから
??0CClass@@QAE@ABV0@@Z
を見に行く。だから二つ必要。

144 ◆rCEzuNnL0g:2008/08/30(土) 23:21:18
因みに、OllyDbgでエクスポート一覧を見ると、三つしか出ない。
多分、同じアドレスを指す奴が見つかったら後からの奴を採用するのだろう。

145 ◆rCEzuNnL0g:2008/08/30(土) 23:24:06
つまり、
??0********ABV0@@Z // コピーコンストラクタ!
??4*************** // コピーコンストラクタ!
??0*************** // コンストラクタ!
??1*************** // デストラクタ!
って言うことだ。
??4があると??0(ryもあるということ。

146 ◆rCEzuNnL0g:2008/08/30(土) 23:33:05
?Get@CSub@@UAEHXZ
のように、@UAEとなっているのは、仮想関数のようである。
純仮想関数はエクスポートされない。

147 ◆rCEzuNnL0g:2008/08/30(土) 23:33:48
@QAE <- 通常

@UAE <- virtual
だからAEの意味は分からない。

148 ◆rCEzuNnL0g:2008/08/30(土) 23:34:26
コピーコンストラクタは自動的に作られるっぽい。
まあ、元の仕様がそうだから、当たり前か。

149 ◆rCEzuNnL0g:2008/08/30(土) 23:36:37
class CSuper{public: virtual int Get() = 0;};
class CSub : public CSuper{private: int i; public: CSub(int v){i = v;} ~CSub{} virtual int Get(){return i}};

をエクスポートした結果。
-----
序数: 0001 名前: ??0CSub@@QAE@ABV0@@Z
序数: 0002 名前: ??0CSub@@QAE@H@Z
序数: 0003 名前: ??0CSuper@@QAE@ABV0@@Z
序数: 0004 名前: ??0CSuper@@QAE@XZ
序数: 0005 名前: ??1CSub@@UAE@XZ
序数: 0006 名前: ??1CSuper@@QAE@XZ
序数: 0007 名前: ??4CSub@@QAEAAV0@ABV0@@Z
序数: 0008 名前: ??4CSuper@@QAEAAV0@ABV0@@Z
序数: 0009 名前: ??_7CSub@@6B@
序数: 000A 名前: ??_7CSuper@@6B@
序数: 000B 名前: ?Get@CSub@@UAEHXZ

150 ◆rCEzuNnL0g:2008/08/30(土) 23:39:12
まだ、??7とか??8とか??9とか??Bとか??Yは分からん。
operator系の関数?

151 ◆rCEzuNnL0g:2008/08/30(土) 23:49:39
コピーコンストラスタは自動生成されるが
コンストラクタと、デストラクタは自動生成されない。
何故ならば、処理が無いならば何もしなくて良いから。
ただ、virtualな関数を持つクラスを継承したらどうなるのだろうか。
まあ、一個上のデストラクタを呼び出さないけないな。
多分、virtualな関数が無くても、継承していればその二つは自動生成されるのだろう。

152 ◆rCEzuNnL0g:2008/08/30(土) 23:52:05
??Bはoperatorっぽい。
int, char, short, long, float, double, long double
void*, int*, char*, short*, long*, float*, double*, long double*
をエクスポートしたけど無駄だった。じゃあ、後はoperator+=とかだけか。
序数: 0002 名前: ??BCSuper@@QAEDXZ
序数: 0003 名前: ??BCSuper@@QAEFXZ
序数: 0004 名前: ??BCSuper@@QAEHXZ
序数: 0005 名前: ??BCSuper@@QAEJXZ
序数: 0006 名前: ??BCSuper@@QAEMXZ
序数: 0007 名前: ??BCSuper@@QAENXZ
序数: 0008 名前: ??BCSuper@@QAEOXZ
序数: 0009 名前: ??BCSuper@@QAEPADXZ
序数: 000A 名前: ??BCSuper@@QAEPAFXZ
序数: 000B 名前: ??BCSuper@@QAEPAHXZ
序数: 000C 名前: ??BCSuper@@QAEPAJXZ
序数: 000D 名前: ??BCSuper@@QAEPAMXZ
序数: 000E 名前: ??BCSuper@@QAEPANXZ
序数: 000F 名前: ??BCSuper@@QAEPAOXZ
序数: 0010 名前: ??BCSuper@@QAEPAXXZ

153 ◆rCEzuNnL0g:2008/08/30(土) 23:53:26
後は??7,8,9,Yだけ。

154 ◆rCEzuNnL0g:2008/08/30(土) 23:58:21
??Yはoperator+=。

155 ◆rCEzuNnL0g:2008/08/31(日) 00:00:28
??Hはoperator+。
だけれども
??7,8,9は分からんなあ。

156 ◆rCEzuNnL0g:2008/08/31(日) 00:09:13
__imp_?Get@SClass@@QAEPA_WXZ <- wchar_t* | void
__imp_?Get@SClass@@QAE_JXZ <- long long int | void
__imp_?Get@SClass@@QAE_JXZ <- __int64 | void //上と同じ
__imp_?Get@SClass@@QAE_KXZ <- unsigned __int64 | void
__imp_?Get@SClass@@QAEPA_KXZ <- unsigned __int64* | void

157 ◆rCEzuNnL0g:2008/08/31(日) 07:54:18
__imp_??2CClass@@SAPAXI@Z <- operator new

158 ◆rCEzuNnL0g:2008/08/31(日) 18:08:51
サクラエディタである文字列を含まない行を消し去る正規表現
------
^(?!.*{対象文字列}).+[\r\n][\r\n]?$
------
{対象文字列}を置き換える。

159 ◆rCEzuNnL0g:2008/08/31(日) 19:09:24
MASMインラインアセンブラ
http://7ujm.net/C++/asm1.html
-----
インラインアセンブラメモ。

160 ◆rCEzuNnL0g:2008/08/31(日) 21:26:22
liveなquerySelectorAll - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20080831/1220184849

161 ◆rCEzuNnL0g:2008/08/31(日) 22:18:55
DLLをエクスポートするときにこんなのでも・・・
------------------------------------
#ifdef __cplusplus
# define CDLLExport extern "C" __declspec(dllexport)
#else
# define CDLLExport __declspec(dllexport)
#endif

#define DLLExport __declspec(dllexport)

162 ◆rCEzuNnL0g:2008/08/31(日) 23:19:29
無理やりfxプラグインを作ってやろうと思ったが、
関数ポインタ多すぎてやる気が起きないwwwwwwwwwwww
もう諦めよう。
だから、直接アクションを呼び出す方法だけを探そう!
早く、プラグインの作成の奴が出ないかなあ。

163 ◆rCEzuNnL0g:2008/08/31(日) 23:41:13
■ Takahashi's Web ■
http://www.nscripter.com/
-----
ひぐらし、うみねこはNScripterで作っている。

164 ◆rCEzuNnL0g:2008/08/31(日) 23:43:09
うpだて - みみず日記
http://d.hatena.ne.jp/sub_chon/20080827/1219808408#c
-----
VC++ 2008でコンパイルしないほうが良い件について。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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