X



ゲームのプログラムの逆コンパイルってもっと進化しないの?
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん必死だな
垢版 |
2021/03/12(金) 11:29:13.00ID:ddM6eVjHa
変数名やコメントなんかも失われててもゲーム内容から判断して
ある程度自動でそれっぽいの付けられそうだと思うが
0002名無しさん必死だな
垢版 |
2021/03/12(金) 11:30:51.64ID:x4EuEQhh0
最適化でコードの構造の3割くらいは消える上に、
オリジナルのソースコードから見てスパゲティされるから
絶望的に不可能

コンパイラのバージョンや、コード行数でも、ガンガン変化してくしな
0003名無しさん必死だな
垢版 |
2021/03/12(金) 11:31:30.22ID:JkO/ZVWf0
そんなことして何すんねん
それっぽい変数名なんか自動で付くわけねえだろアホか
お前アセンブラもマシン語も何も知らんだろw
0004名無しさん必死だな
垢版 |
2021/03/12(金) 11:33:20.70ID:fKlfw+S20
今時のコンパイラは最適化や並列化が優秀だから、バイナリからソース復元すると変態コードになると思うぞ
料理から元の材料に復元するぐらい無理
0005名無しさん必死だな
垢版 |
2021/03/12(金) 11:34:22.33ID:ddM6eVjHa
>>3
復元は無理でも意味がわかる変数名にするのは機械側でも出来るだろ
0006名無しさん必死だな
垢版 |
2021/03/12(金) 11:35:15.68ID:ddM6eVjHa
>>4
料理の完成品から材料含めたレシピ作るのは出来そうだけどな
0007名無しさん必死だな
垢版 |
2021/03/12(金) 11:35:46.37ID:x4EuEQhh0
>>5
コンパイル〜アセンブルされた結果の
スタックの使われ方と、処理コード がどうなってるか見て絶望するが良い
0008名無しさん必死だな
垢版 |
2021/03/12(金) 11:36:27.02ID:JkO/ZVWf0
>>5
その意味ってなんだよ?
サブルーチンのローカル変数にworkて付けたり
イテレータにiて付けたりする程度なら出来るけどその程度やろ
例えば画面のヒットポイントにhpとか割り振るのはかなり無理あると思うが
0009名無しさん必死だな
垢版 |
2021/03/12(金) 11:39:10.56ID:ddM6eVjHa
>>8
機械側で自動的にhpってつけるの技術的にそんな無理でもないのでは?
0010名無しさん必死だな
垢版 |
2021/03/12(金) 11:40:58.42ID:JkO/ZVWf0
>>9
サブルーチンとかなければな
>>7の書いてるスタックとか意味がわからんならもうやめとけ
0011名無しさん必死だな
垢版 |
2021/03/12(金) 11:42:35.37ID:oeceLe1e0
プロの料理人が食べれば作り方や材料の想像は付く
プロのプログラマがゲームを遊べばアルゴリズムやデータ構造は想像が付く
それをAIで再現することはある程度可能だろうが逆コンパイルした結果から変数の意味を理解するのは難しいわ
大量のデータから機械学習させれば単純な変数(ループ変数とか)くらいは分かるやろうけどそれ以上はな
そもそも需要がないから研究する人もいないだろう
0012名無しさん必死だな
垢版 |
2021/03/12(金) 11:43:23.25ID:8KlOsFDDd
>>6
コーラやケンタッキーの粉のレシピが再現出来てないから限界あるだろうね
0013名無しさん必死だな
垢版 |
2021/03/12(金) 11:43:25.13ID:hNAci7Phd
何で変数の名前だけわかれば全部解決すると思えるのか
正直言ってることが小学生以下のレベルなんでもう黙っといたほうがいいよ
0014名無しさん必死だな
垢版 |
2021/03/12(金) 11:49:21.47ID:AXbTBoMaa
そもそも容量対策に使わなくなったフラグ流用したとして
汎用フラグ1って名前ついてなんの意味があるのか
そんな例外ばかりになって結局意味ないねで終わる
インターフェース以外信用できない
0015名無しさん必死だな
垢版 |
2021/03/12(金) 11:50:13.62ID:ddM6eVjHa
>>13
変数だけでもどういう役割か分かればかなり理解しやすくなると思うが
0016名無しさん必死だな
垢版 |
2021/03/12(金) 11:51:20.34ID:xIfsG/Ke0
まずゲーム内容ってなんだよって話だわな
機械はそんな人間様の勝手に決めたルールなんて知りませんがな
0018名無しさん必死だな
垢版 |
2021/03/12(金) 11:54:20.96ID:IkJ5YfjZ0
無数に用意したオリジナルのソースコードで何度も答え合わせできたら変数名を予測するプログラムも進化するかもよ
1は産業スパイから始めよう
0019名無しさん必死だな
垢版 |
2021/03/12(金) 11:55:39.15ID:JkO/ZVWf0
上にも書いたけどマシン語とか全く知らなそうだし
インタープリターで動いてると思ってんのかねえ
哀れだねえ
現場なら口も聞きたくないレベルe
0020名無しさん必死だな
垢版 |
2021/03/12(金) 11:55:55.58ID:46FujqGD0
プログラムもAIのこともわからないとこういう発想になるんだな
0021名無しさん必死だな
垢版 |
2021/03/12(金) 11:58:22.62ID:46FujqGD0
ソースコードから年収査定するAIを真に受けて銀行のコードアップロードした超弩級のバカもいたし
まあ超弩級のバカだからこそ意味のないコードだったみたいだが
0022名無しさん必死だな
垢版 |
2021/03/12(金) 11:58:24.72ID:ddM6eVjHa
>>19
マニアックな知識を知ってるからってそれ知らない人を軽視する人になりたくないね
今はAIが凄くてたった一枚の顔写真から全身を復元して顔動かしたり踊らせたり出来るんだから、
ゲームのプログラムだってそういう復元出来てもおかしくないでしょ
0024名無しさん必死だな
垢版 |
2021/03/12(金) 12:00:46.77ID:mOjLoqhS0
AIにバックマンを何時間もやらせて学習させて、パックマンもどきを作らせたって記事が去年あたりにあったな

