• 締切済み

ソフトの多重起動制限

以前知り合いに作ってもらったWindow用のソフトを愛用してるのですが 同時に3個までしか起動できず、4個目を起動すると3個起動してるので動きませんとメッセージが出ます。 その知り合いとはもう疎遠になってしまったので直してもらうことが出来ません。 VC++ mutex で排他制御を行っていることまではわかったのですが バイナリエディタでこのソフトの中身を書き換えて同時起動の回数を変えることは出来ますでしょうか? また、出来る場合はどこをどのように変えればいいかというのは簡単にわかるものでしょうか? よろしくお願いします。 ※もらった時に自己責任で改造は自由にという許可はもらってあります。

みんなの回答

回答No.5

> ソースコードとはバイナリで開いた時の数字の羅列のことでしょうか? それって実行モジュール(.exe)を開いてませんか? ソースコードはC(C++)なら.cや.cppなどの拡張子のファイルです。 > プログラミングとか全くわからない僕のような人でも簡単にわかりますか? 少なくともバイナリエディタで実行モジュールを直接変更するのは無理です。 マシン語を習得した上で実行モジュールのフォーマットも熟知していないと出来ません。 要はハッカーみたいなスキルがないと無理です。

Akira0113
質問者

お礼

回答ありがとうございます! ソースコードはありません。 それがあればどこをいじればいいのか何となくわかるのですけど 逆アセンブルしながらデバッグするフリーソフトで動かしてみたのですけど なにか特殊な感じらしく、コードの解析が終わる前にソフトが実行されてしまい 1行ずつ実行してみるコトが出来ないのと 自分の使ってみたフリーソフトだと、2個目を起動しようとすると1個目が強制終了されてしまうので 3個起動してみることが出来ないのでもし1行ずつ実行できてもダメかなと・・・ 動いたプログラムを終了させると逆アセンブルされたソースコードが表示されたのですが なんとなく追っかけていっても、callでMutexとかを呼び出してる場所が見つかりませんでした。 ちなみにバイナリエディタで開くと、アスキーコードでMutex関係の関数?の文字列がいくつかありました。

  • nazotarou
  • ベストアンサー率46% (27/58)
回答No.4

mutexって、アカウントをこえてダメだっけ? Win のアカウントを作って、別のユーザーで実行?だっけ? これで実行してみるとか。 バイナリは、詳しくないから、 バイナリエディタで開いて、ダメもとでそれっぽい所を変更してみるか、 デコンパイラツールで、ソースに戻すかかな? どちらにせよ、アプリもわからなければ、手が出せません。

Akira0113
質問者

お礼

回答ありがとうございます。 そのソフトをリネームするとそれぞれが3個まで起動するのですけど そのソフト自体が他のソフトから呼ばれる形で起動するのでダメでした。 バイナリで開いて1日にらめっこしていたんですけど、 それらしいところすらさっぱりわかりませんでした。

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

バイナリエディタで可能といえば可能ですが 簡単にできるかどうかとなると、この質問している時点で難しいかと思います。 手順としては#2の方がおっしゃってる通りなのですがマシン語がわかるという必須条件がついてきます。 もしソースコードがあるならそれを修正して再コンパイルした方が簡単です。 ただ上記は単純に起動数制限してある場合での話で、 プログラムの構造的問題で起動数の制限してる場合にはその限りではありません。

Akira0113
質問者

お礼

回答ありがとうございます! ソースコードは無いです。 単純に直せるとは思うのですが、バイナリを見てもちんぷんかんぷんなので・・・ 一応アスキーコードで Mutexという文字列は何個かみつけたのですけど 自分にはそれが精一杯でした。

  • chie65535
  • ベストアンサー率43% (8525/19377)
回答No.2

>VC++ mutex で排他制御を行っていることまではわかったのですが 起動時にmutexカウントが3以上だったら警告して終了、さもなければ、mutexカウントをカウントアップし、終了時にmutexカウントをカウントダウンしている筈です。 C言語開発ツールなどに付属しているデバッガを起動して、対象プロセスにアタッチして、メッセージが出ている状態でプロセスを一時停止させ「呼び出し元に戻るまで実行」などで実行トレースすれば「カウンタが3以上になっているかどうかコンペアして条件分岐命令で飛び先を変えている部分」が見付かります。 そこが見付かったら、コンペアする数字を書き換えるか、条件分岐命令を無条件分岐命令に書き換えれば良いでしょう。 書き換えは、バイナリエディタ等で行って下さい。

Akira0113
質問者

お礼

回答ありがとうございます! 僕自身プログラムとかわからないのでC言語の開発ツールとか持ってないのですけど デバッガというモノはフリーソフトでもありますでしょうか? バイナリエディタはわかるので、デバッガというのをもっとよく調べてみます!

回答No.1

> バイナリエディタでこのソフトの中身を書き換えて同時起動の回数を変えることは出来ますでしょうか? 出来ます。 > また、出来る場合はどこをどのように変えればいいかというのは簡単にわかるものでしょうか? ソースコードを見ればわかります。

Akira0113
質問者

お礼

回答ありがとうございます! ソースコードとはバイナリで開いた時の数字の羅列のことでしょうか? プログラミングとか全くわからない僕のような人でも 簡単にわかりますか?

