PSVita チート解析スレ Part4 【vitacheat】






1 :名無しさん@お腹いっぱい。:2019/02/26(火) 18:58:40.65 ID:0xXW29/Y.net
次スレは需要があれば>>980が建ててください

前スレ
PSVita チート解析スレ Part003 【vitacheat】
https://medaka.5ch.net/test/read.cgi/gameurawaza/1538799174/

【vitacheat】
https://gbatemp.net/threads/vitacheat-finalcheat-database.485343/

【rinCheat】
https://github.com/Rinnegatamante/rinCheat

【zCheat】
ggr

2 :名無しさん@お腹いっぱい。:2019/02/26(火) 19:00:16.79 ID:0xXW29/Y

ユーザーマニュアル: https://drive.google.com/file/d/0B2W8mjrCrdk3TW9hSUdZZm0tVzQ/view?usp=sharing
PSVファイル仕様: https://drive.google.com/open?id=0B2W8mjrCrdk3OWZlTHh4dzlTN0E
PDF パスワード: psvitacheat

【$Bコードを使用するケースについて】

ゲームを起動する度に、アドレスが変動してしまい、コード化
出来ないケースがあるが、原因はセグメントの読込アドレスが
変動する場合と、ポインタを使用している場合の2通りある

メモリブラウザで右アナログスティックを上に倒すと画面上に
セグメント1,2の範囲が以下の様に表示される

seg0:0x81aaaaaa – 0x8xxxxxxx seg1:0x81bbbbbb – 0x8xxxxxxx

seg0、seg1の開始アドレス(0x81aaaaaa、0x81bbbbbb)が起動毎
に変動する場合には、ポインタの使用、不使用に関わらず必ず
$Bコードを使用してセグメントの読込位置の変動に対応しなく
てはならない

3 :名無しさん@お腹いっぱい。:2019/02/26(火) 19:00:32.23 ID:0xXW29/Y

【対応方法について】(所持金を9999にするコードの作成例)

$B200 0000000X 00000000
$0200 YYYYYYYY 0000270F

seg0の開始アドレス(0x81aaaaaa)が、0x81005000
seg1の開始アドレス(0x81bbbbbb)が、0x82005000とする

まず、サーチを掛けるなどして目的の所持金アドレスを特定する

<所持金アドレスが0x82055000の場合>
所持金アドレスとseg1の開始アドレス(0x81bbbbbb)を比較する
0x82055000 > 0x82005000が成立するため、0000000XのXは、
“1”(seg1の開始アドレスをアドレス欄にプラスする)を設定し、
YYYYYYYYには、0x82055000 – 0x82005000 の 00050000を設定する

$B200 00000001 00000000
$0200 00050000 0000270F

4 :名無しさん@お腹いっぱい。:2019/02/26(火) 19:00:51.36 ID:0xXW29/Y

続き
<所持金アドレスが0x81555000の場合>
所持金アドレスとseg1の開始アドレス(0x81bbbbbb)を比較する
0x82055000 > 0x81555000が不成立のため、0000000XのXは、
“0”(seg0の開始アドレスをアドレス欄にプラスする)を設定し、
YYYYYYYYには、0x81555000 – 0x81005000 の 00550000を設定する

$B200 00000000 00000000
$0200 00550000 0000270F

5 :名無しさん@お腹いっぱい。:2019/02/26(火) 19:01:16.46 ID:0xXW29/Y

過去コードまとめ

6 :名無しさん@お腹いっぱい。:2019/02/26(火) 19:01:36.84 ID:0xXW29/Y

※トラブル防止のためこのスレに書き込むチートコードは××××了承の上、書き込みお願いします

vitacheat $0〜$D日本語解説
$0 データ欄で指定した値をアドレス欄へ書込む
 用途例)所持金最大など

$5 データ欄で指定したアドレスが指す値をアドレス欄へ書込む
 用途例)HP最大値保持など

$4 データ欄で指定した値をアドレス欄で指定したアドレスから
 アドレス差指定、値差指定をして回数指定分連続書込みを行う
 用途例)アイテムALL系など

$3 アドレス欄へ指定したアドレス値が保持するアドレスにデー
 タ欄へ指定した値をオフセットとして加算したアドレスへ指定
 した値を書き込む
 用途例)所持金最大など(ポインタ系)

$8 $5と$3の合わせ技で、$3の値固定書込みでなく、書込む値も
 同様にポインタ指定する場合
 用途例)HP最大値保持など(ポインタ系)

$7 $4と$3の合わせ技でポインタ指定したアドレスを起点として、
$4のように連続書込みを行う

$A データ欄で指定した値をアドレス欄へ書込む
 $0との違いは、指定するアドレスが金額などを書込むデータ部
 でなく、金額を書込み処理するプログラムのアドレスを指定し、
 値も99999とかではなく、書き換えたいARMアセンブラ命令の16
 進数値を指定する
 書込みタイミングは、オンにした時に1度書込まれ、オフにす
 ると書込み前の値に戻る
 用途例)変動で所持金最大、移動速度、経験値N倍、壁抜け他

$C アドレス欄で指定したコントローラで、データ欄の操作をした
 場合に、指定行数分のコードを実行する($Aは指定不可)
 用途例)L+Rを押したら、所持金最大など

$D アドレス欄で指定したアドレスが保持する値とデータ欄で指定
 した値を比較し、条件を満たせば指定行数分のコードを実行する
 用途例)ヌルポインタチェック、キャラ存在チェックなど

詳細はマニュアルをお読み下さい

7 :名無しさん@お腹いっぱい。:2019/02/26(火) 21:53:42.52 ID:ZGWkF6V6

次スレがあればのテンプレ更新案

【$B2コードを使用するケースについて】 [Z05以降のみ使用可]

ゲームを起動する度に、アドレスが変動してしまい、コード化
出来ないケースがあるが、原因はセグメントの読込アドレスが
変動する場合と、ポインタを使用している場合の2通りある

メモリブラウザで右アナログスティックを上に倒すと画面上に
セグメント1,2の範囲が以下の様に表示される

seg0:0x81aaaaaa – 0x8xxxxxxx seg1:0x81bbbbbb – 0x8xxxxxxx

seg0、seg1の開始アドレス(0x81aaaaaa、0x81bbbbbb)が起動毎
に変動する場合には、ポインタの使用、不使用に関わらず必ず
$Bコードを使用してセグメントの読込位置の変動に対応しなく
てはならない

【対応方法について】(目的のアドレスの値を9999にする例)

$B200 0000000X 00000000
$0200 YYYYYYYY 0000270F

seg0の開始アドレス(0x81aaaaaa)が、0x81005000
seg1の開始アドレス(0x81bbbbbb)が、0x82005000とする

まず、サーチを掛けるなどして目的のアドレスを特定する

<目的のアドレスが0x82055000の場合>
目的のアドレスとseg1の開始アドレス(0x81bbbbbb)を比較する
0x82055000 > 0x82005000が成立するため、0000000XのXは、
“1”(seg1の開始アドレスをアドレス欄にプラスする)を設定し、
YYYYYYYYには、0x82055000 – 0x82005000 の 00050000を設定する

$B200 00000001 00000000
$0200 00050000 0000270F

<目的のアドレスが0x81555000の場合>
目的のアドレスとseg1の開始アドレス(0x81bbbbbb)を比較する
0x82055000 > 0x81555000が不成立のため、0000000XのXは、
“0”(seg0の開始アドレスをアドレス欄にプラスする)を設定し、
YYYYYYYYには、0x81555000 – 0x81005000 の 00550000を設定する

$B200 00000000 00000000
$A200 00550000 0000270F

[Z06の新機能]
従来まではメインとなるモジュール(ダンプテキストファイルの
00番目)以外のモジュールの動的ロードによるアドレスの変動に
対応できなかったが、$B2XXのXXにモジュールのシリアル番号を
指定することにより対応可能となった
モジュールのシリアル番号の確認はダンプテキストファイルの
module nameの左に記載されている
例)0A. module name :sub 
$B2XX → $B20A
ただし、このモジュールのシリアル番号指定は例の番号0Aが0B
などに変わるケースもあるため、完全な動作保証はありません
確実に対応するためには、ソースコードでモジュール名の指定
を行いsuprx形式にコンパイルする必要があります
例)taiGetModuleInfo (“sub”, tai_module_info_t *info)

8 :名無しさん@お腹いっぱい。:2019/03/02(土) 10:48:35.60 ID:25IDuAij

俺屍2のコード教えていただきたいです・・・

9 :名無しさん@お腹いっぱい。:2019/03/02(土) 11:54:13.97 ID:JAkVOnCi

>>8
一部とはいえ暗号化が施されているし何をどう解釈してくるかわからないのに
コード提供はできない、ヒント書いてあるし自力でなんとかしてくれ

10 :名無しさん@お腹いっぱい。:2019/03/02(土) 18:43:01.04 ID:v7ISWsSP

ケチすぎワロタ。誰が無視してあげて!w

11 :名無しさん@お腹いっぱい。:2019/03/02(土) 22:58:52.35 ID:2ar429xc

>>8
リクしてもまず無駄
>>9
無駄レスは不要
>>10
必死すぎ
って感じだな

12 :名無しさん@お腹いっぱい。:2019/03/02(土) 23:43:47.35 ID:6zTc44id

お前のレスが一番無駄なのでは

13 :名無しさん@お腹いっぱい。:2019/03/02(土) 23:50:04.94 ID:S5SH3qw0

>>9>>12
同列で無駄だと思うが

14 :名無しさん@お腹いっぱい。:2019/03/03(日) 12:29:13.16 ID:x76G32Zy

vitacheatでアーカイブスps1のゲームコードを使う事はできますか?

19 :名無しさん@お腹いっぱい。:2019/03/05(火) 02:22:29.60 ID:yK2Shygh

>>18 そうだね
コンパイルするための環境構築は以下を参考にすれば何も難しいことはない
blog.apolo1192.net/archives/become-a-vita-developer-using-vita-sdk.html
プラグインは遺伝子最大しか使ってないから以下は使うとシナリオに影響あるかも
全角スペースに変えてみたけど、また見辛かったらごめん
static void kamisama_status_set(int lock) //神様状態設定
{
  if (lock)
  {
    uint32_t base_addr, addr1, addr2;
    base_addr = get_seg1_start_addr(“main”);
    if (base_addr == 0) return;

    addr1 = READU32(base_addr + 0x1995C);
    if (addr1 == 0) return;

    for (int i = 0; i < 0xB3; i++)
    {
      addr2 = READU32(addr1 + i * 0x1C + 0x8);
      if (addr2 == 0) continue;
      //0:非存在,1:捜索中,2:存在,3:なし,4:存在(新規),5:存在(上昇),
      //6:抹消,7:除籍,8:堕天,9:在野,A:再生中,B:不許可
      WRITEU8(addr2 + 0x1, ((READU8(addr2 + 0x1) & 0xF0) | 2)); // 存在
    }
  }
}
static void kamisama_hounouten_set(int lock) //(氏)神様奉納点設定設定
{
  if (lock)
  {
    uint32_t base_addr, addr;
    base_addr = get_seg1_start_addr(“main”);
    if (base_addr == 0) return;

    addr = READU32(base_addr + 0x1995C);
    if (addr == 0) return;

    for (int i = 0; i < 0xC7; i++)
      WRITEU32(addr + i * 0x1C + 0x4, 999999); // 奉納点設定
  }
}

16 :名無しさん@お腹いっぱい。:2019/03/04(月) 23:26:36.52 ID:a7+UZabZ

>>8
uint32_t get_seg1_start_addr(const char *module_name)
{
ㅤㅤtai_module_info_t module_info;
ㅤㅤmodule_info.size = sizeof(tai_module_info_t);
ㅤㅤint ret = taiGetModuleInfo(module_name, &module_info);
ㅤㅤif (ret != 0) return 0;

ㅤㅤSceKernelModuleInfo kernel_module_info = {0};
ㅤㅤret = sceKernelGetModuleInfo(module_info.modid, &kernel_module_info);
ㅤㅤif (ret != 0) return 0;

ㅤㅤSceKernelSegmentInfo* seg1 = &(kernel_module_info.segments[1]);
ㅤㅤreturn (uint32_t)seg1->vaddr;
}

static void kamisama_idenshi_max(int lock)
{
ㅤㅤif (lock)
ㅤㅤ{
ㅤㅤㅤㅤuint32_t base_addr, addr1, addr2;
ㅤㅤㅤㅤbase_addr = get_seg1_start_addr(“main”);
ㅤㅤㅤㅤif (base_addr == 0) return;
ㅤㅤㅤㅤ
ㅤㅤㅤㅤaddr1 = READU32(base_addr + 0x1995C);
ㅤㅤㅤㅤif (addr1 == 0) return;
ㅤㅤㅤㅤ
ㅤㅤㅤㅤfor (int i = 0; i < 0xC7; i++) // 0xB4以降は氏神
ㅤㅤㅤㅤ{
ㅤㅤㅤㅤㅤㅤaddr2 = READU32(addr1 + i * 0x1C + 0x8);
ㅤㅤㅤㅤㅤㅤif (addr2 == 0) continue;
ㅤㅤㅤㅤㅤㅤfor (int j = 0; j < 0x18; j++)
ㅤㅤㅤㅤㅤㅤㅤㅤ//遺伝子データの設定(最大:0x00〜最小0xFF)
ㅤㅤㅤㅤㅤㅤㅤㅤWRITEU8(addr2 + j + 0x2, 0);
ㅤㅤㅤㅤ}
ㅤㅤ}
}

17 :名無しさん@お腹いっぱい。:2019/03/04(月) 23:30:40.50 ID:a7+UZabZ

あれ、ㅤをスペース2個と捉えてコンパイルすれば(氏)神様の遺伝子がMAXになる
コンパイル方法はググれば、そのまま活用できる日本語サイトが見つかる
後、上にこれも足しといて
#ifndef WRITEU8
#  define WRITEU8(addr, data) *(uint8_t*)(addr) = data
#endif
#ifndef READU32
#  define READU32(addr)ㅤㅤㅤ*(volatile unsigned int*)(addr)
#endif

18 :名無しさん@お腹いっぱい。:2019/03/05(火) 00:34:03.40 ID:yHsVEo0J

何これ、プラグインのコード?

15 :名無しさん@お腹いっぱい。:2019/03/03(日) 15:25:26.43 ID:cgFwuYDH

前スレの麻雀の話ついでだけど、オンライン終わってるし、もうトロフィー取れないのな
バージョンアップで別条件に変えてほしいわ

20 :名無しさん@お腹いっぱい。:2019/03/05(火) 02:23:39.90 ID:yK2Shygh

折角、60行に収まるようにしたのにNGワード禁止!で投稿できなかったので分割してます
static void kamisama_koushin_num_max(int lock) //神様交神回数設定
{
  if (lock)
  {
    uint32_t base_addr, addr1, addr2;
    base_addr = get_seg1_start_addr(“main”);
    if (base_addr == 0) return;

    addr1 = READU32(base_addr + 0x1995C);
    if (addr1 == 0) return;

    for (int i = 0; i < 0xC7; i++)
    {
      addr2 = READU32(addr1 + i * 0x1C + 0x8);
      if (addr2 == 0) continue;
      WRITEU8(addr2, 255); //更新回数の設定(最小:0〜最大:255)
    }
  }
}

21 :名無しさん@お腹いっぱい。:2019/03/05(火) 02:33:53.99 ID:yHsVEo0J

>>19
おお詳しくサンクス。
ド素人だからさっぱりだけど、もしかしたらその内参考にするかも

22 :名無しさん@お腹いっぱい。:2019/03/05(火) 10:23:01.86 ID:rskfGpAm

c++かな

jsとpythonをやったことあるから
何となく読める。

いずれはコンパイル言語を経験したい。

23 :名無しさん@お腹いっぱい。:2019/03/05(火) 11:49:49.80 ID:D4H/Ofrh

>>22
javaかC#が初めてにはオススメ

24 :名無しさん@お腹いっぱい。:2019/03/05(火) 12:49:36.76 ID:whXJKq4Y

>>23
ありがとうございます。

java、C#やらずに

GoかKotlinやってから、Scalaやります。

25 :名無しさん@お腹いっぱい。:2019/03/05(火) 17:33:45.09 ID:7+TLXmay

趣味に走るのはいいけど仕事にはならんね

26 :名無しさん@お腹いっぱい。:2019/03/05(火) 18:37:05.51 ID:iiWfkRR5

プログラム初心者なんでよくわからないけど、言語は多分C++だと思う
plg作成するメリットは上のようなコードでの対応が難しい場合や
こんな感じのエディット機能作る場合くらいしかなさそう
#define ONPRESS(flag) ((ctrl.buttons == (flag)) && !(ctrl_old.buttons == (flag)))
uint32_t get_base_addr(const char *module_name, int segment_index)
{  //モジュール名とセグメント番号を指定して開始アドレスを取得する
  tai_module_info_t module_info;
  module_info.size = sizeof(tai_module_info_t);
  int ret = taiGetModuleInfo(module_name, &module_info);
  if (ret != 0) return 0;

  SceKernelModuleInfo kernel_module_info = {0};
  ret = sceKernelGetModuleInfo(module_info.modid, &kernel_module_info);
  if (ret != 0) return 0;

  SceKernelSegmentInfo* segmentInfo = &(kernel_module_info.segments[segment_index]);
  return (uint32_t)segmentInfo->vaddr;
}
int get_selected_kamisama_id()
{  //神様一覧で選択中の神様のIDを返す
  const uint32_t search_value = get_base_addr(“main”, 0) + 0x470468;
  const uint32_t base_addr = get_base_addr(“main”, 1);
  uint32_t addr = base_addr + 0x947BC;
  addr = READU32(addr);
  if (addr != 0)
    if (READU32(addr + 0x7E4C) == search_value)
      if (READU32(addr + 0x7E50)>=0 && READU32(addr + 0x7E50)<0xB4)
        return READU32(addr + 0x7E50);
  return -1;
}
static SceCtrlData ctrl,ctrl_old={};
static void kamisama_status_set(int lock)
{  //R+□押下で一覧選択中の神様の状態を循環で変更される
  if (lock)
  {
    ctrl_old = ctrl;
    sceCtrlReadBufferPositive(0, &ctrl, 1);
    
    if(ONPRESS(SCE_CTRL_RTRIGGER | SCE_CTRL_SQUARE))
    {
      uint32_t base_addr, addr1, addr2;
      base_addr = get_base_addr(“main”, 1);
      if (base_addr == 0) return;
      
      addr1 = READU32(base_addr + 0x1995C);
      if (addr1 == 0) return;
      
      int selected_kamisama_id = get_selected_kamisama_id();
      if(selected_kamisama_id < 0) return;
      
      addr2 = READU32(addr1 + selected_kamisama_id * 0x1C + 0x8);
      if (addr2 == 0) return;
      
      WRITEU8(addr2 + 0x1,
        ((READU8(addr2 + 0x1) & 0xF0) |
        (((READU8(addr2 + 0x1) & 0xF) + 1) % 0xC))
      );
    }
  }
}

27 :名無しさん@お腹いっぱい。:2019/03/07(木) 23:57:30.70 ID:a+Y1HZQM

レコラブ全裸とか要らんから、シーン回想全部開放するチートくれくれ

28 :名無しさん@お腹いっぱい。:2019/03/08(金) 00:33:07.03 ID:WTxISM2D

>>27
需要が少ないんだろう
お前の今後のためにも新シーンに入る前後で変動サーチかけて絞り込め
興味ないから知らんけど、あるいはセーブデータ改造した方が早いかもな

29 :名無しさん@お腹いっぱい。:2019/03/09(土) 11:17:51.46 ID:xzDUFNFr

アトリエシリーズのどれでもいいからオナシャス

30 :名無しさん@お腹いっぱい。:2019/03/13(水) 02:58:26.58 ID:q18zjaDU

スレチだったらすまぬ
チートエンジンで:このアドレスへのアクセス元を検出と:このアドレスへの書き込み元を検出をするとPCがフリーズするようになったんだけど、原因分かる人いますか?
PC容量は足りていて、検索範囲も小さいアプリです

31 :名無しさん@お腹いっぱい。:2019/03/13(水) 12:20:56.40 ID:M2iobRcE

リンガーハットで野菜たっぷりタンポン食べてきた
普段不足がちな野菜を美味しく食べれるのはいいね

32 :名無しさん@お腹いっぱい。:2019/03/13(水) 17:57:37.17 ID:Dd87TlIS

オレは長崎ちゃんめんが好き

33 :名無しさん@お腹いっぱい。:2019/03/13(水) 22:47:07.23 ID:qzWrt0Er

俺は近江ちゃんぽん派だな

35 :名無しさん@お腹いっぱい。:2019/03/17(日) 18:05:43.84 ID:5HaHYtra

蒼き革命のヴァルキュリアのコードって全く無いですか??

38 :36:2019/03/17(日) 18:47:49.64 ID:uS4mPufu

