C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: アセンブラについておしえてください。


(過去ログ 128 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■75805 / inTopicNo.1)  アセンブラについておしえてください。
  
□投稿者/ ぽん吉 (32回)-(2015/05/04(Mon) 18:18:28)

分類:[(わからない)] 

PUSH EAX
MOV DWORD PTR DS:[E9DCD1],EAX

push eaxにメモリアドレスが格納されていて、

E9DCD1にpush eaxのアドレスを書き出していて、

そのpush eaxに格納されているメモリアドレスの中身を
ベツのアドレスに書き込むにはどうすればいいでしょうか?

引用返信 編集キー/
■75806 / inTopicNo.2)  Re[1]: アセンブラについておしえてください。
□投稿者/ Azulean (476回)-(2015/05/04(Mon) 18:25:14)
2015/05/04(Mon) 19:56:28 編集(投稿者)

No75805 (ぽん吉 さん) に返信
> PUSH EAX
> MOV DWORD PTR DS:[E9DCD1],EAX
>
> push eaxにメモリアドレスが格納されていて、
> E9DCD1にpush eaxのアドレスを書き出していて、

このペアで見ると、何か間違っているように思えます。

1.push eax は eax レジスタの中身をスタックに積むことです。
2.mov 命令は右側に書かれたものを、左側に書かれたものに移動(代入)することです。

この時点で書かれたアセンブラコードと説明が一致しません。
("push eax" ではなく、"eax" と読み替えれば通じなくもないか…)

> そのpush eaxに格納されているメモリアドレスの中身を
> ベツのアドレスに書き込むにはどうすればいいでしょうか?

"push eax" は命令であり、格納されている領域を表す文言ではありません。
何をやりたいのでしょうか?

// 元のアセンブラを見る限り、eax を退避して、eax の中身を E9DCD1 に書いている?
// eax をアドレスと見なしたときの扱いをしたいなら mov ebx, [eax] みたいな感じかな?試していませんが。
引用返信 編集キー/
■75807 / inTopicNo.3)  Re[2]: アセンブラについておしえてください。
□投稿者/ ぽん吉 (33回)-(2015/05/04(Mon) 18:30:15)
レジスタのeaxに変動するアドレスが格納されていて

例 変動するアドレス 0100000のメモリアドレスの位置にあいうえお という文字列が格納されていて。

その あいうえおという格納されている文字列をベツの空いてる空き地にその文字列を書き込みたいです。
引用返信 編集キー/
■75808 / inTopicNo.4)  Re[3]: アセンブラについておしえてください。
□投稿者/ Azulean (477回)-(2015/05/04(Mon) 19:00:34)
No75807 (ぽん吉 さん) に返信
> レジスタのeaxに変動するアドレスが格納されていて
>
> 例 変動するアドレス 0100000のメモリアドレスの位置にあいうえお という文字列が格納されていて。
>
> その あいうえおという格納されている文字列をベツの空いてる空き地にその文字列を書き込みたいです。

まず、先に書いておきますが、自分である程度 mov 命令について学ぶべきだと思います。
繰り返しますが、現状の質問では仕様定義が足りていません。
たとえば、以下の点が不明です。

・固定長か可変長か言及がない。可変長であるならそのバイト数を得る方法について定義がない。
・格納先アドレスに対する定義が足りない。「空き地」って何でしょう?


ところで、x86 だとみなしていますが、問題ないですか?
そして、このアセンブラの質問をする背景、理由も明かせませんか?
よっぽどのことがなければ、Windows のプログラミングでこの層を自分で書くことはないため。
引用返信 編集キー/
■75809 / inTopicNo.5)  Re[4]: アセンブラについておしえてください。
□投稿者/ ぽん吉 (34回)-(2015/05/04(Mon) 19:07:57)
アプリケーションの開発をしていて、指定したアドレスに書き込まれた文字列を取得してツール側のテキストなどに表示させようと思っています。

アセンブラの知識について無知だったので、質問の仕方が悪かったです。
引用返信 編集キー/
■75811 / inTopicNo.6)  Re[5]: アセンブラについておしえてください。
□投稿者/ Azulean (478回)-(2015/05/04(Mon) 19:54:08)
No75809 (ぽん吉 さん) に返信
> アプリケーションの開発をしていて、指定したアドレスに書き込まれた文字列を取得してツール側のテキストなどに表示させようと思っています。
> アセンブラの知識について無知だったので、質問の仕方が悪かったです。

そういったことを実現する場合、アセンブラの層まで降りる必然性はありません。



余談。
「フック」や「特定アドレスの読み出し」とか聞いている限り、他のプロセスに乗り込んでメモリを読むつもりなんですかね?
他のプロセスでのアドレスを指定して自分のプロセス内で読み出そうとしても、プロセスごとにメモリ空間は分離されているのでダメですよ。(専用の手法を使う必要がある)
(厳しいことを言ってしまいますが)この仮定が正しいとすると、やろうとされていることに対して、知識が圧倒的に足りていないです。
また、相手のプロセスが「リバースエンジニアリングを禁じる」や「不正なツールの利用を禁じる」といった使用許諾条件が付されている場合、そういった他のプロセスからの読み込みは条件違反になるのでご注意を。
引用返信 編集キー/
■75819 / inTopicNo.7)  Re[5]: アセンブラについておしえてください。
□投稿者/ kumatti (1回)-(2015/05/06(Wed) 06:17:18)
No75809 (ぽん吉 さん) に返信
> アプリケーションの開発をしていて、指定したアドレスに書き込まれた文字列を取得してツール側のテキストなどに表示させようと思っています。

ReadProcessMemoryで読み込むとか。
引用返信 編集キー/
■75828 / inTopicNo.8)  Re[6]: アセンブラについておしえてください。
□投稿者/ ぽん吉 (35回)-(2015/05/07(Thu) 18:12:02)
知識が圧倒的に足りてなかったみたいなので、もうちょっと勉強してから取り組みたいと思います。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -