mallocを使うタイミング

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マナ

mallocを使うタイミング

#1

投稿記事 by マナ » 10年前

動的メモリ確保を行うmallocですがこれを使う場合いつ使うべきかを考えていました。
変な使い方をするとチータさんあたりにデーターの改ざんをされる恐れがあるため怖くて使いづらかったのですがこのタイミングなら問題ないか? を教ええてください

まずゲームの進行順はこのような感じだと思います
1・ゲームが開始したらメイン関数でゲーム全体の処理を書き各プログラム毎に進行を振り分ける
2・一プログラムに進行がきた時に初期化する
3・描画する
4・操作可能にする
5・別のプログラムに画面遷移する時に最後に終了処理をする。
6・ゲームを終了する。

そして、mallocを使うタイミングですが2の手順の時に動的メモリが必要なデーターを扱いたい場合、テキストファイル等に書き込んだゲームデータをロードしてmallocを使って作り出したメモリに書き込み。

4の手順でゲームを操作するごとにテキストファイル等に書き込み&セーブしていき

5の手順でfreeを使ってメモリを開放する。

っと言う手順であってますか?

こういう方法だとチーターさんあたりにデーターを改ざんされる恐れがあるなら教えてください。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: mallocを使うタイミング

#2

投稿記事 by みけCAT » 10年前

どういう方法を使っても、チーターさんあたりにデーターを改ざんされる恐れを0にはできないと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
usao
記事: 1887
登録日時: 11年前

Re: mallocを使うタイミング

#3

投稿記事 by usao » 10年前

説明されている 進行順 はそれだけ読んでも何が何だかですが,
とりあえずmallocを使うこととデータ改ざんされることとの因果関係がわからないので,
何をもってmallocの利用をためらわれているのかを説明された方がよいのではないでしょうか.

仮にメモリ確保方法によって何か改ざん難易度が変わる要素があるのだとしても
メモリ内容を書き換えるよりも
>テキストファイル等に書き込んだゲームデータ
の側を改ざんした方が手っ取り早い気がするけど……

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: mallocを使うタイミング

#4

投稿記事 by softya(ソフト屋) » 10年前

改ざんを気にするより、その時間をゲームを面白する方に回したほうがより建設的です。
課金ゲームでもないのなら、そんなに気を回して徒労だと思いますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

dic
記事: 657
登録日時: 13年前
住所: 宮崎県
連絡を取る:

Re: mallocを使うタイミング

#5

投稿記事 by dic » 10年前

「メモリ解析ツールをさけたい」ということでしょうか?

プロは、メモリ内も暗号化しているようです。
リアルタイムで暗号化しているようです。

とある退学生

Re: mallocを使うタイミング

#6

投稿記事 by とある退学生 » 10年前

しかし、その暗号化もいずれ解読されます。
セキュリティの技術はいたちごっこなのです。

マナ

Re: mallocを使うタイミング

#7

投稿記事 by マナ » 10年前

<退学生、dic、みけさん
つまりどのような方法をとっても改ざんされるので、重要なのは暗号化処理の変更を定期的にしろってことですね

<ソフト屋さん
その課金ゲームを作ろうとしてるのです
そのためセキュリティのことを考えつつゲーム作りしたほうがいいかと思っています

<usao
聞いた話だとチーターさん辺りは拡張期みたいなものをぶっさして、無理やり押し広げ(mallocを使ったデータだと容量を広げやすいから)、中に変なものを注入して(違法データを注入する)、おかしくなっちゃう(ウイルスに感染させたり、データを改ざんされたりしてゲームを乗っ取られる)から気をつけてね 

ってことだったのですが、そのためmallocを使うのを非常にためらってます。

その変なものをぶっさされる範囲がmallocを使ったデーターの範囲外ならいいのですが範囲内だったとしたら拡張されて、変なものを注射されたりしませんか? って事なのですがどうなのでしょうか?

一番いいのは私もチーターやハッカーとなってどうやったら相手のセキュリティを抜けて改ざんできるかを覚えればセキュリティ対策に強くなると思いますが、比重としては面白いゲームを作ろうという傾向の法が強いですよ(セキュリティ対策もやりたいのですが)

マナ