ググって出るわけ無いだろ

40 :名無しさん@お腹いっぱい。:2019/03/17(日) 19:33:22.58 ID:Cnay1fuo

先にボケたのこっちやーいうに

46 :36:2019/03/17(日) 21:42:23.72 ID:fGJ+gMFB

せっかく蒼ヴァル事前登録プロダクトコード書いたのに盛大なスルーは悲しいわ

47 :名無しさん@お腹いっぱい。:2019/03/17(日) 21:43:36.05 ID:WfjB4t7y

そういうのは巣でやってて

50 :名無しさん@お腹いっぱい。:2019/03/18(月) 02:26:43.11 ID:pqsyH3II

欲しいならまだあるぞ
798H-MRN8-MCAF

52 :名無しさん@お腹いっぱい。:2019/03/18(月) 05:29:10.22 ID:c68aOwDk

>>51
そんなわけないやん、一度確認してから貼ってるのに。誰かが無言で引き換えてるんだろ
 QBCA-MCNJ-PAK4

58 :名無しさん@お腹いっぱい。:2019/03/22(金) 20:01:10.79 ID:TjNhw0Kc

int i = 1/0;

64 :名無しさん@お腹いっぱい。:2019/03/25(月) 22:23:53.81 ID:JplJhl+k

VitaCheat対応の閃乱カグラ無敵コード無いかなあ(チラッ

101 :名無しさん@お腹いっぱい。:2019/04/07(日) 23:50:54.80 ID:a3J8y5ZT

キリ番ゲッツ!

128 :名無しさん@お腹いっぱい。:2019/04/11(木) 01:36:09.39 ID:SIlhSh71

上のコードはパッチバージョン1.07

159 :名無しさん@お腹いっぱい。:2019/04/16(火) 00:53:03.61 ID:KOT1/z2F

NPSBで出来るやろ

229 :名無しさん@お腹いっぱい。:2019/04/22(月) 22:46:11.96 ID:vDTvO/CG

いらんだろ。アプデ終了してるのに
××××目的か?

320 :名無しさん@お腹いっぱい。:2019/05/19(日) 10:57:34.44 ID:DupwYGsc

ドラゴンズクラウン1.09なんだけど、サーチするだけでフリーズして落ちるわ
z06なんだけどz05ならチートいけるの?

413 :名無しさん@お腹いっぱい。:2019/07/02(火) 10:31:17.92 ID:XsicxK19

この素晴らしい世界に祝福を!〜希望の迷宮と集いし冒険者たち〜 ver1.00

_V0 所持金変動で最大
$B200 00000000 00000000
$A100 000F4882 0000E000

_V0 経験値変動で最大
$B200 00000000 00000000
$A100 000F61F8 0000E000

_V0 経験値4倍
$B200 00000000 00000000
$A200 000F6210 8A00EEB1

_V0 HP変動で最大
$B200 00000000 00000000
$A100 004A29C4 0000B510
$A100 004A29C6 000069C4
$A100 004A29C8 00002C00
$A100 004A29CA 0000D101
$A200 004A29CC 1A01ED90
$A200 004A29D0 1A00ED80
$A100 004A29D4 0000BD10
$A200 000F7250 FBB8F3BB

_V0 敵一撃死
$B200 00000000 00000000
$A100 004AD9D6 0000B510
$A200 004AD9D8 1A00EE31
$A100 004AD9DC 000069C4
$A100 004AD9DE 00002C00
$A100 004AD9E0 0000D001
$A200 004AD9E2 1A60EEB0
$A100 004AD9E6 0000BD10
$A200 000F7248 FBC5F3BB

_V0 MP変動で最大
$B200 00000000 00000000
$A100 000F7DF0 0000E000

_V0 アイテム個数変動で最大
$B200 00000000 00000000
$A100 001012CA 0000E000

_V0 必ずアイテムドロップする
$B200 00000000 00000000
$A100 002D2C46 0000BF00

568 :名無しさん@お腹いっぱい。:2019/07/27(土) 09:35:49.28 ID:/28Kue0i

>>567
数値変動するから意味ないんじゃない?

600 :名無しさん@お腹いっぱい。:2019/07/28(日) 14:40:06.50 ID:PLUbiGW4

うーんどっちもかなぁ

793件をまとめました。
最新情報はこちら

おすすめ情報