関連するQ&A

  • スレッドにて同一メモリの書き込み、読み取り

    同一メモリに対してアクセスするスレッドA、Bがあった場合 同時書き込みをする様な処理については、間違いなく 排他制御が必要なのはわかっております。 1)一方が書き出しのみ、一方が読み取りのみの場合にもやはり、   排他制御は必須と思っていいのでしょうか? 2)また、排他制御について、 CriticalSection Mutex 上記くらいしか知らないのですが、 最も高速に動作するという事を考えた場合、どれがいいのでしょうか? (上記以外の別の仕組みがあれば教えて下さい。) 環境はVC6です。 よろしくお願いします。

  • 1台のServerで複数のコンピューター名でソフトを同時起動する方法?

    リモートデスクトップ系のソフトを使用してサーバーにてソフトウェアを同時起動するに際しての質問です。 ServerOS WINDOWS2003server    DB Microsoft SQL Server2000 ClientOS Windows2000 or xp 自社で開発したDB系ソフトを同時起動するのに、排他処理をコンピュータ名で判断させている為に同時に起動すると排他処理が効かずデータが壊れてしまいます。 そこで設計からやり直すと、2ヶ月程度の工数が発生してしまう為、OS側でコンピューター名を切り替えながらソフトを同時起動させる方法が無いかと調査しているのですが、なかなかたどり着けません。 もし、そのような方法があればお教えいただければと思います。 宜しくお願いします。

  • Mutexでのexeの重複実行

    Mutexでのexeの重複実行 実行プログラムにMutexを使用して重複起動を防止しました。 目的は同じプログラムをn個実行はするが、同時実行は許可したくないためです。 この場合exeはいくつでも起動できるのでしょうか? またexeの実行順序はどうなるのでしょうか?(起動した順なのか、Mutexの解放を検知した順なのか) 本来の目的とは違うのかもしれませんが、このような使用もありかな?と考えました。 よろしくお願いいたします。

  • ソフト毎にユーザーアカウント制御の無効化

    VISTAのユーザーアカウント制御についてお聞きします。 稀に、立ち上げる度に「許可する」を選ばないと起動出来ないソフトがありますが、 全体の設定で無効にするのではなく、個別のソフトごとにユーザーアカウント制御の無効化は出来ないのでしょうか?

  • バイナリエディターのどこにアドレスを・・・

    ただ今、ゲームPROGを改造しようと調べてます。 バイナリエディターで指定のアドレスに入力をするのはわかっているのですが、実際にバイナリエディターを起動させアドレスまではたどりつきますが入力がわかりません。初歩的な質問ですがよろしくお願いします。 具体的には00001304B4 6C→00001304B4 FFに変更するだけなのですが、エディターで00001304のアドレスにカーソルを持っていくのですがB4以降の入力がわかりません。エディターは”Quick Be”を使用しています。http://www.nemu.to/tool/edit_binary.htm 説明不足の部分もありますがよろしくお願いします。

  • 起動中のプロセスのメモリを書き換えるには

    フリーソフトを使用していて、アプリケーション終了時に毎回作者のHPが表示される。 ollyやバイナリエディタで編集すると、起動時にエラーが出て起動できなくなってしまう。 なので、実行中に書き換えるしかないのですが、この場合どのようなプログラムを書けば良いのでしょうか・・・。 C#での参考URL、または具体的なコードを教えて頂きたいです。 ※カテゴリにC#がなかったのでC++にしてます。

  • 自作のソフトが起動しない

    Visual Studio 6.0(VC++ 6.0)使っています。 業務用として使用している自作のソフトが起動しないので質問させて頂きました。   以前は容量の多いPCにVisual Studio 6.0をフルインストールして『自作ソフト.exe』を起動していました。   しかし今回は容量の少ないシリコンディスク(2GB)のFAタイプPCでこの『自作ソフト.exe』使用したいのですが、 Visual Studio 6.0をインストールするほど容量が確保できないため、とりあえずそのまま『自作ソフト.exe』を起動したところ、 アプリケーションエラーが発生しソフトが起動しませんでした。 エラー内容は 「エラーが発生したので『自作ソフト.exe』を終了します。 プログラムをもう一度開始する必要があります。」 という表示が出てきました。 ただし、Visual Studio 6.0をインストールした普通のPCでは、この『自作ソフト.exe』は問題なく起動します。   Visual Studio 6.0をインストールしなくても、この『自作ソフト.exe』を起動する方法はないでしょうか?   この『自作ソフト.exe』についてですが、私が入社する前からあったソフトで、ソフトの中身は理解しておらず、しかもこのソフトを作った人がすでに会社辞めてしまってるのでソフトの中身を改造するという事が困難な状況です。   私はこのソフトを起動した状態で使用する立場ですが、ソフトの作成レベルはVisual Studio 6.0を起動してもせいぜいビルド(リビルド)ぐらいしか出来ません ちなみにOSはWindows2000 SP4です。   つたない文章ですが、どうかよろしくお願い致します。  

  • Excelを起動したときにVBE(Visual Basic Editor)も同時に起動するようにするにはどうすればよいのでしょうか?

    Excelを起動したときにVBE(Visual Basic Editor)も 同時に起動するようにするにはどうすればよいのでしょうか? 使用OS:Windows XP 使用ソフト:Microsoft Excel 2003 ご存知の方がおられましたらご回答をよろしくお願いします。

  • vistaでバイナリ

    strlingなどをつかって今までバイナリの編集をしていたのですがxpからvistaにしたらどのバイナリエディタでも編集禁止が解除できなくなり編集できなくなってしまいました。 自分は管理者ですがユーザーアカウント制御を無効化すればできるのですが毎回この作業をするのもかなり手間です。 なにかユーザーアカウントを無効にしないでもできるよい方法はないでしょうか? またはvistaでも編集できるソフトがあるのでしょうか? よろしくお願いします。

  • 時計のずれを修正するフリーソフト

    iネッ時計 - インターネット時刻補正 というソフトを使っているのですが、 OSがVistaなので、ユーザーアカウント制御が働いて、パソコンを起動するたびに「許可」を押さないといけないので不便です。 ユーザーアカウント制御を無効にすれば良いのですが、それは不安なので避けたいです。 何か良い方法、良いフリーソフトはありませんでしょうか。