ゲームのプログラムの逆コンパイルってもっと進化しないの?
■ このスレッドは過去ログ倉庫に格納されています
変数名やコメントなんかも失われててもゲーム内容から判断して
ある程度自動でそれっぽいの付けられそうだと思うが 最適化でコードの構造の3割くらいは消える上に、
オリジナルのソースコードから見てスパゲティされるから
絶望的に不可能
コンパイラのバージョンや、コード行数でも、ガンガン変化してくしな そんなことして何すんねん
それっぽい変数名なんか自動で付くわけねえだろアホか
お前アセンブラもマシン語も何も知らんだろw 今時のコンパイラは最適化や並列化が優秀だから、バイナリからソース復元すると変態コードになると思うぞ
料理から元の材料に復元するぐらい無理 >>3
復元は無理でも意味がわかる変数名にするのは機械側でも出来るだろ >>4
料理の完成品から材料含めたレシピ作るのは出来そうだけどな >>5
コンパイル〜アセンブルされた結果の
スタックの使われ方と、処理コード がどうなってるか見て絶望するが良い >>5
その意味ってなんだよ?
サブルーチンのローカル変数にworkて付けたり
イテレータにiて付けたりする程度なら出来るけどその程度やろ
例えば画面のヒットポイントにhpとか割り振るのはかなり無理あると思うが >>8
機械側で自動的にhpってつけるの技術的にそんな無理でもないのでは? >>9
サブルーチンとかなければな
>>7の書いてるスタックとか意味がわからんならもうやめとけ プロの料理人が食べれば作り方や材料の想像は付く
プロのプログラマがゲームを遊べばアルゴリズムやデータ構造は想像が付く
それをAIで再現することはある程度可能だろうが逆コンパイルした結果から変数の意味を理解するのは難しいわ
大量のデータから機械学習させれば単純な変数(ループ変数とか)くらいは分かるやろうけどそれ以上はな
そもそも需要がないから研究する人もいないだろう >>6
コーラやケンタッキーの粉のレシピが再現出来てないから限界あるだろうね 何で変数の名前だけわかれば全部解決すると思えるのか
正直言ってることが小学生以下のレベルなんでもう黙っといたほうがいいよ そもそも容量対策に使わなくなったフラグ流用したとして
汎用フラグ1って名前ついてなんの意味があるのか
そんな例外ばかりになって結局意味ないねで終わる
インターフェース以外信用できない >>13
変数だけでもどういう役割か分かればかなり理解しやすくなると思うが まずゲーム内容ってなんだよって話だわな
機械はそんな人間様の勝手に決めたルールなんて知りませんがな 無数に用意したオリジナルのソースコードで何度も答え合わせできたら変数名を予測するプログラムも進化するかもよ
1は産業スパイから始めよう 上にも書いたけどマシン語とか全く知らなそうだし
インタープリターで動いてると思ってんのかねえ
哀れだねえ
現場なら口も聞きたくないレベルe プログラムもAIのこともわからないとこういう発想になるんだな ソースコードから年収査定するAIを真に受けて銀行のコードアップロードした超弩級のバカもいたし
まあ超弩級のバカだからこそ意味のないコードだったみたいだが >>19
マニアックな知識を知ってるからってそれ知らない人を軽視する人になりたくないね
今はAIが凄くてたった一枚の顔写真から全身を復元して顔動かしたり踊らせたり出来るんだから、
ゲームのプログラムだってそういう復元出来てもおかしくないでしょ >>22
ごめんプロだから
現場でアホなんて相手してられんのよ AIにバックマンを何時間もやらせて学習させて、パックマンもどきを作らせたって記事が去年あたりにあったな
古いソフトの解析するくらいならそっちの方が良いのかもね
まあ、それで完全再現は不可能だと思うし、商品化できるレベルに達するのに何年かかるのかって感じだけど F-ZEROをSFCエミュレーターで動かしたときはどの変数が何に影響してるのか割と簡単に分かったな
PS2のGTで同じ事やろうとしたらそこらへんの機能貧弱で難しかったわ .exeから復元したいってこと?
じゃあシンボルファイルあれば復元できると思うよ
コメントは知らんけど >>24
思ったより進んでてびっくりしたわ
この前までは単にパックマンやらせて勝てるだけだったのに 今画面に表示されているこの数字がメモリ上のどこかにあるか、あったとしてそれがどうやっていじられてるか
みたいなとこから解析していけば手はあるだろうと思う >>19
おそらくは、PAR なんかの古い 「固定アドレス」 式か
最近のであれば 「ヒープ解析してクラス構造などでポインタを特定できるパターン特定の参照アドレス」 がわかるのあから
というくらいの知識ではないかと想像する
ゲームの変数って1000個もないでしょ? くらいのノリ 画面上の数字が何を意味しているのかを機械的に判断して、人間の概念と一致させるところがまず凄まじく困難 >NVIDIAの研究チームは、バンダイナムコ研究所から提供されたパックマンのゲームプレイムービー約5万本と、ゲーム操作に対応したキー入力のデータをGameGANに学習させました。この学習はNVIDIA Quadro GV100 GPU4基を搭載したNVIDIAのAI用ワークステーション「NVIDIA DGXシステム」を使い、4日間かけて行われたそうです。
数年がかりかと思ったらたった4日ってのが凄い
これ初代テイルズとかでもAIが1年未満で作れるんじゃないか >>22
お前は未成年の子供か?
こんなことしてないで学校行って勉強しなさい >>29
そもそもそこらのゲームのロジックなんてリバースやってまで見てみたいのねえけどなw >>30
昔と違って、今はその数字すら、三角形2つ組み合わせたポリゴン と、そのポリゴンに張り付けるテクスチャと、その uv 座標指定
という間接に間接を重ねた結果の出力やからねぇ >>35
ソースコードを喪失してしまったゲームを解析とかする際に助かるだろ >>31
入力変数がドットの数 (256x244) で色56色だから可能
あと画面のパターンが1種類(ステージが複数あるけど)しかない
ノイズデータが全くないので、全てを 「学習して良い入力情報」 として扱えるから可能なこと AIにマシン語見せてどうこうさせるよりゲームそのものをプレイさせた方がよりまともに復元できるってこと? グラフィックパイプラインはGPUプロファイラーからある程度リバースエンジニアリング出来るで
ただ処理を真似するのは簡単だけど、ゲーム制作で需要なのはそこじゃなくて制作フローの方やからなぁ コーエーあたりは16bit機の単純なゲームの時代からもうCで組んでるしプレイヤーに見せてるパラメーターが大量にある超イージーモードだから
できそうとか言うなら自分で試せや >>37
なるほど
でも仮にテイルズみたいなある程度高度なゲームやらせたらどういうものを作ってくれるかはちょっと興味ある
違ってたら違ってたで面白い物になりそう RPGをそのまま食わせたらアイテムメニューの遷移すら再現できないだろうな 当時の資料がないから移植できないとか、だから頑張ってリメイクしましたとかそういうの何とかならんの >>41
RPGはゴール設定がきつい
基本的に機械学習って超絶マンパワーによる総当たりだから
マップの隅々まで回って全てのキャラクターに話しかけて…を繰り返す
戦闘の解析は楽しそうだけどね そもそも、なんのために逆コンパイルすんの?
自社のゲームならソースあるでしょ。
他社のソフトを勝手に解析するのは犯罪じゃなかったっけ? >>42
マップ移動を除けば
という条件なら DQ1 なら機械学習でパターン網羅できると思う
マップ移動程度の画面変化でも、それを全部キッチリパターンとして学習するのは不可能に近い >>5
一体いつから────────
そもそも元コードの時点で変数名が意味解るようになっていると錯覚していた? >>45
「クリアできちゃう機械学習AI」 については
2Dドットなら割と楽やで
そのゲームのクリアまでのプレイデータを10,000種類くらい食わせればいける
但し、NPCの会話とイベントの紐づけ については、数十万パターン必要とされる学習データに遠く及ばないから無理 調べたら同じ手順でDoomも再現できるっぽいから結構使えるんじゃないかな つーかなんでスレタイが逆コンパイルなのに変数に自動で名前をつけるとかいうレベルになってんの
そもそも逆コンパイルと逆アセンブルもわからないレベルか 目的がよくわからんのだけど
逆コンパイル進化しまくったらチートされ放題になってゲーム業界が終わるんじゃないのか? 結局 >>1 が何したいか分からんからどうにもならん >>36
そんな古いゲームそもそもコンパイラで作られてないよ
同じメモリ使い回してフラグ管理とかざらだから、ムリに逆コンパイルなんてなんてしたら余計にわかりづらくなるだけ そんな技術あったら中国にぶっこ抜きで盗まれるだけだから無い方がいいんじゃないか 元のプログラムよりずっと煩雑なものになら出来なくもないんじゃね 何が言いたいのかわからんスレだな
そもそも他者がやれば違法行為だろ
自社ならソースコード見ればいい
金型じゃあるまいし、わざわざ捨てる意味の無いものだ
とくにこんなご時世なら分散保存で場所も取らねぇ .NETのディスコンパイラ使ってみたけど
普通に読めるレベルのソースが出てきて感心したな
Z80の頃なんて文字列とプログラムの区別も出来ないレベルたったのに 基本、メモリから読んで弄って戻すだけの繰り返しだし
機能を類推して意味を付けるなんて無理だぞ 技術的な興味ですらないのは知識量から明らかだし
アフィの情報乞食でしょ >>46
そう思うだろうが、なぜか自社に過去のゲームのリソースが残ってなくてリメイクと作るに作れないゲームがあったりする >>56
ゴリ押しの機械学習の場合は、
他のアドレスの状態(状態やモード、いわゆるコンテキスト)も含めて因果関係を見つけるから、
ファミコン、スーファミレベルなら実はクリアできたりする(この時代は固定アドレスなので) >>46
解析自体は著作権法でも禁止されてない合法行為
アプリ使用する利用規約において、追加の契約条項として提供側が設定することがある行為 >>61
.Net はコンパイル時に基本の処理はするけど 「最適化」 はほとんどしない
ジャストインタイム(実行時)に、ゴリゴリのコンパイラで実行環境の機械語にして、その環境で使える最適化を入れる
だから定数や宣言位置の巻き上げ以外は、まんまのソースに戻せるように全情報を敢えて残してる
(変数名や型情報なんかも、実行時に Marshal 処理で全部拾えるレベルで残ってる) >>1
それ逆コンパイルって言うのか?
すごい違和感あるんだが… 素のCならまだしも現代のC++とか人間を一瞬で発狂させるスパゲティ的最適化が掛かってるから無理です マイナーなところではDelphiもリソースが残ってたりする
まあ、これでゲームソフト作らんやろな Delphiで作られたゲームはHellSinkerくらいしか知らんな >>73
プログラミング言語としての命令後や言語構文が違うだけで、
実装自体はまんま同じだからな (同じ人が作ってる)
Delphi で起こるバグは、C# でも起こる 別にゲームのコンセプト分かってればオリジナルのソース復元しなくても
目コピでいいんじゃね?
ローグだってオリジナルは失われてて
ローグライクやローグライトだってローグクローンを参考にしてる訳でしょ >>77
結局オリジナルのUNIX版のソースコードも見つかって公開されてるので
今はオリジナルも参照できるよ
やってる奴がいるのかどうかは知らんが >>78
あらそうなのー
オリジナルとクローンのソース比較してみてどっちの方が最適化されてるとか
何か発見とかあったんかな 実際逆コンパイルやったことあるけど、
中途半端に読めるから全部テストし直しさ
作り直したほうが早かったよ X68kの場合はアセンブラでプログラム作るのが普通だったし、高性能な逆アセンブラもあって解析しやすかったな
シャープもOSの無償公開と解析・改変を許可しているし 最適化でかなりのソース情報が失われて、更に最近は追加で難読化したりで意味のわかるコードに戻すのは絶望的。 じゃあ元に戻すことを意識して最適化するかっていうとそれはおかしいもんね。
基本的にソースはちゃんと保管すべきで、第三者が勝手に見ることは考える必要はない。 ゲームみたいな一点もの逆コンパイルする意味ねーだろ
モデルとかモーションとかデータだけぶっこ抜ければ十分だろ スーファミのハックロム制作を16年以上続けてきたけど
snes9xdebuggerっていうエミュでプレイをトレースして
生成されるテキストを解析して改造している。 >>82
いきなり大昔の話してそれが何だ?っていう
今日日ゲームをアセンブラで書くなんて迷惑でしかない、 >>87
FE聖戦は改造動画が多いな
そうやって作られてたのか よく知らんけどツクールとかああ言うのはそれに近いんじゃないの? モデルぶっこぬきはまだしも
そこまで行くとただのハッキングじゃん ■ このスレッドは過去ログ倉庫に格納されています