あるプログラムが、
自分自身がエミュレータ上で動いているかどうかを
検出する方法はあるのでしょうか。

お答えいただければ幸いです。
宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>エミュレータ側にいかなる実装をしようとも、


>かつ、装置の本来の実行速度をあらかじめ入手することなく
>検出する方法という都合のよいものはやはりないのでしょうか。
所詮ソフトですよ。かって.symdeb.exeのトレース(エミュレーターの一つ)をしていると実行速度の差からハングアップするコピープロテクトとかありましたが.ことごとく破るソフトが開発されています。だから簡単に避けられてしまいます。

>2つのコマンドの実行時間の違いから検出するといった方法が
特定のコマンドの実行速度を測定する方法は使えません。というのは.現在のOSは原則としてマルチタスクです。したがって.優先度の高いタスクが起動されると該当コマンドが待ち行列につながれてしまいますから.この待ち時間の影響を考慮しなければならないためです。Winでctrl+shift+delを押しただけで実行中のタスクが暴走した(エミュレーター上の動作として通常とは異なる動作をした)なんてことになりかねません。
ioやメモリー直接アクセスはスーパーバイザー(Winではデバドラ・BIOS)上での動作ですから.必要に応じて最高優先度を指定できます。つまり.実行優先度を最高優先度に.割り込み処理を一切抑止できる特権タスクを自前で作り実行するから可能です。しかし.osを含めて一般のタスクは優先度を低く押さえています(時計が遅れたというような事は一般のタスクの優先度の上げ過ぎから発生する)。
お話の内容では.マルチタスク処理を脅かす致命的障害になりかねません。不可能でしょう。
    • good
    • 0

WInのMS-DOSエミュレーターの検出ならば.バージョン取得(Int21 ??かInt2f ??)でたしかVer7以上ならばエミュレーターと検出できます。



あとはioポートをダイレクトに操作する入出力をして.実機との時間差からエミュレータと判断する方法もあります。たたし.実機情報を持っていればですけと。

フロッピーを細工できるのであれば.ギャップにフラグを入れていてキャップを読み取れるかとする方法があります。一部のエミュレーターは標準フォーマットしか対応していないために.ギャッブを適当にいじると読めなくなりますから。

最後は.romの直接読み取りで.機種によってはramに比べて1ウェイト遅くしてある機種があります。RamとROMの読み取り速度の違いから検出できる場合があります。

この回答への補足

ご回答ありがとうございます。

求めていたものにかなり近いお答えを頂きまして嬉しく思います。
お答えから察するに基本的には、
(1)エミュレーターや装置に、検出を可能とする特別な仕掛けがあり、それを利用する方法
(2)装置の本来の実行時間をあらかじめ入手しておく方法
の2種類のようですね。

フロッピーの方法はエミュレータ側で対応することも可能だと受け取りました。

エミュレータ側にいかなる実装をしようとも、
かつ、装置の本来の実行速度をあらかじめ入手することなく
検出する方法という都合のよいものはやはりないのでしょうか。

たとえば2つのコマンドの実行時間の違いから検出するといった
方法があれば嬉しいのですが。

補足日時:2002/04/02 09:56
    • good
    • 0

「エミュレータ上で動作している」なんて事がわかったらエミュレータの意味が半減するのではないでしょうか。


(完全なエミュレーションとは呼べなくなる)

エミュレータ側に「環境がエミュレータである」ことを示すような仕組みが組み込まれている場合は別ですが…

ただ、「エミュレータ」といっても、ICEやターミナルエミュレータ、ゲーム機エミュレータなど多種多様ですから具体的な環境示していただければ経験者の方ならわかるかもしれません。

この回答への補足

早速のご回答有難うございます。

エミュレータの限界に関心がありましたので、この様な質問を致しました。

想定する環境としては、Windows等のOS上で
動くプログラムが、本来のOS上ではなく、
そのOS上で動いているOSエミュレータ上で
動くときを考えています。

補足日時:2002/03/29 15:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q大学の課題なんですが、答えを教えていただけないでしょうか?(CASLII)

大学の課題の答えを教えてください。

まず答えを教えてもらい、それを自分なりに解析して勉強しようと思います。答え無しでは、まったく何が何なのか分かりませんでした。

「記憶領域に確保された定数8を4乗した解をGR2に求めなさい」

よろしくおねがいします。

・足し算と、引き算は「ADDA」という命令と「SUBA」という命令を使えば良いとわるんですが、「4乗」という命令はどうやって出すんですか??