Re: mallocを使うタイミング

#8

投稿記事 by マナ » 10年前

忘れてました。

おかしくなってからは毒液を体内で生成(ウイルスやら違法データーをゲーム内部で生成)したあとで、まだ犯されてない人を見つけて放出(他を乗っ取るために行動して)して、私がしたわけじゃないのに私がやったことにされてしまい、アラブの石油王ぐらいなら何とかなるほどのお金をとられるとか言われました。

乗っ取った人が大企業やら国やら大規模組織に攻撃をして、私のせいにされたら非常に困ります。
って事ですね。

明らかに乗っ取った人が悪いのですが

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: mallocを使うタイミング

#9

投稿記事 by softya(ソフト屋) » 10年前

一言で言うと、ここで聞けることぐらいでは改ざんされるし乗っ取られるし、暗号は破られると思って下さい。
セキュリティの専門家をお金を出して雇ってセキュアなプログラムを構築するしか無いです。
もちろん市販ソフトでもクラックされるので、そう簡単な話でないことは想像できると思います。

【補足】
リスクのほうが高くつくと思えば、ソフトをリリースしないのも有力な選択肢です。
【補足の補足】
あるいは、広告収入だけに頼って課金をやめてしまえばいらぬ苦労はしなくて良いかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: mallocを使うタイミング

#10

投稿記事 by Dixq (管理人) » 10年前

まず、mallocとチートとの因果関係が分からないのでその点は省略します。

私の作った龍神録というゲームも、お金だけは改ざん出来ないようにチェックをかけていますが、
検索すればお金を99999999にする方法とか出てきます。
また、セーブデータを暗号化しても、実行ファイルを読まれて暗号化を吐き出す部分をスキップされてはおしまいです。
(実際龍神録もやられました)

暗号化暗号化と言ったって実行ファイルを読まれて改ざんされたら対策が非常に困難です。
私もセキュアなプログラムを構築することに時間を書けるくらいならゲームの品質をあげた方が良いと思います。

もしやりたいなら一つ効果的な対策があります。
まずメモリプールを作ります。
改ざんされたくない変数のアドレスを1フレームごとに毎回メモリプールからランダムに取ってきて、
毎回アドレスを変えます。
こうすることで 
http://dixq.net/g/h_10.html
 このようなメモリの絞り込みが防げて、ある程度改ざんが難しくなります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: mallocを使うタイミング

#11

投稿記事 by h2so5 » 10年前

そもそも課金システムのあるゲームの場合、重要な処理はサーバー側でやるのが普通だと思います。
クライアント側で対策してもあまり意味はないですよ。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: mallocを使うタイミング

#12

投稿記事 by ISLe » 10年前

クライアント側でのセキュアなプログラムというのは、OSをハッキングする際の踏み台にされるのを防ぐといった話だと思いますが。
「無理やり押し広げ~」というのはパッファオーバーランの脆弱性を利用して不正なコードを実行する手法のことでは?
それはmallocとはまったく関係なく、メモリにロードされたプログラムが書き換えられるという話です。
書き換えられたくないならメモリにロードしない、つまり実行しない、という話になります。

Dixqさんが書かれているように、ある程度の知識でもってリバースエンジニアリングすれば、そのプログラム自身が暗号化などを解除して使う瞬間の値を取り出せますからクライアント側だけでの対策は無意味です。

データを改竄されたくなかったら物理的に離れた場所に隔離するしかありません。
それでも直接書き換えられない、というだけなのでクライアントが改造されることも考慮して対策する必要があります。

マナ

Re: mallocを使うタイミング

#13

投稿記事 by マナ » 10年前

<ソフト屋さん
非常に困りましたね(滝汗)

ソフト屋さんの発言が本当ならセキュリティの専門家ってどうやって見つければいいのかが一番問題です

絵師さんとかなら見つけることができてもセキュリティの専門家を見つけろとなると探し方がわからない
 

<Dixqさん
あのサイトの管理人さんでもあるのですね。

すっごく気になったのですが別の章で、対策の方法をお伝えします。
っとかかれてたので対策法を気長にまってました。