古いソフトの解析するくらいならそっちの方が良いのかもね
まあ、それで完全再現は不可能だと思うし、商品化できるレベルに達するのに何年かかるのかって感じだけど
0025名無しさん必死だな
垢版 |
2021/03/12(金) 12:00:51.40ID:r13Jv1Si0
F-ZEROをSFCエミュレーターで動かしたときはどの変数が何に影響してるのか割と簡単に分かったな
PS2のGTで同じ事やろうとしたらそこらへんの機能貧弱で難しかったわ
0026名無しさん必死だな
垢版 |
2021/03/12(金) 12:04:21.05ID:cnOGy5bDM
.exeから復元したいってこと?
じゃあシンボルファイルあれば復元できると思うよ
コメントは知らんけど
0027名無しさん必死だな
垢版 |
2021/03/12(金) 12:06:15.25ID:r13Jv1Si0
>>24
思ったより進んでてびっくりしたわ
この前までは単にパックマンやらせて勝てるだけだったのに
0028名無しさん必死だな
垢版 |
2021/03/12(金) 12:06:30.24ID:uscW9f+T0
今画面に表示されているこの数字がメモリ上のどこかにあるか、あったとしてそれがどうやっていじられてるか
みたいなとこから解析していけば手はあるだろうと思う
0029名無しさん必死だな
垢版 |
2021/03/12(金) 12:08:15.03ID:x4EuEQhh0
>>19
おそらくは、PAR なんかの古い 「固定アドレス」 式か
最近のであれば 「ヒープ解析してクラス構造などでポインタを特定できるパターン特定の参照アドレス」 がわかるのあから

というくらいの知識ではないかと想像する

ゲームの変数って1000個もないでしょ? くらいのノリ
0030名無しさん必死だな
垢版 |
2021/03/12(金) 12:08:39.71ID:37z/fGb6M
画面上の数字が何を意味しているのかを機械的に判断して、人間の概念と一致させるところがまず凄まじく困難
0031名無しさん必死だな
垢版 |
2021/03/12(金) 12:09:16.39ID:r13Jv1Si0
>NVIDIAの研究チームは、バンダイナムコ研究所から提供されたパックマンのゲームプレイムービー約5万本と、ゲーム操作に対応したキー入力のデータをGameGANに学習させました。この学習はNVIDIA Quadro GV100 GPU4基を搭載したNVIDIAのAI用ワークステーション「NVIDIA DGXシステム」を使い、4日間かけて行われたそうです。
数年がかりかと思ったらたった4日ってのが凄い
これ初代テイルズとかでもAIが1年未満で作れるんじゃないか
0032名無しさん必死だな
垢版 |
2021/03/12(金) 12:09:20.67ID:2lbbYakeM
>>22
お前は未成年の子供か?
こんなことしてないで学校行って勉強しなさい
0033名無しさん必死だな
垢版 |
2021/03/12(金) 12:09:45.17ID:JkO/ZVWf0
>>29
そもそもそこらのゲームのロジックなんてリバースやってまで見てみたいのねえけどなw
0034名無しさん必死だな
垢版 |
2021/03/12(金) 12:10:03.76ID:x4EuEQhh0
>>30
昔と違って、今はその数字すら、三角形2つ組み合わせたポリゴン と、そのポリゴンに張り付けるテクスチャと、その uv 座標指定

