• ベストアンサー

Windowsアプリケーションをメモリーで実行する

EXEファイルをchar*bufと言う変数メモリーにロードして実行する場合の入り口(call又はjmp)アドレスはどこになるでしょうか? winmain()関数のアドレスがわかりません。 通常は実行ファイルをクリックするとOSがDLL等をマシン語に展開して実行しますが、メモリー上での実行はどの様にすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1622/5659)
回答No.13

>プログラムカウンターのつもりです。 先にも書きましたが、あなた自身にしかわからない造語を使われても他者にはわかりません。 あなたが勝手につくった造語なんて調べてもわかりませんから質問する際には、そのような造語は使うべきではないです。 もちろん回答もですが。 「動かないretcode」が動かない理由に関連する事項は、あなた自身で他の回答者の補足に書いてます。 少なくともその補足の内容を理解してるならわかるはずの理由です。

7777777v
質問者

お礼

お返事が遅くなり申し訳ありません・・・年寄りは早寝早起きがモットーでして・・・ハイ 今回の解決ポイントについご提示頂き感謝いたします。 PECOFFを実行 LoadLibrary,GerProcAddress 例外(提示されたコード) これらのキーワードで勉強の糸口が開けました。 専門用語も満足に知らず基礎勉強もせず、とにかくプログラムしてみて結果よければ自分のものにする結果オーライの繰り返しだったような気がします。 SNSツールが存在する世代に生まれて幸せです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (12)

回答No.2

WindowsのEXEファイルは実行形式ではありませんからメモリーにロードしても実行できません。

7777777v
質問者

お礼

早速の回答感謝します。 この問題は幾つかの課題をクリアする必要がありそうです。 絶対アドレスを使わず完全なマシン語に変換し処理内容も吟味した後できそうです。 実行ファイル自体をロードしても出来ない事はよくわかりました。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

> 暇があればそうしたいのですが、あっと言う間もない人生の終りに近づくと焦ってしまい、かえって逆効果のようですね・・・ハイ。 んじゃなかったけ? なぜ、そんな時間の無駄な勉強が必要なことがしたいの? ちなみにexeファイルは、そのままではアドレス関係か未解決なのでローディング処理をしないと実行出来ません。 と言うことでコメントも定番で、exeファイルの構造とOSの仕組みを勉強してください。あとC/C++のスタートアップの仕組みの理解かな。それをすれば出来るようになります。機械語も分からないと出来ません。

7777777v
質問者

お礼