・定数を確保するには「DC」という命令を使うんですか??

Aベストアンサー

答えを聞いて考えるより苦しんだほうが絶対身につきます。それに全部の答えを書くことは、この掲示板の規約違反の可能性があります。
なので、ヒントを書きます。

・足し算と、引き算は「ADDA」という命令と「SUBA」という命令を使えば良いとわるんですが、「4乗」という命令はどうやって出すんですか??
掛け算は、足し算を繰り返すことってのは理解されますか?
10×5なら10を5回加算することです。
だったら、4乗は8x8x8x8って事ですから、8x8を掛け算して、その答え同士を掛け算すると求める事が出来ます。

・定数を確保するには「DC」という命令を使うんですか??
そうです。DCをつかいます。

これだけでは、答えにたどり着けないと思いますので参考サイト。
http://www016.upp.so-net.ne.jp/masuda2/casl2/index.html
あとは、CASLIIのシミュレータで実際に動かして確認しましょう。

Q【プログラム】自身への課題【独習】

大学で情報工学科へ進学予定の者です。
まだ1年次の段階では専門をあまりやらないので(いわゆる教養課程)、
自分でC,Javaをある程度独学しました。
…とはいってもまだ入門レベルであり、
http://www.seshop.com/detail.asp?pid=4912
http://www.seshop.com/detail.asp?pid=5761
を終えた程度です。
この先、何を目標にしてプログラムを勉強していけばよいのか。
もちろんもっと難しい本を読め、という話ではありますがただ淡々と
本をこなしていけばいいのか。正直つまらない。
自主的に何かを作って「できた!」という感触を多少味わいたい。
ただ仕事でやってるわけではないので「これをやらなきゃ!」という圧迫感がありません。
しかし人はそれがあって初めて本気になれると受験時代に経験済みです。
自分で欲しいソフトを作る、なども考えはしましたが正直あまり現実感がなく、微妙な感じです。
なにか手ごろな目標はないでしょうか。
ご意見いただけないでしょうか。よろしくお願いいたします。

大学で情報工学科へ進学予定の者です。
まだ1年次の段階では専門をあまりやらないので(いわゆる教養課程)、
自分でC,Javaをある程度独学しました。
…とはいってもまだ入門レベルであり、
http://www.seshop.com/detail.asp?pid=4912
http://www.seshop.com/detail.asp?pid=5761
を終えた程度です。
この先、何を目標にしてプログラムを勉強していけばよいのか。
もちろんもっと難しい本を読め、という話ではありますがただ淡々と
本をこなしていけばいいのか。正直つまらない。
自主的に何かを作って...続きを読む

Aベストアンサー

元腕っこきのプログラマでした。
"でした"というのは、定年で馘になったからです。
しかし、プログラミングはやめられません。
完成したときのあの達成感が忘れられないのですね。

私が趣味で作ったソフトはこんなものがあります。
■自前の暗号化・復号化プログラム
 メールの本文を暗号化して添付ファイルにします。
 受取人には復号化プログラムを渡しておきます。
■最小自乗法による二次曲線あてはめプログラム
 実験値の傾向を把握するのに便利です。
■万年カレンダープログラム
 日付をクリックするとその日の予定が表示されます。
■住所録管理プログラム
 「あいうえお…」の頭文字をクリックすると、該当の
 人名が現れ、これを個別にクリックすれば具体的な
 情報を表示します。
■画像処理プログラム
 拡大/縮小の他、色の変更や色調補正ができます。
 Web掲載に使う小型画像の作成時に便利です。
■三次元回転プログラム
 これを使ってWeb画面上で紙飛行機を飛ばしました。
■日本語テロップ作成プログラム
 横流れと縦流れの日本語テロップです。
 英文テロップ作成ソフトは市販されているのに、日本
 語のものがないので自作しました。
■動画旗作成プログラム
 これは本当にはためく旗の動画を作ります。
以上はC言語だけでは実現困難で、いまさらC++を学ぶのも重荷過ぎるため、GUIプラットホームのひとつであるTcl/Tk(ティクルテーケー:Tool Command Language/Tool Kit)を利用しました。これは無料の開発環境で、Windows,Mac,UNIX,Linux,OS/2すべての環境で動作します。その代わりインタープリタ形式となります。しかし、コンパイルせずにいきなり動作確認できることや、C言語との親和性が格段に良いので、GUI部分はTcl/Tkで組み、処理時間のかかる本体部分をC言語で組むようにすると、市販のソフトに劣らないものが出来上がります。
いちどTcl/Tk環境を導入して、ボタンのひとつでも作ってみれば、病みつきになることうけあいです。
お勧めする参考書は下記です。
 題名:詳解 Tcl/Tk
 副題:GUIプログラミング
 発行:株式会社秀和システム
 著者:須栗歩人(すぐり ふひと)
 値段:\3,200+税(4年前の値段です)