という間接に間接を重ねた結果の出力やからねぇ
0036名無しさん必死だな
垢版 |
2021/03/12(金) 12:11:45.82ID:ddM6eVjHa
>>35
ソースコードを喪失してしまったゲームを解析とかする際に助かるだろ
0037名無しさん必死だな
垢版 |
2021/03/12(金) 12:12:29.46ID:x4EuEQhh0
>>31
入力変数がドットの数 (256x244) で色56色だから可能
あと画面のパターンが1種類(ステージが複数あるけど)しかない

ノイズデータが全くないので、全てを 「学習して良い入力情報」 として扱えるから可能なこと
0038名無しさん必死だな
垢版 |
2021/03/12(金) 12:13:35.54ID:ddM6eVjHa
AIにマシン語見せてどうこうさせるよりゲームそのものをプレイさせた方がよりまともに復元できるってこと?
0039名無しさん必死だな
垢版 |
2021/03/12(金) 12:13:56.33ID:cnOGy5bDM
グラフィックパイプラインはGPUプロファイラーからある程度リバースエンジニアリング出来るで
ただ処理を真似するのは簡単だけど、ゲーム制作で需要なのはそこじゃなくて制作フローの方やからなぁ
0040名無しさん必死だな
垢版 |
2021/03/12(金) 12:14:39.27ID:46FujqGD0
コーエーあたりは16bit機の単純なゲームの時代からもうCで組んでるしプレイヤーに見せてるパラメーターが大量にある超イージーモードだから
できそうとか言うなら自分で試せや
0041名無しさん必死だな
垢版 |
2021/03/12(金) 12:15:18.88ID:r13Jv1Si0
>>37
なるほど
でも仮にテイルズみたいなある程度高度なゲームやらせたらどういうものを作ってくれるかはちょっと興味ある
違ってたら違ってたで面白い物になりそう
0042名無しさん必死だな
垢版 |
2021/03/12(金) 12:17:39.96ID:37z/fGb6M
RPGをそのまま食わせたらアイテムメニューの遷移すら再現できないだろうな
0043名無しさん必死だな
垢版 |
2021/03/12(金) 12:18:36.63ID:7OPMH+9E0
2050年ぐらいのAIなら可能だろうな
0044名無しさん必死だな
垢版 |
2021/03/12(金) 12:18:50.48ID:1kONrFwEa
当時の資料がないから移植できないとか、だから頑張ってリメイクしましたとかそういうの何とかならんの
0045名無しさん必死だな
垢版 |
2021/03/12(金) 12:19:55.26ID:26hHrLXwF
>>41
RPGはゴール設定がきつい
基本的に機械学習って超絶マンパワーによる総当たりだから
マップの隅々まで回って全てのキャラクターに話しかけて…を繰り返す

戦闘の解析は楽しそうだけどね
0046名無しさん必死だな
垢版 |
2021/03/12(金) 12:20:06.64ID:50g/jiAIa
そもそも、なんのために逆コンパイルすんの?
自社のゲームならソースあるでしょ。
他社のソフトを勝手に解析するのは犯罪じゃなかったっけ?
0047名無しさん必死だな
垢版 |
2021/03/12(金) 12:20:27.26ID:x4EuEQhh0
>>42
マップ移動を除けば

という条件なら DQ1 なら機械学習でパターン網羅できると思う

マップ移動程度の画面変化でも、それを全部キッチリパターンとして学習するのは不可能に近い
0048名無しさん必死だな
垢版 |
2021/03/12(金) 12:22:56.72ID:UIW/Ti4ad
>>5
一体いつから────────
そもそも元コードの時点で変数名が意味解るようになっていると錯覚していた?
0049名無しさん必死だな
垢版 |
2021/03/12(金) 12:23:11.58ID:x4EuEQhh0
>>45
「クリアできちゃう機械学習AI」 については
2Dドットなら割と楽やで

そのゲームのクリアまでのプレイデータを10,000種類くらい食わせればいける