毎回アドレスを変える方法ですか・・・・ちょっと厳しそうですね
アイテムのソート等でアドレスを指定を変えまくって何とか目的なものができたと思ったら別なとこでバグができて困った云々のプログラム制作が懐かしいです。

それを考えるとアドレスを変える方法は有効かもしれませんがしんどそうだとは思います。
ですが折を見てやってみたいと思います。

<h2so5さん
そこはちょっと聞きたかったのですが、いつかゲームを作ってゲームを運用した時に専有サーバーを借りて運営を行いたいと考えているのですが、その場合はゲームを則られたり、石油王と愛のない結婚を考えなくてもよかったりしますか?

変なチートやらハッキングやらのログをとっていたり、ウイルスやら何やらの攻撃はサーバー管理人が何とかしてくれる・・・と思うのですが、サーバーを設置するだけでほったらかしにするサーバー管理人だった場合アウトなのですよね

<ISLeさん
つまりISLeさんの話をまとめると
・mallocと無理やり押し広げるハッキング方法は関係ないから安心して使っていいよ
・Dixqさんの方法はすごいハッカーが攻撃してくると無意味ですよ
・物理的に切り離せばハッキングできませんよ ってことですね

すっごい疑問なのですが3っつ目の物理的に切り離せば本当にデーターを改ざんされないのですか?
昔どこかのサイトで見たのですがハッキングされるとチャットソフトみたいなものが表示されてハッカーとチャットで会話した人もいるみたいなのですが、どういう仕組みでそうやったのかはわかりませんが、その話を聞くとネットがつながってると物理的に切り離しても改ざんはされないの?

と疑問に思ってしまいます

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: mallocを使うタイミング

#14

投稿記事 by ISLe » 10年前

マナ さんが書きました:・Dixqさんの方法はすごいハッカーが攻撃してくると無意味ですよ
すごいハッカーでなくても多少のプログラムに関する知識があれば自宅のパソコンで誰でも簡単にできます。
自分のPCで改造したプログラムを動かすだけなので攻撃とも言えないでしょう。
マナ さんが書きました:・物理的に切り離せばハッキングできませんよ ってことですね
プログラムの中で使う値を直接書き換えることができなくなる、としか書いてません。

「物理的に切り離せ」というのは「サーバーに置け」と同義ですが、置いただけで安全なわけではありません。
物理的に切り離さない場合、根本的に防げないので対策しても無意味です。
物理的に切り離した場合、『きちんと対策することで』安全を保障できます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: mallocを使うタイミング

#15

投稿記事 by softya(ソフト屋) » 10年前

付け加えるなら攻撃する側よりずる賢くないとクラッカーを出し抜けません。
つまり、ここで聞いている段階で一般的な方法しか聞けないのでアウトなのです。

>ソフト屋さんの発言が本当ならセキュリティの専門家ってどうやって見つければいいのかが一番問題です

セキュリティの専門企業と取引するわけです。
何百、何千万、何億円のお金が必要です。

ここで知らなければいけないのは、費用と効果です。
掛けた費用に見合う収入があるか。
それを計算しないといけませんが、取らぬ狸の皮算用となる恐れが高いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

マナ

Re: mallocを使うタイミング

#16

投稿記事 by マナ » 10年前

<<すごいハッカーでなくても多少のプログラムに関する知識があれば自宅のパソコンで誰でも簡単にできます。
自分のPCで改造したプログラムを動かすだけなので攻撃とも言えないでしょう。

それはつまり、オンラインゲームで言うなら最古参のプレイヤーがご飯のためにPCを離れていたら、家族の人が見てこんなものがあるから家の子が引きこもりになるんだ とかのたまってキャラデーターを削除してしばらくすると、戻ってきたプレイヤーは発狂する。

という方法って事ですね
それなら確かにデーターを改ざんできそうですね
自業自得だと思いますが。

<物理的に切り離した場合、『きちんと対策することで』安全を保障できます。
そのきちんと対策することがソフト屋さんの言うセキュリティー専門家に依頼するって事ですね

マナ

Re: mallocを使うタイミング

#17

投稿記事 by マナ » 10年前

<ソフト屋さん
ソフト屋さんが言うことが事実なのでしたら、私は昔課金ゲームで課金したことがあったのですがある日、課金したお金がなくなってたことがありました。