Tcl/Tkは今もどんどんVersion-upされているので、上記著書の内容は若干旧くなっていると思いますが、基本的にはこれでじゅうぶんです。
最新情報の仕入れは参考URLをごらんください(とくに「拡張分室)。
このサイトのエンコードは"EUC"だったり、"Shift-JIS"だったりするので、適宜切り替えてご覧ください。

参考URL:http://www.geocities.jp/urano343/tcltk.html

元腕っこきのプログラマでした。
"でした"というのは、定年で馘になったからです。
しかし、プログラミングはやめられません。
完成したときのあの達成感が忘れられないのですね。

私が趣味で作ったソフトはこんなものがあります。
■自前の暗号化・復号化プログラム
 メールの本文を暗号化して添付ファイルにします。
 受取人には復号化プログラムを渡しておきます。
■最小自乗法による二次曲線あてはめプログラム
 実験値の傾向を把握するのに便利です。
■万年カレンダープログラム
 日付をクリ...続きを読む

Q直線検出のハフ変換プログラム(delphi)

ただいまdelphiで直線検出のハフ変換のプログラムを書いているのですが、コンパイルし、実行しようとするとスタックオーバーフローになってしまいます。
おそらく2次元配列のcounterの部分だと思うのですが、どなたか回避の仕方お分かりになるでしょうか?
ご存じの方いらっしゃいましたら教えて下さい。

下記にハフ変換の部分のコードを載せます。
他にも何か気付いた点ありましたらご指摘お願いいたします。

○直線検出のハフ変換○
var
i, j, k, n: Integer;
rx, ry: Integer;
clr: tcolor;
R: longint;
counter_max: Integer;
THETA_RESOLUTION, RHO_RESOLUTION, LNUMBER_MAX: Integer;
pai: Double;
theta, rho: Integer;
theta_max, rho_max, count: Integer;
theta_cut, rho_cut: Integer;
counter:array[0..1023,0..1999] of Integer; //直線検出のためのカウンタ
sn:array[0..1023] of Double; //sin
cs:array[0..1023] of Double; //cos

begin
THETA_RESOLUTION:=1024; //thetaの範囲は0から1023まで
RHO_RESOLUTION:=2000; //rhoの範囲は-1000から999まで
LNUMBER_MAX:=15; //検索する電線の数は15まで
pai:=PI / THETA_RESOLUTION; //π÷THETA_RESOLUTION

for i:=0 to 1023 do //sinとcosのテーブルを用意
begin
sn[i]:=Sin(pai*i);
cs[i]:=Cos(pai*i);
end;

//ハフ変換の実行//
for rx:=0 to 639 do
begin
for ry:=0 to 479 do
begin
clr:=image1.Canvas.Pixels[rx,ry];
R:=colortorgb(clr);
if(getrvalue(R)=0)and(getgvalue(R)=0)and(getbvalue(R)=0) then //黒である
for theta:=0 to 1023 do
begin
rho:=Trunc(rx*cs[theta]+ry*sn[theta]+0.5);
counter[theta,rho+1000]:=counter[theta,rho+1000]+1;
end;
end;
end;

//ハフ逆変換の実行//
for n:=0 to 14 do
begin
//counterが最大になるtheta_maxとrho_maxを求める//
counter_max:=0;
for theta:=0 to 1023 do
begin
for rho:=-RHO_RESOLUTION div 2 to RHO_RESOLUTION div 2-1 do
begin
if(counter[theta,rho+RHO_RESOLUTION div 2] > counter_max) then
begin
counter_max:=counter[theta,rho+RHO_RESOLUTION div 2];
theta_max:=theta;
rho_max:=rho;
count:=counter_max;
end;
end;
end;