但し、NPCの会話とイベントの紐づけ については、数十万パターン必要とされる学習データに遠く及ばないから無理
0050名無しさん必死だな
垢版 |
2021/03/12(金) 12:23:50.36ID:r13Jv1Si0
調べたら同じ手順でDoomも再現できるっぽいから結構使えるんじゃないかな
0052名無しさん必死だな
垢版 |
2021/03/12(金) 12:27:56.88ID:46FujqGD0
つーかなんでスレタイが逆コンパイルなのに変数に自動で名前をつけるとかいうレベルになってんの
そもそも逆コンパイルと逆アセンブルもわからないレベルか
0053名無しさん必死だな
垢版 |
2021/03/12(金) 12:31:31.02ID:zun7jexu0
目的がよくわからんのだけど
逆コンパイル進化しまくったらチートされ放題になってゲーム業界が終わるんじゃないのか?
0055名無しさん必死だな
垢版 |
2021/03/12(金) 12:34:23.78ID:+6Y467sRF
1から作っ方が早い
0056名無しさん必死だな
垢版 |
2021/03/12(金) 12:48:51.66ID:9HYU2P4O0
>>36
そんな古いゲームそもそもコンパイラで作られてないよ
同じメモリ使い回してフラグ管理とかざらだから、ムリに逆コンパイルなんてなんてしたら余計にわかりづらくなるだけ
0057名無しさん必死だな
垢版 |
2021/03/12(金) 12:51:03.63ID:Uwv6yuiL0
そんな技術あったら中国にぶっこ抜きで盗まれるだけだから無い方がいいんじゃないか
0059名無しさん必死だな
垢版 |
2021/03/12(金) 12:58:29.34ID:F6Y1TLiI0
元のプログラムよりずっと煩雑なものになら出来なくもないんじゃね
0060名無しさん必死だな
垢版 |
2021/03/12(金) 13:04:44.59ID:vyEvhpI90
何が言いたいのかわからんスレだな
そもそも他者がやれば違法行為だろ
自社ならソースコード見ればいい
金型じゃあるまいし、わざわざ捨てる意味の無いものだ
とくにこんなご時世なら分散保存で場所も取らねぇ
0061名無しさん必死だな
垢版 |
2021/03/12(金) 13:08:19.76ID:CdjRiJgQM
.NETのディスコンパイラ使ってみたけど
普通に読めるレベルのソースが出てきて感心したな
Z80の頃なんて文字列とプログラムの区別も出来ないレベルたったのに
0062名無しさん必死だな
垢版 |
2021/03/12(金) 13:10:42.06ID:Vr7TLLEta
基本、メモリから読んで弄って戻すだけの繰り返しだし
機能を類推して意味を付けるなんて無理だぞ
0063名無しさん必死だな
垢版 |
2021/03/12(金) 13:18:42.53ID:46FujqGD0
技術的な興味ですらないのは知識量から明らかだし
アフィの情報乞食でしょ
0065名無しさん必死だな
垢版 |
2021/03/12(金) 14:15:33.72ID:0OSslrfZH
>>46
そう思うだろうが、なぜか自社に過去のゲームのリソースが残ってなくてリメイクと作るに作れないゲームがあったりする
0067名無しさん必死だな
垢版 |
2021/03/12(金) 14:34:19.10ID:x4EuEQhh0
>>56
ゴリ押しの機械学習の場合は、
他のアドレスの状態(状態やモード、いわゆるコンテキスト)も含めて因果関係を見つけるから、
ファミコン、スーファミレベルなら実はクリアできたりする(この時代は固定アドレスなので)
0068名無しさん必死だな
垢版 |
2021/03/12(金) 14:35:55.71ID:x4EuEQhh0
>>46
解析自体は著作権法でも禁止されてない合法行為

アプリ使用する利用規約において、追加の契約条項として提供側が設定することがある行為
0069名無しさん必死だな
垢版 |
2021/03/12(金) 14:40:11.66ID:x4EuEQhh0
>>61
.Net はコンパイル時に基本の処理はするけど 「最適化」 はほとんどしない
ジャストインタイム(実行時)に、ゴリゴリのコンパイラで実行環境の機械語にして、その環境で使える最適化を入れる