そのことを運営に報告したら、『たぶんハッキングはされたんでしょうけど、うちじゃあどうにもできません。
警察に聞いてください』とか言われたことがありました。

結構大手の企業のゲームだったのですがそういう対応をされたってことはセキュリティ会社に費用をあまり払ってなかったって事ですね

大企業ですらセキュリティに甘いって事は防衛費にめっちゃお金がいるって事ですね

企業ではなく個人にお願いする場合は探す方法って知りませんか?
一応、個人単位の集まりでゲームを運営する予定なのですが、サーバーはきちんとしないとしないと問題があるからって結論に達したので、サーバーは専有サーバーにするっと言う案を話し合って採用したのですが(自宅サーバーの防衛知識が私にあれば私が運営しようとは考えてはいたのですけどね)、セキュリティについても企業に依頼するべきなのか個人に依頼すべきなのかは検討しないといけません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: mallocを使うタイミング

#18

投稿記事 by softya(ソフト屋) » 10年前

> 企業ではなく個人にお願いする場合は探す方法って知りませんか?
個人に依頼するのはお金の無駄かと思います。何かあってもその人は責任は取れませんよ。その依頼した人がハッカーである可能性も捨て切れません。その場合はバックドアを仕掛けられます。
高いお金をかけるから、それに見合う効果があるのです。
セキュリティはものすごく高いので、個人の集まりでできる事は出来る技術での自衛がせいぜいです。
少しづつ勉強して、セキュリティを高めていってください。

【補足】 こういう所も読みましょう。
「IPA セキュア・プログラミング講座:C / C++言語編」
https://www.ipa.go.jp/security/awarenes ... guage.html

と言うことで、無駄にお金をかけるよりもセキュリティに穴があるかも知れないけど運営するのが出来る事かと思います。
昨今のビットコインの社長の例もありますが、プログラミングが出来るからと言ってセキュアにプログラムは書けるとは限らないと言うことです。

【追記】
セキュリティやコアなプログラミングに関して、今のマナさんの知識が余りにも不足しているので下手なことしてバグバグになるよりは手を出さない方がマシだと思います。
迂闊なことすれば、ウィルス対策ソフトにウィルスやマルウェアに認定されます。
それに、個人でハッキングに詳しい人を見つけること自体がリスキーなので、ご自分たちが勉強するしか無いんですよ。
私からすれば「取らぬ狸の皮算用」があまりに凄すぎて危うく見えるのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: mallocを使うタイミング

#19

投稿記事 by へにっくす » 10年前

> 結構大手の企業のゲームだったのですがそういう対応をされたってことはセキュリティ会社に費用をあまり払ってなかったって事ですね
費用対効果を照らし合わせたら、普通はセキュリティ会社に頼ることはしないと思うんだけど。割に合わないから。
気になるんだけど、その企業のHPとかにセキュリティ会社に費用を払っている、というような文面が明記されていたのでしょうか?
今もあるなら、そのリンクを張ってください。見たことないので。
オフトピック
ネットでお金のやり取りをすること自体、間違っているといいたい。
つまり課金ゲームはそのリスクがあることを承知でやってほしいと思うのです。
ただマナさんの報告はありがたいと思っているはずですよ。課金システムに穴があることを教えていることになるので。
対処するかは別問題ですけどね (-_-;
written by へにっくす

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: mallocを使うタイミング

#20

投稿記事 by ISLe » 10年前

改ざんという言葉の意味が分かっていらっしゃらないようですね。

家の警備を警備会社と契約しても、窓も鍵も開けっ放しで家を空けた隙に泥棒に入られた場合、警備会社は保障してくれないと思いますけど。

課金ゲームの話も、運営は、使った形跡がある、という返事をしてきたのではないでしょうか。
『あなたのPCが』ハッキングされたことが原因だったら、大手だろうが個人だろうが保障しませんよ。

セキュリティ以前に契約についても勉強する必要があるのではないでしょうかね。
このままゲームの運営なんてしたら、チートやハックなんてなくても簡単に破産しますよ。


日本語が通じないようなのでこれ以降のやり取りは遠慮させていただきます。

閉鎖

“C言語何でも質問掲示板” へ戻る