一番にコメントを頂きながら返事が遅くなり申し訳ありません。 さて、貴殿にはプログラム開発での心構えをご教授頂き感謝しています。 楽をして目的を達成すると言う「ずるい」私ですが、皆様のお力でなんとか課題は解決しております。 これに懲りず今後もよろしくお願い申し上げます。 VC++片手にがんばっています、 >・・・ >ローディング処理 >・・・ 相対アドレス生成はこのコンパイラで可能でしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プログラムの実行

    プログラムの実行について (1) プログラムを実行させるためには、プログラムをメモリーにロードする必要があると思うが、ロードはどのプログラムがやっているのか、その流れ、仕組みを教えてください。 (2) メインメモリーのどの部分にロードされるのか。 (3) プログラムがメインメモリーにあるだけでは、プログラムは実行しないようにおもうが、実行する合図のようなものがあるのか。 (4) comファイル、exeファイル、basicの場合で違いがあるのか。 * osがwindows7またはxpとします。

  • アプリケーション実行エラーでプリンタドライバがインストール出来ない

    EPSON PM-3300Cを使用しています。 印刷が出来なくなってしまったので、 一旦プリンターのドライバをアンインストールし、再インストールを試みました。 ファイル エラー  ファイル: WFWNET.DRV が見つかりません ロードエラー:  ファイル: SHELL.DLL が見つかりません ロードエラー:  ファイル: COMMDLG.DLL が見つかりません ロードエラ ー:  ファイル: LZEXPAND.DLL が見つかりません ロードエラー:  ファイル: SHELL.DLL が見つかりません ロードエラー:  ファイル: VER.DLL が見つかりません ロードエラー: アプリケーション実行エラー  ファイル C:\DOCUME~1\***~1\LOCALS~1\Temp\eptempfd\1\pm3300c\EPW3\Epwsetup.exe (または必要なファイル)が見つかりません。パスおよびファイル名が正しいか、必要なライブラリがすべて使用可能かどうか、確認してください。 ***は日本語での自分の名前 と表示され、インストールできません。 EPSONのサポートを受けましたが、解決しませんでした。 システム:Microsoft Windows XP Home Edition Version 2002 Service Pack 2

  • アプリケーション実行エラーでプリンタドライバがインストール出来ない

    プリンタドライバのインストール出来ません。 EPSON PM-3300C システム:Microsoft Windows XP Home Edition Version 2002 Service Pack 2 質問No.1820537で同様の質問をしました。 「ユーザー プロファイル名を変更する」の回答をいただき、 ユーザープロファイル名を英語にし、再びプリンタドライバのインストールを試みました。 ファイル エラー  ファイル: WFWNET.DRV が見つかりません ロード エラー:  ファイル: SHELL.DLL が見つかりません ロード エラー:  ファイル: COMMDLG.DLL が見つかりません ロード エラー:  ファイル: LZEXPAND.DLL が見つかりません ロード エラー:  ファイル: SHELL.DLL が見つかりません ロード エラー:  ファイル: VER.DLL が見つかりません ロード エラー: アプリケーション実行エラー ファイル C:\DOCUME~1\user\LOCALS~1\Temp\eptempfd\1\WIN2000\SETUP\Setup.exe (または必要なファイル)が見つかりません。パスおよびファイル名が正しいか、必要なライブラリがすべて使用可能かどうか、確認してください。 再び同じようなエラーが表示され、インストールできません。

  • アプリケーションが実行できませんって出ます。。。なぜ?

    パソコン初心者です。使ってるパソコンはウィンドウズ98セカンドエディション富士通fm-v-biblo-ne3/500です。アプリケーションを開こうとするとこんな表示が出ます。 アプリケーションが実行できません (c:y progra'1\ahnlab\smartu"1\sucer.exe-s) 必要なdllファイルahni18n.dllが見つかりませんでした。 でもバッテンで消すとそのままインターネットなどできます。でもまたこれが出てきて電源が落ちたりするんです。 これを直す方法を教えていただけませんか?どうぞ宜しくお願いします

  • 実行ファイルの実行準備

    windowsの実行ファイル(主に.exe)を実行するときの動作を知りたいのですが、そのプログラムのソースコードは公開されているのでしょうか? また、実行ファイルをロードする詳細情報はどこかにありませんか?

  • メモリービューという機能について

    メモリービューという機能について質問させてください。 非実行型(?、dllなどのことです)のファイルを実行することができる実行プログラムに、よくメモリービューという機能がついているのですがどういったものなのでしょうか?(あまりいい例えになりませんが、各種エミュレーターなど) メモリーという単語を調べても、PC用語ではメモリーRAMについてしか出てこないのですが、そのメモリーを開示する機能ということなのでしょうか? また、 >非実行型(?、dllなどのことです)のファイルを実行することができる実行プログラム この文章、自分でも下手な表現だなと思うのですが、 ・何か他のファイルを自身を介して実行できる実行ファイル ・上のように実行されるファイル はそれぞれ専門用語でなんというのでしょうか?

  • アプリケーションが見つかりません

    ZIPファイルをダウンロードすると(実行・保存両方やっても) 「アプリケーションが見つかりません」 とでます。 exe.ファイルはダウンロード出来るんですが・・・ たいていの世の中に出回っているダウンろロードファイルは ZIPファイルなのでとても困っています。 助けてください!!

  • スタートメニューの「ファイル名を指定して実行」の操作で、名前ボックスに

    スタートメニューの「ファイル名を指定して実行」の操作で、名前ボックスに、それぞれ「Regsvr32.exe Accwiz.dll」、「Regsvr32.exe dao360.dll」と入力し、OKをクリックしたところ、「Load Library("Accwiz.dll")に失敗しました-指定されたモジュールが見つかりません。」、「Load Library("dao360.dll")に失敗しました-指定されたモジュールが見つかりません。」というメッセージが返ってきました。 メッセージの意味が分からず、対処法に困っています。どなたかアドバイスよろしくお願いします。

  • HSP実行ファイルで・・・・

    ようやくHSPのプログラムが完成しました! 実行ファイルを作ったのですが、hspext.asを使っている為にhspext.dllが同じディレクトリにあれば実行出来るもののexe単体をディスクトップに持ってくると 予想通りhspext.dllが見つかりません!となります。 単体のexeファイル一つだけですと見栄えが良くていいな~と思っているのですが、そういうことって出来ますでしょうか? 前に他の方がHSPで作ったのダウンしたことあるんですが拡張プラグイン使いまくっているはずなのに単体のexeファイル一つでしたので出来るんだろうな~?とは思うのですが(そのファイルはインストール無しでした)

  • アプリケーションがテキストで開いてしまうように・・・

    こんばんは。 何かとんでもないことしたのかもしれません。 質問の内容は、アプリケーションを実行すると、普通はゲームとかエクセルとかが動きだすはずなのに、文字化けした文字が書かれているテキストファイルが出てくるだけになってしまいました。exeをテキストで開いてるんだと思います。何かを実行しようとすると、xxxx.exeとかxxxx.dllがテキストファイルとして開くんです。 色々インストールしてあるので、再インストールしないでアプリケーションが普通に動くようになるためにはどうしたらいいのでしょうか?OSはWindowsXPです。 よろしくお願いします。