だから定数や宣言位置の巻き上げ以外は、まんまのソースに戻せるように全情報を敢えて残してる
(変数名や型情報なんかも、実行時に Marshal 処理で全部拾えるレベルで残ってる)
0071名無しさん必死だな
垢版 |
2021/03/12(金) 16:18:28.03ID:QJ7dnIHP0
素のCならまだしも現代のC++とか人間を一瞬で発狂させるスパゲティ的最適化が掛かってるから無理です
0073名無しさん必死だな
垢版 |
2021/03/12(金) 16:21:24.40ID:YVnGOfgvM
マイナーなところではDelphiもリソースが残ってたりする
まあ、これでゲームソフト作らんやろな
0074名無しさん必死だな
垢版 |
2021/03/12(金) 16:28:32.92ID:QJ7dnIHP0
Delphiで作られたゲームはHellSinkerくらいしか知らんな
0075名無しさん必死だな
垢版 |
2021/03/12(金) 16:29:09.75ID:13oUZgtd0
リバースエンジニアリングよね
0076名無しさん必死だな
垢版 |
2021/03/12(金) 16:32:11.83ID:x4EuEQhh0
>>73
プログラミング言語としての命令後や言語構文が違うだけで、
実装自体はまんま同じだからな (同じ人が作ってる)

Delphi で起こるバグは、C# でも起こる
0077名無しさん必死だな
垢版 |
2021/03/12(金) 16:36:13.40ID:eKyRiFgW0
別にゲームのコンセプト分かってればオリジナルのソース復元しなくても
目コピでいいんじゃね?
ローグだってオリジナルは失われてて
ローグライクやローグライトだってローグクローンを参考にしてる訳でしょ
0078名無しさん必死だな
垢版 |
2021/03/12(金) 18:56:41.26ID:V2pnygGo0
>>77
結局オリジナルのUNIX版のソースコードも見つかって公開されてるので
今はオリジナルも参照できるよ
やってる奴がいるのかどうかは知らんが
0080名無しさん必死だな
垢版 |
2021/03/12(金) 19:40:45.69ID:eKyRiFgW0
>>78
あらそうなのー
オリジナルとクローンのソース比較してみてどっちの方が最適化されてるとか
何か発見とかあったんかな
0081名無しさん必死だな
垢版 |
2021/03/12(金) 20:05:50.40ID:zMtobd1UF
実際逆コンパイルやったことあるけど、
中途半端に読めるから全部テストし直しさ
作り直したほうが早かったよ
0082名無しさん必死だな
垢版 |
2021/03/12(金) 20:38:36.27ID:mgpSvZsZ0
X68kの場合はアセンブラでプログラム作るのが普通だったし、高性能な逆アセンブラもあって解析しやすかったな
シャープもOSの無償公開と解析・改変を許可しているし
0083名無しさん必死だな
垢版 |
2021/03/13(土) 02:04:41.35ID:SnU8OHEP0
てない事に気がつくべきだな
0084名無しさん必死だな
垢版 |
2021/03/13(土) 07:10:57.79ID:eGTF/1990
最適化でかなりのソース情報が失われて、更に最近は追加で難読化したりで意味のわかるコードに戻すのは絶望的。
0085名無しさん必死だな
垢版 |
2021/03/13(土) 09:55:43.94ID:R6xhMn1+a
じゃあ元に戻すことを意識して最適化するかっていうとそれはおかしいもんね。
基本的にソースはちゃんと保管すべきで、第三者が勝手に見ることは考える必要はない。
0086名無しさん必死だな
垢版 |
2021/03/13(土) 10:12:56.16ID:FFcezcc00
ゲームみたいな一点もの逆コンパイルする意味ねーだろ
モデルとかモーションとかデータだけぶっこ抜ければ十分だろ
0087名無しさん必死だな
垢版 |
2021/03/13(土) 10:36:44.02ID:hjCHfRtV0
スーファミのハックロム制作を16年以上続けてきたけど
snes9xdebuggerっていうエミュでプレイをトレースして
生成されるテキストを解析して改造している。
0088名無しさん必死だな
垢版 |
2021/03/13(土) 14:26:30.81ID:mulWZCT+0
>>82
いきなり大昔の話してそれが何だ?っていう
今日日ゲームをアセンブラで書くなんて迷惑でしかない、
0091名無しさん必死だな
垢版 |
2021/03/13(土) 21:20:11.22ID:JK9Eb/8F0
よく知らんけどツクールとかああ言うのはそれに近いんじゃないの?
0092名無しさん必死だな
垢版 |
2021/03/14(日) 00:04:08.74ID:YxuRQI0XM
モデルぶっこぬきはまだしも
そこまで行くとただのハッキングじゃん
0093名無しさん必死だな
垢版 |
2021/03/14(日) 00:45:25.78ID:egiL8GPo0
ハックロムだからハッキング
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況