//counter[theta_max,rho_max]の近傍を0にする//
for i:=-20 to 20 do
begin
for j:=-10 to 10 do
begin
theta_cut:=theta_max+i;
rho_cut:=rho_max+j;
if(theta_cut < 0) then
begin
theta_cut:=theta_cut+THETA_RESOLUTION;
rho_cut:=-rho_cut;
end
else if(theta_cut > THETA_RESOLUTION-1) then
begin
theta_cut:=theta_cut-THETA_RESOLUTION;
rho_cut:=-rho_cut;
end;
counter[theta_cut,rho_cut+RHO_RESOLUTION div 2]:=0; //削除する
end;
end;

//ハフ逆変換した結果の表示//
if(theta_max<>0) then //垂線の線を描く
begin
for rx:=0 to 639 do
begin
ry:=Trunc((rho_max-rx*cs[theta_max])/sn[theta_max]+0.5);
if(ry>=480)or(ry<0) then continue;
image1.Canvas.Pixels[rx,ry]:=RGB(255,0,0);
end;
end;

if(theta_max<>THETA_RESOLUTION div 2) then //水平の線を描く
begin
for ry:=0 to 479 do
begin
rx:=Trunc((rho_max-ry*sn[theta_max])/cs[theta_max]+0.5);
if(rx>=640)or(rx<0) then continue;
image1.Canvas.Pixels[rx,ry]:=RGB(255,0,0);
end;
end;


//直線を形成するピクセルが60個未満になったら表示しない//
if count<60 then break;
end;
end;

ただいまdelphiで直線検出のハフ変換のプログラムを書いているのですが、コンパイルし、実行しようとするとスタックオーバーフローになってしまいます。
おそらく2次元配列のcounterの部分だと思うのですが、どなたか回避の仕方お分かりになるでしょうか?
ご存じの方いらっしゃいましたら教えて下さい。

下記にハフ変換の部分のコードを載せます。
他にも何か気付いた点ありましたらご指摘お願いいたします。

○直線検出のハフ変換○
var
i, j, k, n: Integer;
rx, ry: Integer;
clr: tcolor;
R: long...続きを読む

Aベストアンサー

もう見てないかもしれませんが、

counter:array of array of Integer;

と、動的配列にして、使う前に

SetLength(counter ,THETA_RESOLUTION,RHO_RESOLUTION );

で確保してください。少なくとも私の環境はこれで動作します。まだスタックが足りない場合には大きい配列は全部動的配列に変えてください。

Windowsは静的に巨大な配列は確保できません。ヒープ領域に確保します。

Q簡単な言語順に並べていただけないでしょうか

コンピューター言語を習得するに当たって簡単なもの(習得時間が短くて済む)順に並べていただけないでしょうか。

C++
JAVA
HTML
Perl
PHP
XML
VB
JAVASCTIPT

宜しくお願い致します。

Aベストアンサー

独自の基準ですが簡単な順です。
ただし、HTML、XMLはプログラム言語ではなく文章の構造をルール化したものです。
他の言語とはカテゴリーが少々違うものであることにご注意を願います。

HTML
XML
JAVASCTIPT
PHP
Perl
VB
JAVA
C++

Qプログラムはどうやって動いているのか?

根っからの文系学生ですが、気になったので投稿しました。OSやiTunesなどのプログラムはどうやって機能しているのか仕組みが知りたいです。プログラムの仕組み等の書かれた書籍、詳しいサイト等があったら教えてください。

Aベストアンサー

コレと
http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B%EF%BD%9E%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A8%E3%82%A2%EF%BC%86%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%EF%BD%9E-%E7%9F%A2%E6%B2%A2-%E4%B9%85%E9%9B%84/dp/4822281655/ref=pd_bxgy_b_img_a

コレと
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B-%E2%80%95-%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98-%E7%9F%A2%E6%B2%A2-%E4%B9%85%E9%9B%84/dp/4822281019/ref=sr_1_1?ie=UTF8&s=books&qid=1206629417&sr=1-1

コレを熟読すると良いですよ
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98-%E7%9F%A2%E6%B2%A2-%E4%B9%85%E9%9B%84/dp/4822283151/ref=pd_bxgy_b_img_b

さらにwindowsに特化した版です
http://www.amazon.co.jp/Windows%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B-%E5%A4%A9%E9%87%8E-%E5%8F%B8/dp/4822281493/ref=pd_sim_b_img_2

コレと
http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B%EF%BD%9E%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A8%E3%82%A2%EF%BC%86%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%EF%BD%9E-%E7%9F%A2%E6%B2%A2-%E4%B9%85%E9%9B%84/dp/4822281655/ref=pd_bxgy_b_img_a

コレと
h...続きを読む


人気Q&Aランキング

おすすめ情報