2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

C#, C♯, C#相談室 Part96

1 :デフォルトの名無しさん :2021/12/20(月) 11:03:25.88 ID:sdn/+VfW0.net
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

948 :デフォルトの名無しさん :2022/12/20(火) 17:33:48.40 ID:cyGUI4Ab0.net
>>944
visual studioで空のUWPプロジェクト作って
releaseで.NETネイティブツールチェインをオンにして生成されたApp1.exeをILSpyで見ても
普通に中身見れるなw

949 :デフォルトの名無しさん :2022/12/20(火) 17:33:58.25 ID:GGhGhggz0.net
>>938
難読化を強い設定にしたらILSpyでファイルを開いただけじゃソースコードは読めないよ

950 :デフォルトの名無しさん :2022/12/20(火) 17:37:55.97 ID:pH7eiimed.net
>>948
MSのストア側でnativeになるとかじゃない?

951 :たすけて!!!!!1!!11!!1!!!1!!111 :2022/12/20(火) 19:28:27.61 ID:nMZXsv/b6.net
C言語でボードゲームを作成する課題についてです。重力付き4目並べを最終的にコンピュータと対戦可能にするように、テンプレートのコードに穴埋めしていく課題です。
@横7x縦6の盤面を立てて使用A2人で対戦、以下の0~6のマスを交互に選択B縦横斜めいずれか4コマ並べれば勝ち。以下はテンプレートのコードです(長いので続きはGoogleドライブにも置いてます)、これらの空白部分の穴埋めが分かる方、どうか教えてくださいお願いします。元テンプレコード↓→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define YMAX 6 // 縦方向のマス目の数
#define XMAX 7 // 横方向のマス目の数
int board[XMAX][YMAX]; // 0:未着手 1:先手のコマ● 2:後手のコマ○
int num[XMAX]; // 各列に置かれているコマの数
int choice = 1; // 0:未選択
// 1:人間(先手●)対人間(後手〇)
// 2:人間(先手●)対コンピュータ(後手〇)
// 3:コンピュータ(先手●)対人間(後手〇)
int turn = 0; // 先手か後手かを判定するための着手数
void InitBoard(void);
void DispBoard(void);
int CheckFull(void);
int SetXpos(int);
int CheckBoard(int, int, int);
int ComputeXpos(int);
int SearchConnect(int, int);
int main(void)
{
int xpos; // 入力したコマの置き場所,またはコンピュータが探したコマの置き場所
int player; // 1:先手の手番 2:後手の手番
int win = 0; // 0:プレイ中 1:先手の勝ち 2:後手の勝ち 3:引き分け
int ans;
while (1)
{
srand((unsigned int)time(NULL)); // 乱数を使う場合のseedの初期化

長いので続きはGoogleドライブにあります→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link

952 :デフォルトの名無しさん :2022/12/20(火) 19:43:57.01 ID:pH7eiimed.net
>>951
名前とはうらはらにC#とCはぜんぜん違う
ここで聞くべきではない

953 :デフォルトの名無しさん :2022/12/20(火) 19:53:21.19 ID:3kdd/MdI0.net
課題についてですが

954 :デフォルトの名無しさん :2022/12/20(火) 19:56:57.69 ID:oMNiRABq0.net
パクられるほどのアプリなんだろうか。
今日日、割られるとしたらパッチが広まるのも一瞬なんだから、それよりもちゃんと利用規約書いた方が良いんじゃないの?
はるかに金払うと思うよ。特に企業内ユーザは。

955 :デフォルトの名無しさん :2022/12/20(火) 20:36:05.36 ID:pH7eiimed.net
>>954
流行ってきてもすぐにコピーアプリつくられたら
収益激減しちゃうでしょ
利用規約なんて書いても少し変えてコピーアプリつくられたらおしまいだよ
実害がはっきりでる
例えば300円のアプリ、コピーされて100円で売られたらこっちは大損だよ

956 :デフォルトの名無しさん :2022/12/20(火) 20:36:09.48 ID:k+1oqZ2P0.net
困るほど割られるならサーバー用意して認証するかな、俺なら
まあそんなアプリを公開できるとも思わんから取らぬたぬきなんだけどw

957 :デフォルトの名無しさん :2022/12/20(火) 20:38:13.57 ID:pH7eiimed.net
>>956
native codeじゃないとかんたんに
サーバーの認証のコードが漏れちゃうでしょ
セキュリティ大事

でもNET7でようやくC#でnative codeをMSが許可したのは大きいね

958 :デフォルトの名無しさん :2022/12/20(火) 20:43:25.99 ID:paaoChG1d.net
クライアントにAPIキーをハードコードしてるのか?ユーザー認証を実装しろよ
そんな初歩的な設計ミスしといてセキュリティもクソも

959 :デフォルトの名無しさん :2022/12/20(火) 21:05:09.19 ID:k+1oqZ2P0.net
>>957
もしかして認証ってクライアントからサーバーにログインするような奴しか知らんのか?

960 :デフォルトの名無しさん :2022/12/20(火) 21:41:02.29 ID:y3Va6Z2Ud.net
>>951
馬鹿は死ね

961 :デフォルトの名無しさん (ワッチョイ 535f-f2OJ):2022/12/20(火) 21:55:47.97 ID:oMNiRABq0.net
>>955
実際Windows以外ではアプリ作っててそこそこダウンロードされてるけど、コピーアプリが追いついたこと無いぞ。
単純に品質と知名度でしょ。

962 :デフォルトの名無しさん :2022/12/21(水) 02:19:07.37 ID:XJm7JjIp0.net
.NET 7のNative AOTは今のところコンソールアプリとクラスライブラリで使えるらしい
今後範囲を広げていく計画だったと思うが
現状でWindowsアプリでも重要な部分だけクラスライブラリにすれば上で求められてることはできそうだな

963 :デフォルトの名無しさん :2022/12/21(水) 08:11:43.60 ID:WvXmOK62d.net
>>962
それはちょっと誤解がある
NativeAOTはコンソールアプリとして発行されるアプリケーション、もしくは(.NETのクラスライブラリではなく)ネイティブの共有ライブラリを作るときだけ使える
つまり、仮にWindowsアプリで部分的に使うならPInvokeが必要
なお、NativeAOTはASP.NET Coreアプリを動かすことをゴールとしており、GUIアプリのサポートは全く計画にない

964 :デフォルトの名無しさん :2022/12/21(水) 08:21:41.02 ID:NS3BAQGq0.net
ネイティブのDLL作れるのはええな
わざわざその為だけにC++使う必要なくなるかな

965 :デフォルトの名無しさん :2022/12/21(水) 10:09:22.51 ID:DxBIri9+0.net
ソースが見られるのを恐れてるのはパクられるのを恐れてるんじゃなくパクったのがバレるのを恐れてるんだよな
お前なんかの作った物をパクるやつなんかいねーよと言いたくなるやつしか難読化難読化言わない

966 :デフォルトの名無しさん :2022/12/21(水) 10:17:43.01 ID:DxBIri9+0.net
あと.NETのリバースエンジニアリングがしやすいのは静的ライブラリじゃなくDLLを使ってるのと仮想メソッドを多用しているのも大きい
DLLで提供されるクラスを使う時や仮想メソッドを使う時は名前でアクセスせざるを得ないからどのクラスのどのメソッドを使っているかを隠すことができない
これはC++を使っても同じこと
本気で難読化したいなら標準ライブラリを使うのをやめた上でソースコードジェネレータを使ってソースレベルでクラス名や関数名をランダマイズするところから

967 :デフォルトの名無しさん :2022/12/21(水) 10:20:28.49 ID:DxBIri9+0.net
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
立てたけどこれ過去スレの履歴要らんだろ

968 :デフォルトの名無しさん :2022/12/21(水) 10:50:38.22 ID:Q7xHaIEVd.net
>>963
ASP.NET Coreは.NET8でnative AOT対応してくるかもしれない。
Azure運営してるMSとしては欲しい機能だろうし。
GUI appsもゴールにないという事はないと思うよ
やっぱり速度とかメモリ使用とかでnative有利だし。

MAUIで作ったiOSかMacアプリはnative codeでbuildされるとか見た記憶ある。
他社がnativeで動くならGUI appも対応しないとc#開発者がC#使うのをやめてしまう。

969 :デフォルトの名無しさん :2022/12/21(水) 10:52:45.19 ID:Q7xHaIEVd.net
ここみると.NET7の制限というニュアンスで書いてある。
最終的にはふつうのWPFとかもnative AOT目指してるように思える。
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/

970 :デフォルトの名無しさん :2022/12/21(水) 10:54:27.51 ID:Q7xHaIEVd.net
>>965
コード見られるのを気にしない人はセキュリティに関して知識と意識が低いだけだと思う。
必要のない情報は極力見せないっていうのがセキュリティの基本だ。

971 :デフォルトの名無しさん :2022/12/21(水) 10:59:36.26 ID:DxBIri9+0.net
>>970
何のセキュリティを気にしてんだよw
セキュリティの意味わかってないんじゃね?

972 :デフォルトの名無しさん :2022/12/21(水) 11:21:48.38 ID:dQUtHKIl0.net
>>970
その理論だとつまりオープンソースはセキュリティが低すぎて使い物にならないってことだな

極力見せない以前に、見せていいものと悪いものの判断ぐらいできるようになれよ

973 :デフォルトの名無しさん :2022/12/21(水) 11:38:04.02 ID:XdVZCz4Ta.net
>>967
それよりVS 2017 からバージョンさせてほしい

974 :デフォルトの名無しさん :2022/12/21(水) 11:46:13.92 ID:yXejyiRX0.net
まあ認証まわりとか、ライブラリを使ってるのか自作なのかすら見せたくないのはわかる
個人のアプリじゃないと重箱の隅をつつかれることにもなるしね

975 :デフォルトの名無しさん :2022/12/21(水) 12:14:36.58 ID:UGlVD7cdM.net
カジュアルな解読対策なら既存の難読化で十分だし、ガチのクラッカー相手ならマシン語になった程度じゃ無駄だよ

976 :デフォルトの名無しさん :2022/12/21(水) 12:52:16.33 ID:j8NGwdcp0.net
そもそもターゲットになるようなアプリを公開できる奴がこんなスレにいるのかと...

977 :デフォルトの名無しさん :2022/12/21(水) 14:51:10.30 ID:Q7xHaIEVd.net
native AOTはスピードアップの恩恵も大きい。
C++くらい速いコードになるし欲しいに決まってる

978 :デフォルトの名無しさん :2022/12/21(水) 15:00:09.00 ID:xeZ9BjZLa.net
ならんと思うよ
C++は最適化のやり方がえげつないし安全より速度に倒してるから

979 :デフォルトの名無しさん :2022/12/21(水) 15:01:27.23 ID:9NcjNPce0.net
最適化に関しては言語単位ではなくコンパイラ次第だけどな

980 :たすけて!!!!!1!!11!!1!!!1!!111 :2022/12/21(水) 15:04:48.89 ID:PoVpFNoO6.net
C言語でボードゲームを作成する課題についてです。重力付き4目並べを最終的にコンピュータと対戦可能にするように、テンプレートのコードに穴埋めしていく課題です。
@横7x縦6の盤面を立てて使用A2人で対戦、以下の0~6のマスを交互に選択B縦横斜めいずれか4コマ並べれば勝ち。以下はテンプレートのコードです(長いので続きはGoogleドライブにも置いてます)、これらの空白部分の穴埋めが分かる方、どうか教えてくださいお願いします。元テンプレコード↓→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define YMAX 6 // 縦方向のマス目の数
#define XMAX 7 // 横方向のマス目の数
int board[XMAX][YMAX]; // 0:未着手 1:先手のコマ● 2:後手のコマ○
int num[XMAX]; // 各列に置かれているコマの数
int choice = 1; // 0:未選択
// 1:人間(先手●)対人間(後手〇)
// 2:人間(先手●)対コンピュータ(後手〇)
// 3:コンピュータ(先手●)対人間(後手〇)
int turn = 0; // 先手か後手かを判定するための着手数
void InitBoard(void);
void DispBoard(void);
int CheckFull(void);
int SetXpos(int);
int CheckBoard(int, int, int);
int ComputeXpos(int);
int SearchConnect(int, int);
int main(void)
{
int xpos; // 入力したコマの置き場所,またはコンピュータが探したコマの置き場所
int player; // 1:先手の手番 2:後手の手番
int win = 0; // 0:プレイ中 1:先手の勝ち 2:後手の勝ち 3:引き分け
int ans;
while (1)
{
srand((unsigned int)time(NULL)); // 乱数を使う場合のseedの初期化

長いので続きはGoogleドライブにあります→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link

981 :デフォルトの名無しさん :2022/12/21(水) 15:06:36.41 ID:Q7xHaIEVd.net
>>975
マシン語のリバースエンジニアリングできるやつなんて
プログラマーの1%もいないだろうし時間もかかるからほぼ回避できる。
解析する行為が割に合わなくなる
C#難読化だけとは安心度が全然違う

982 :デフォルトの名無しさん :2022/12/21(水) 15:08:08.84 ID:QEiYz8egd.net
>>980
しつこい
死ねよ

983 :デフォルトの名無しさん :2022/12/21(水) 15:46:41.58 ID:PoVpFNoO6.net
>>982
ごめんち

984 :デフォルトの名無しさん :2022/12/21(水) 15:57:46.46 ID:xnCwgzYya.net
>>981
マシン語に夢見すぎだしCのソースコードにデコンパイルできるぞ

985 :デフォルトの名無しさん (ワッチョイ 6a01-6ae9):2022/12/21(水) 16:15:55.40 ID:j8NGwdcp0.net
まあガチで最適化されてたらまともなCコードにはならんけどね

986 :デフォルトの名無しさん (アウアウウー Sa9f-bKpv):2022/12/21(水) 16:23:28.08 ID:xnCwgzYya.net
>>985
少なくとも文法はCになる

987 :デフォルトの名無しさん :2022/12/21(水) 20:14:45.78 ID:RZVo2DHQM.net
文法はCだけど中身はマシン語と変わらないなら地獄だけどそういうものになるんだろ?

ifとgotoとreturnとラベルだらけ

988 :デフォルトの名無しさん :2022/12/21(水) 20:17:20.13 ID:RZVo2DHQM.net
式は漏れなく逆ポーランド記法的になるんだろうし

989 :デフォルトの名無しさん :2022/12/21(水) 20:23:34.31 ID:rozOpZ0F0.net
自分でやってみればわかるが、言うほど難しくない。

990 :デフォルトの名無しさん :2022/12/21(水) 20:27:18.93 ID:RZVo2DHQM.net
と言う妄想

991 :デフォルトの名無しさん :2022/12/21(水) 21:29:01.38 ID:ye8WaQKn0.net
Cとアセンブラの最も大きな違いはレジスタへのアクセスなんだよね。

992 :デフォルトの名無しさん :2022/12/21(水) 21:48:30.78 ID:rozOpZ0F0.net
>>990
慣れだよ。CTFとかやったら良い。

993 :デフォルトの名無しさん :2022/12/22(木) 02:21:30.51 ID:IYYvjjD3a.net
>>991
レジスターやスタックを気にしながらプログラムを組むのは地獄だわな

994 :デフォルトの名無しさん :2022/12/22(木) 02:36:34.84 ID:F1nh9mbrd.net
C++も終わりになるんじゃないの?
LinuxがRustで書くようになるとかいう噂?ニュースを見たよ
RustってOSも書けるんだな
Rustで安全で高速なコード書けたらC/C++ほぼ要らなくなるんじゃ?

995 :デフォルトの名無しさん :2022/12/22(木) 02:37:22.51 ID:F1nh9mbrd.net
>>995
LinuxのカーネルがRustで書かれるかもっていう噂、ニュースね

996 :デフォルトの名無しさん :2022/12/22(木) 02:43:23.22 ID:F1nh9mbrd.net

C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/

997 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

278 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★