チート初心者スレpart3 (679レス)
上下前次1-新
478: 2023/04/05(水) 03:28:28.55 ID:??? AAS
luaはC#の方言って感じだからC#の文法にないことは出来ない
そういうこと
479(1): 2023/04/05(水) 21:38:23.51 ID:??? AAS
フォームでeditに書かれてる値を読み込むコードを書きたいんですけど
どんな関数使えばいいですか?
480: 2023/04/06(木) 23:39:35.67 ID:??? AAS
人に頼らず自分で調べてみれば?
外部リンク:cheatengine.org
481: 2023/04/07(金) 17:41:33.21 ID:??? AAS
正直lua使っていくならいちいちここで質問せずにサイトやら書籍使って勉強したほうがいいよ
lua自体はそんな難しいプログラミング言語じゃないし
482: 2023/04/07(金) 18:17:32.27 ID:??? AAS
luaと言うかCEでの作法を覚えるしかないと思うぞ
GUI部品とか親フォームからたどっていったり、ID指定で取ってくるとか複数のやりかたがあったはず
フォーラムのコードとか見れば大体解決する
483: 2023/04/07(金) 18:41:19.27 ID:??? AAS
>>479
function UDF1_1_CEToggleBox4Click(sender)
print(tostring(writefloat))
print(tostring(readfloat))
writeFloat("[game.exe+01016E44]+5d0",math.cos(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5f8",math.cos(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5d8",math.sin(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5f0",-math.sin(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5d8",readFloat("[game.exe+01016E44]+5d8")*UDF1_1.CEEdit2.text)
writeFloat("[game.exe+01016E44]+5f8",readFloat("[game.exe+01016E44]+5f8")*UDF1_1.CEEdit2.text)
end
大体こんな感じで
・editに書かれてる値をアドレスに書きこむ
・editに書かれている値の数をかける
はできるようになりました。
ご協力ありがとうございます。
484: 2023/04/07(金) 18:44:14.18 ID:??? AAS
行列演算したいんですけど
場合によっては作成したCTファイルを配布する前提(なお作っているCTファイルはオンラインで迷惑行為をするようなものではありません)なので
torchみたいな外部ライブラリをDLせずに演算できるようにしたいです。
どうすれば良いでしょうか。
485(1): 2023/04/07(金) 19:40:51.64 ID:??? AAS
こども電話相談室みたいになってきたなw
外部ライブラリはライセンスに従って自分のEXEと一緒に再配布しちゃえばいいんじゃね?
EXEにしても中ではluaのインタプリタで動くので演算速度のメリットはなく、高速な外部ライブラリキックしたほうが断然速い
486: 2023/04/07(金) 23:57:26.65 ID:??? AAS
>>485
torchというライブラリの導入方法がわからいのもあり
とりあえず自分で行列計算のメソッドを書いてみたんですが
これであってますか?
matrix = {}
for i = 1, 3 do
matrix[i] = {}
for j = 1, 3 do
matrix[i][j] = 0
end
end
function matrix_mul(A,B)
local C ={}
for i =1,3
for j = 1,3
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j]
end
end
487: 2023/04/08(土) 14:00:03.12 ID:??? AAS
結局
function matrix_mul(A,B)
local C ={{0, 0, 0},{0, 0, 0},{0, 0, 0}}
for i =1,3 do
for j = 1,3 do
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j]
end
end
return C
end
で行列の計算ができるようになりました
いちいち型指定するのにゼロをいれないといけないのが不便
488: 2023/04/08(土) 23:22:01.03 ID:??? AAS
大体コード部分はできたんですけど
作っているフォームのパネルやエディット、ボタンなどを
コピーアンドペーストして複数設置するようにするにはどうしたらよいでしょうか
489(1): 2023/04/08(土) 23:42:35.29 ID:??? AAS
ショートカットキーでいけんじゃね?
490(1): 2023/04/08(土) 23:50:10.09 ID:??? AAS
画像リンク
こんな感じですね
>>489
右クリックでこんな感じになります
画像リンク
ctrl+c→ctrl+pでいけると私も思ったんですけど
うまくいかなかったです
491(1): 2023/04/09(日) 00:00:19.88 ID:??? AAS
object inspector見ればコピペした後に部品増えてんだろ?
同じ位置に出て気付かないだけで
492: 2023/04/09(日) 00:02:30.50 ID:??? AAS
>>491
ツリー上の所を見ても増えてないです。
チュートリアルにもctrl+c ctrl+pで複製しろみたいな事書かれているので
できるはずなんですけど…
493: 2023/04/09(日) 16:31:21.61 ID:??? AAS
ショートカット使えないならあきらめ
フォームをファイルに書き出して編集、必要な部品コピペして部品IDユニークになるように書き換え、再読み込みとか泥臭いやつでもやってみれば
494: 2023/04/09(日) 19:11:01.80 ID:??? AAS
>>490
気になるから何のゲームか教えてくれませんか
495: 2023/04/15(土) 22:56:42.10 ID:??? AAS
チートエンジンでスクリプトをオンにするとフォームが起動して
オフにするとフォームが消えるようにするにはどうすればいいですか?
496: 2023/04/16(日) 00:46:24.64 ID:??? AAS
m_default_right_breast_tip={{0, 0, 0},{0, 0, 0},{0, 0, 0}}
v_default_right_breast_tip={0, 0, 0}
set_this_matrix_as_default(offset_right_breast_tip,m_default_right_breast_tip,v_default_right_breast_tip,…略
function return_to_the_default(offset,
m_default,
v_default,
text1,text2,text3,text4,text5,
text6,text7,text8,text9,text10,
text11,text12,text13,text14,text15)
print(tostring(writefloat))
writeFloat("[game.exe+01016E44]+offset+0",m_default[1][1])
writeFloat("[game.exe+01016E44]+offset+4",m_default[1][2])
writeFloat("[game.exe+01016E44]+offset+8",m_default[1][3])
writeFloat("[game.exe+01016E44]+offset+10",m_default[2][1])
writeFloat("[game.exe+01016E44]+offset+14",m_default[2][2])
writeFloat("[game.exe+01016E44]+offset+18",m_default[2][3])
writeFloat("[game.exe+01016E44]+offset+20",m_default[3][1])
writeFloat("[game.exe+01016E44]+offset+24",m_default[3][2])
writeFloat("[game.exe+01016E44]+offset+28",m_default[3][3])
writeFloat("[game.exe+01016E44]+offset+30",v_default[1])
writeFloat("[game.exe+01016E44]+offset+34",v_default[2])
writeFloat("[game.exe+01016E44]+offset+38",v_default[3])
・・・・(省略)
end
みたいな形でコードを書くと attempt to index a nil value (local 'm_default')
と出るんですがfunctionの変数に行列を入れた場合行列の成分を使うのできないってことですか?
497: 2023/04/16(日) 00:49:53.33 ID:??? AAS
まとめ方が下手だな・・・
matrix_a={{0, 0, 0},{0, 0, 0},{0, 0, 0}}
で
function X(matrix)
print(matrix_a[1][1])
end
の時
X(matrix_a)
を実行できますか?
ということです
498: 2023/04/16(日) 00:50:08.34 ID:??? AAS
1. チートエンジンのメインウインドウから、「Table->Show Cheat Engine Lua Script」をクリックしてください
2. スクリプトウインドウで、フォームを作成するコードを記述します
```
-- フォームの変数を作成
local form = createForm(false) -- falseはフォームが自動的に表示されないことを意味する
-- フォームのタイトルやサイズなどを設定
form.Caption = "My Form"
form.Width = 300
form.Height = 200
-- フォームにボタンやラベルなどのコントロールを追加
local button = createButton(form)
button.Caption = "Click Me"
button.Left = 100
button.Top = 50
local label = createLabel(form)
label.Caption = "Hello World"
label.Left = 100
label.Top = 100
```
499(1): 2023/04/16(日) 00:55:09.16 ID:??? AAS
3. スクリプトウインドウで、スクリプトを有効化したときにフォームを表示し、無効化したときにフォームを非表示にするコードを記述します
コード書いたらNGワードになるから頑張って書いて
4. スクリプトウインドウで、「Execute Script」ボタンを押してスクリプトを実行します
5. チートテーブルのスクリプトエントリーのチェックボックスをオンにすると、フォームが起動し、オフにするとフォームが消えるはずです
500: 2023/04/16(日) 01:04:13.46 ID:??? AAS
画像にすれば良いのか
画像リンク
501(1): 2023/04/16(日) 01:25:23.29 ID:??? AAS
>>499
スクリプトに
[enabe]
(フォーム名).show()
[disable]
(フォーム名).hide()
じゃだめってことですか?
502(1): 2023/04/16(日) 01:29:04.94 ID:??? AAS
>>501
それでもできると思います
ただし、フォームのインスタンスを作成する必要があります例えば、以下のようなコードです
local form -- フォームの変数
[ENABLE]
form = createForm(false) -- フォームのインスタンスを作成
form.loadFromTable(cheatForm) -- チートテーブルに保存したフォームを読み込む
form.show() -- フォームを表示する
[DISABLE]
form.hide() -- フォームを隠す
503: 2023/04/16(日) 01:37:18.73 ID:??? AAS
>>502
すいません一行目のlocal formがよくわかんないです
画像リンク
504: 2023/04/16(日) 01:59:14.23 ID:??? AAS
local form = createForm(false)
で変数の型を指定してみて
505: 2023/04/16(日) 02:18:11.09 ID:??? AAS
local form = createForm(false)
がコンパイルできないって出ました…
というかluaって変数の型指定って具体的な代入以外でできましたっけ?
506(1): 2023/04/16(日) 02:47:59.32 ID:??? AAS
luaは変数の型指定は必要ありませんが、変数のスコープを指定するためにlocalを使います
Luaでは変数の型は動的に割り当てられるため、必要に応じて異なる型の値を割り当てることができ
もしかしたら、createForm関数が定義されていない可能性があります
507: 2023/04/16(日) 09:58:24.46 ID:??? AAS
>>506
私が使用しているcheatengineはヴァージョン7.5で
以前ここでcelua.txtに使える関数が載ってると言われたので
確認しましたが
createForm(visible OPT): creates a CEForm class object(window) and returns the pointer for it. Visible is default true but can be changed
とあったの定義されてるはず…なんですけどどういうことなんでしょうか…
pythonとかだと〇〇のライブラリ呼び出しますみたいな一文書きますけど
luaにも必要なんでしょうか
508(1): 2023/04/16(日) 10:12:56.19 ID:??? AAS
{$lua}付けてないだけとか?
509(1): 2023/04/16(日) 10:52:11.48 ID:??? AAS
こんなんで動くんじゃね?
{$lua}
local form = nil
{$asm}
[ENABLE]
{$lua}
if form == nil then
form = createForm(True)
end
form.show()
[DISABLE]
{$lua}
if form ~= nil then
form.hide()
end
510: 2023/04/16(日) 10:57:56.21 ID:??? AAS
フォームを✕ボタンで閉じちゃったりすると動かなくなるので、formがnilじゃなくても表示されてるか閉じられたformなのか判定する必要がありそう
フォーム閉じるタイミングのコールバックがあれば何かするとか
511(1): 2023/04/16(日) 12:21:04.96 ID:??? AAS
>>509
form.loadFromTable(cheatForm)
挟んでないのに行けるの?…と思いながらも
実行したらいけました。
というか
[enable]
{$lua}
(ォーム名)a.show()
[DISABLE]
{$lua}
(フォーム名).hide()
でいけました。
>>508 さんの言う通りでした。
{$lua}つけなくてもフォームのコーディングとか他人配布のCTファイルのスクリプトははいけたのになんで?ってなりました。
とりあえずよくわかんない時は{$lua}つけた方がいいんでしょうか
512(1): 2023/04/16(日) 12:35:02.01 ID:??? AAS
>>511
そりゃ<LuaScript>の中に書いてりゃLuaってわかるけど、<AssemblerScrip>の中だと{$asm}が前提になってるから{$lua}って明示する必要があっるてだけじゃね?
513: 2023/04/16(日) 12:41:34.55 ID:??? AAS
>>512
あぁなるほど
すごく初歩的な質問ですいませんでした。
チートエンジンウィキのチュートリアルにはまったく書かれてない内容なんだけど
チートエンジンのチュートリアルが不親切すぎるのか、ここが相当親切なのか…
514: 2023/04/16(日) 14:58:00.90 ID:??? AAS
function f1 (text1,text2)
text1=0
text2=1
end
function ……Click(sender)
f1(form.CEEdit1.text1,form.CEEdit1.text2)
end
みたいなコードを書いて該当のフォームをでクリックしてもform.CEEdit1.text、form.CEEdit2.textの値が変わらないんですけど(しかもエラーはでない)
問題はプログラミング部分でしょうかコーディング部分でしょうか
515(1): 2023/04/16(日) 15:28:07.96 ID:??? AAS
言語仕様よく知らんが、文字列や数値だと値がコピーされて値渡しになってんじゃね?
Editのようなオブジェクト渡せば参照渡ししてくれんじゃね?
516: 2023/04/16(日) 17:39:02.98 ID:??? AAS
>>515
それだ!と思ったのですが調べた見たところオブジェクトは参照渡ししかできないようなので
違うと思います。
オブジェクト
以下の型は オブジェクト である
テーブル
Luaのテーブルは動的に確保された オブジェクト
関数
スレッド
ユーザーデータ
オブジェクトは変数の格納されず、参照されるのみである
代入、引数渡し、関数の返り値は、コピーではなく参照が渡される
テーブルついて
517(1): 2023/04/16(日) 18:01:38.89 ID:??? AAS
Cheat Engine Forumで聞いてみ
Google翻訳でなんとかなるで
518: 2023/04/16(日) 18:35:43.14 ID:??? AAS
form.CEEdit16.text=10000
→フォームの数字が1万になる
function f1(text1)
text1=10000
end
f1(form.CEEdit16.text)
→フォームの数字が変わらない
実験して上記の通りになったんで
本来オブジェクトは参照渡しのはずなのに参照渡しされないっぽいです。
>>517
そっちにも聞いてみます。
519(1): 2023/04/16(日) 18:45:51.94 ID:??? AAS
すごい初歩的で致命的なバグが放置されていたんだね
ヒーローになれるかもしれませんね
520: 2023/04/16(日) 19:11:40.67 ID:??? AAS
>>519
どうも書き換えるだけでなく読み込む方でも関数の引数にeditオブジェクト使えないっぽいんで
やっぱeditオブジェクトのバグなのかなぁと思ったりもします。
521: 2023/04/16(日) 19:15:53.16 ID:??? AAS
はーチュートリアルに実装されてない機能使えとかあったり
フォームはコピペすらできないし
コードに{$lua}って書いてなかったり(チュートリアルに書かれてあるコードだとコンパイルすらできない)
editオブジェクトは引数に使えなかったり
ゴミすぎんだろCE……
522: 2023/04/16(日) 22:12:35.88 ID:??? AAS
forumで効いたら
unction f1(text1)
text1.text=10000
end
f1(form.CEEdit16)
とのことでした。
型指定とかゆるゆるなのにこういうところは厳しいのか…
523(1): 2023/04/16(日) 22:19:50.99 ID:??? AAS
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
でうまくいくのですが、後の改変に備えてモジュール化したいので
offset=0x630
writeFloat("[game.exe+01016E44]+offset+30",v_default[1]+text1.text/1000)
としたらうまくいきません。
どうすればよいでしょうか?
524(1): 2023/04/16(日) 23:15:43.65 ID:??? AAS
オフセットの値ちがくね
525: 2023/04/16(日) 23:55:17.64 ID:??? AAS
>>524
630+30で660では?
readFloat("[game.exe+01016E44]+5d0")では狙い通りのアドレスの値を読み込んでいるため
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
の+660の部分は+0x660であり+630+30に変えても問題ないため
>>523
と判断しました。
んで結局うまく行ってないです。
526(1): 2023/04/17(月) 00:14:00.51 ID:??? AAS
10進数と16進数で違うが合ってると判断してるのなら原因わからんわ
すまんな
527(1): 2023/04/17(月) 00:51:42.16 ID:??? AAS
>>526
いえ、相談にのって頂きありがとうございました。
改めて検証した所こうなりました。
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
→うまくいく
writeFloat("[game.exe+01016E44]+0x630+0x30",v_default[1]+text1.text/1000)
→うまくいく
offset_1=0x630
writeFloat("[game.exe+01016E44]+offset_1+0x30",v_default[1]+text1.text/1000)
→うまくいく
function f2(offset)
writeFloat("[game.exe+01016E44]+offset+0x30",v_default[1]+text1.text/1000)
end
offset_1=0x630
f2(offset_1)
→うまくいかない(errorはでない)
うまくいかない理由が分かる方いらっしゃいませんか?
528: 2023/04/17(月) 01:34:48.57 ID:VG702j39(1)調 AAS
こういうことはやめようね
外部リンク[php]:forum.cheatengine.org
外部リンク[php]:forum.cheatengine.org
529: 2023/04/17(月) 04:12:40.37 ID:??? AAS
開発者に向かってstupidは草
文句だけじゃなくて改善案くらい一緒に書いとけよw
自分で暗に文字列はオブジェクトじゃないとか言っておきながら参照渡しにならないって文句いってるのも草だよな
530: 2023/04/17(月) 05:50:22.94 ID:??? AAS
ipアドレスばれてるだろうから、日本人アホだと思われてるぞ
531: 2023/04/18(火) 20:41:40.83 ID:??? AAS
>>527
さらに検証して
function f2(offset)
local o1=offset
writeFloat("[game.exe+01016E44]+o1+0x30",v_default[1]+text1.text/1000)
end
offset_1=0x630
f2(offset_1)
→うまくいく
でうまくいきました。マジでなんで。
本当に意味不明ですがとりあえず目的は達成しました。
532(1): 2023/04/18(火) 22:38:53.42 ID:yRvVNGuH(1)調 AAS
function f1(offset,vector)
local o1 =offset
vector[1]=readFloat("[game.exe+01016E44]+o1+30")
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいかない
ためしに下記をしてみると
function f2(offset,vector)
local o1 =offset
vector[1]=readFloat("[game.exe+01016E44]+o1+30")
print(vector[1])
print(vector1[1])
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vector1)
→
0.086963586509228
0
で(本来参照渡しであるはずなのに)値渡し状態になってることがわかったんですけど
これどうすればいいでしょうか。
533: 2023/04/19(水) 04:34:38.04 ID:??? AAS
コンパイル必要な言語だとf2の中に出てくるvector1って未定義なんでエラーになるんじゃね?
luaが未定義だからよろしくやってくれて0にしてるとかじゃね?
その書き方だったらf2の前にvector1宣言しとくべきじゃね?
値渡しになってっるってのであれば、f2でreturnして、その値を受け取りゃいいだけじゃね?
534(1): 2023/04/19(水) 08:05:01.52 ID:??? AAS
readFloatとwriteFloatは内部で文字列を解釈してる
そもそもluaの変数名を入れて動いてる事自体が奇跡
たぶんローカル変数しか解釈できないんじゃないの
local address = string.format("[game.exe+0x01016E44]+0x%X+0x30", offset)
local result = readFloat(address)
こうすれば絶対動く
535: 2023/04/19(水) 09:14:42.42 ID:??? AAS
覚えたてのcall by referenceって言いたいだけとか?
call by valueだったとすると型がわからないから何をどこまでコピーすればいいかのコストが高そうな気がする
536: 2023/04/19(水) 19:36:16.14 ID:??? AAS
>>534
cheatengineformで >>534 さんの言う通りだと教えてもらいました。
>>534 さんのコードの方が私のより可読性が高いものの行数が増えるなぁどうしようと思っていた所、
function f2(offset)
writeFloat(readPointer"game.exe+01016E44"+offset+0x30,v_default[1]+text1.text/1000)
end
というコードを教えてもらいました。一番シンプルでわかりやすいのでこれでいこうと思います。
537: 2023/04/19(水) 20:39:20.76 ID:??? AAS
こんな適当なことしか言わない所で聞かずに本家に行ったほうがいいんじゃね?
538: 2023/04/19(水) 21:01:02.50 ID:??? AAS
>>532
この件ですが
function f1(offset,vector)
vector={0, 0, 0}
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいかない
ってのが正しくて試しに
function f3(offset,vector)
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいく
となりました。
関数内で引数の型指定のためにゼロベクトルを代入していたのを辞めた結果うまくいくようになったのですが、
これはどういうことなんでしょうか。ゼロベクトルを代入した結果、vectorとvector1の関係が切れたと見て
いいんでしょうか
539(1): 2023/04/19(水) 23:25:41.98 ID:??? AAS
別オブジェクトの参照で上書きしちゃったんで元オブジェクトが書き変わらないのは当然じゃね?
540: 2023/04/20(木) 19:59:46.88 ID:??? AAS
>>539
ということは
function f1(offset,vector)
vector[1]=0
vector[2]=0
vector[3]=0
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
だとうまくいくということでしょうか。
さらに言えばvector={0, 0, 0}は単純に値を書き換えるという意味ではない何かで
vector[1]=0は単純に値を書き換えるという意味でしょうか
python辺りだと一括代入できて楽なんだけどめんどくさい感ある
541: 2023/04/20(木) 20:58:24.85 ID:??? AAS
Python知らんけどLuaでも{0, 0, 0}で初期化された新しいオブジェクト(インスタンス)作ってんじゃねーの?
一括代入っつーなら長さ10くらいの配列に{0, 0, 0}代入して配列の長さ確認してみりゃいいだけじゃね?
542(1): 2023/04/21(金) 04:48:17.91 ID:??? AAS
CEだとオブジェクトのアドレス表示できない?
アドレス比較はできるのでどんな結果になるか確認してみれば?
a={0, 0, 0}
b=a
if a == b then print("1") end
b[1]=1
if a == b then print("2") end
b={0, 0, 0}
if a == b then print("3") end
543: 2023/04/21(金) 20:41:04.87 ID:??? AAS
>>542 さんのを実行すると
1
2
とでました。また
a=0
b=a
if a == b then print("1") end
b=1
if a == b then print("2") end
b=c
if a == b then print("3") end
を実行すると
1
とでました。ということは基本的に代入すると参照関係が切れるけど
配列の成分に値を入れる場合は特別に参照関係が切れないということで
いいんでしょうか。
544(1): 2023/04/21(金) 22:10:08.66 ID:??? AAS
ただ単に参照って言いたかっただけで実際は何もわかっていなかった人で草
オブジェクトの変数は簡単に言うとデータが入ってるメモリの先頭アドレス
配列の各要素は先頭アドレスからのオフセットでアクセスする(正確には違うけど)
その変数に別データの先頭アドレス入れちゃったらどうなるよ?ってことだよ
あとは、自分で試したのがオブジェクトじゃなくて数値使ってるのも理解できてない証拠
そこはb=cじゃなくてb=0だろ
545: 2023/04/22(土) 17:55:17.42 ID:??? AAS
>>544
>オブジェクトの変数は簡単に言うとデータが入ってるメモリの先頭アドレス
>配列の各要素は先頭アドレスからのオフセットでアクセスする(正確には違うけど)
それとb=1をするとbとaの参照関係切れる切れない関係なくないですか?
配列の構造についての解説自体はありがたいですが…
546(1): 2023/04/22(土) 20:13:40.89 ID:??? AAS
論点ずらすなよ
オブジェクトの話してんのにb=1とか値の話を持ち込んで混乱させてるのはそっちだろ
a={0,0,0}って内部では下のような処理してる
a={} ←どこかのメモリを新規に確保、aにアドレス返す、仮にaddr1とする
a[1]=0 ←writeFloat(addr1+offset+0, 0)
a[2]=0 ←writeFloat(addr1+offset+4, 0)
a[3]=0 ←writeFloat(addr1+offset+8, 0)
b=a ←bにもaの参照であるアドレスaddr1が入る
b[1]=1 ←writeFloat(addr1+offset+0, 1)
ここでは参照先のアドレスaddr1の指す先のデータ書き換えてるだけで、bのアドレス変える操作しとらんだろ?
b={0,0,0} ←aと同じように新規にメモリ確保、別メモリなのでaddr1とは違うaddr2がbに入る
ここでbはaの参照ではなく別データの参照に置き換わったってだけ
参照切れたとか言ってるけど参照切ってるのは君が書いたコード
参照って君が思ってるような選ばれた人しか使えないような高度な考えじゃなくて単なるデータが格納されているメモリのアドレスを指してるだけのものだよ?
547: 2023/04/22(土) 23:51:19.07 ID:??? AAS
>>546
じゃあ結局基本基本的に代入すると参照関係が切れるけど
配列の成分に値を入れる場合は特別に参照関係が切れないということですね
あと配列のパターンじゃなくて
b=1などの数値のパターンだとどうなるんですか?
548: 2023/04/23(日) 00:47:44.80 ID:??? AAS
基本的とか特別って何だよ?
配列の要素に値を設定する処理はbが指してるアドレスにあるデータを更新してるだけで、b自身のアドレスは変更してないだろ?
549(1): 2023/04/23(日) 11:16:35.59 ID:??? AAS
もう数値とか参照関係ないだろ?
値がコピーされるだけで変数の間には何の関係もない
参照になるのはオブジェクトだけって自分で言ってただろ
550(1): 2023/04/25(火) 14:13:40.06 ID:??? AAS
>>549
じゃあ結局代入すると参照関係が切れるけど
配列の成分に値を入れる場合は参照関係が切れないということですね
b=1の場合でもメモリ確保して1の値がそこで保持されてb自体にはアドレスを返す
であってますか?
551: 2023/04/25(火) 18:12:00.70 ID:??? AAS
lua言語の実装としてはデータの入ったアドレスとして管理してるんだろうよ
処理の中で変数bに数値入れたの知ってるから、変数bが指定されたら数値で返してるってだけ
使う側としては0入れたのにアドレスの数値が入ってたらおかしいだろ?
もう悔しくて屁理屈こねて突っ掛かってるだけにしか見えんよ
ソース読めば仕様もバグも全て書かれてるよ
552(1): 2023/04/26(水) 16:18:36.91 ID:??? AAS
>>550
実装によるとしか言えない
いちいち4バイトのメモリを確保してアドレスを保持しているかもしれないし
4バイトではなく8バイトかもしれないし
スタックに保持しているかもしれないし
起動時に予め確保しておいたメモリ領域を使っているかもしれないし
高速化のためにメモリを使わずにレジスタだけを使っているかもしれない
わからんけど動けばよくね
553: 2023/04/26(水) 18:58:50.59 ID:??? AAS
lua実装側の変数のメモリ管理とlua利用側の変数の見え方が混乱しているっぽい
あとは参照というキーワードにこだわりを持ってる
554: 2023/04/26(水) 21:49:26.37 ID:??? AAS
イキりくさってて草
555(2): 2023/04/28(金) 23:43:47.10 ID:??? AAS
>>552
実装によるというのは実行するアプリ(この場合ではcheatengine)という意味ですか?
556: 2023/04/29(土) 08:25:15.56 ID:??? AAS
君は実装とか言い出す前にluaの言語仕様理解しなさい
実装知りたかったらソース読みなさい
557(2): 2023/04/29(土) 09:19:10.08 ID:??? AAS
>>555
質問を読み直してみたけど変数はすべてアドレスの別名だと思って構わない
aという変数を宣言するとLuaが勝手に0x1000000を割り当ててくれるみたいな
その前提があったうえで、さらにaがテーブルの場合は0x1000000に実データが存在する別のアドレス0x2000000を書き込むということ
0x1000000にすべてのデータを書き込めばいいと思うかもしれない
けど0x1000004にはbという変数が割り当てられてるかもしれないから、そのばあい上書きすることになる
そして上書きを避けるために代入のたびに再割当てをすると処理が重くなってしまう
だから妥協の結果としてテーブルの代入で奇妙な挙動が生まれる
直感どおりの代入がしたいならDeepcopyで調べるといい
たしかPythonも同じ問題を抱えてたはず
558: 2023/04/29(土) 09:35:17.40 ID:??? AAS
質問に答え忘れてたからもうひとつ
>>555
そう
けどテーブル代入の奇妙な振る舞いを理解するためにはそこまで考える必要はない
559: LC Production 2023/04/29(土) 18:53:43.55 ID:Wp8DYy46(1)調 AAS
c++でメモリにアクセスして、
敵の情報を取得し、
そのあとメモリを書き換えて視点を移動させる。
コードは教えれないけどそんな感じでチート作れまっせ
560(1): 2023/04/29(土) 21:32:38.26 ID:??? AAS
>>557
deepとかshallowとかの話じゃない
テーブルを関数に渡して、引数の変数を関数内で{0,0,0}で初期化したら呼び出し元に反映されなくなったってのが始まり
その引数をbとすると、b={0,0,0}の代入では参照無くなるのに同じ代入のb[1]=1をすると呼び出し元にも反映されるが違いが理解できないって話
そこで変数はアドレスだという話をしたら、参照は関係ない数値の話を持ち出して数値の変数もアドレスなら~みたいなluaとしての振る舞いと実装が入り雑じった話になってる
561: 2023/04/30(日) 01:44:56.64 ID:??? AAS
なるほどね
こだわりがないならreturnに返り値を乗せて呼び出し元で代入すればいい
どうしても参照渡しがしたいならこうするとか?
function f(offset, pVector)
pVector[1] = {0,0,0}
pVector[1][1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
offset1 = 0x630
vector1 = {0, 0, 0}
f(offset1, {vector1})
今テストできる環境にいないから動くか知らんけど
562: 2023/05/01(月) 21:29:11.09 ID:??? AAS
>>557
わかりました
563: 2023/05/01(月) 21:34:01.79 ID:??? AAS
>>560
質問した側がこういうのも失礼なのは承知してますが
あなたはもう質問に応えないでください。
自然言語でのコミュニケーションに難があるのか、質問が終わって次の質問に移行したことを理解してないし
藁人形論法で私のレスを歪曲した上で罵倒してくるのは不愉快です(参照参照一番わめいてるのはあなた自身であることに気付きましょう)
色々ためになった部分がありますが意思疎通が困難でとてもしんどいのでもうこれ以上反応して頂かなくても結構です。
564: 2023/05/02(火) 07:11:20.61 ID:??? AAS
悪意を持ってミスリードしてたから無視で正解
565: 2023/05/14(日) 14:28:30.85 ID:3mWaNf6U(1/3)調 AAS
てすと
566(1): 2023/05/14(日) 14:28:57.87 ID:3mWaNf6U(2/3)調 AAS
こんにちは。androidエミュレータでCheatEngineのデバッグに成功した方いますか?
windows10環境でCheatEngine7.5のデバッガをbluestacks5(nougat 32bit)で起動している
fgoというアプリにアタッチしても、設定したブレークポイントで止まりません。
そこで、
外部リンク[php]:www.cheatengine.org
このサイトの通りにroot化したbluestacks側でceserverX86を起動し、windows側の
チートエンジンからネットワーク越しにfgoのプロセスを開きました。メモリスキャン&書き換えは
ceserver非使用時同様問題なくできます。しかしデバッガをアタッチするとfgoがクラッシュします。
ceserverのログはptrace errorなどがでます。
ceserverArm32などすべてのバージョンを試しましたが、デバッグアタッチ時に
今度は全部のレジスタが使われているなどのエラーがでます。有識者いますでしょうか?
567(1): 2023/05/14(日) 14:41:17.94 ID:3mWaNf6U(3/3)調 AAS
>>566
続きです。
チートエンジンのデバッガの種類を変更したりはしました。
色々調べているとバージョンによってうまくいくいかないがあるそうです。
また、自分でCEサーバーをコンパイルして成功した人もいるようです。
レジスタall usedエラーはANDROID実機では起きず、仮想CPUだから起きるとの見解もありました。
しかし上記サイトの人は間違いなくエミュレータで成功してます。
これからceserverを自分でビルドしたものに変更したり、
過去のチートエンジン、サーバーのバージョンに変えたり、
androidバージョンを9や11に変えたりしようとは思っています。
最悪安い実機の購入も考えてます。
最近チートエンジンに手を出したので色々手探りでやってますが、わかる方いましたら是非教えてほしいです。
568: 2023/05/20(土) 15:11:53.95 ID:jhXCnLLY(1)調 AAS
>>567
成功しました。お騒がせしました。
569(2): 2023/05/20(土) 15:40:26.97 ID:??? AAS
どうやって成功しました?
自分も過去にやってうまくいかなかったのでよければ教えてください
570: 2023/05/22(月) 13:26:46.68 ID:RqMx9qsL(1/2)調 AAS
>>569
test
571(1): 2023/05/22(月) 13:30:25.44 ID:RqMx9qsL(2/2)調 AAS
>>569
>>569
結局実機買いました。pixel 3a中古整備品です。amazonだと13000円で買えます。やはりレジスタused errorは仮想CPUが原因でした。あとpixel3-aはarm64なのでサーバもarm64を起動します。アドレス参照、書き込み、ブレークポイントでちゃんと止まってレジスタも見れます。あとandroid10ではroot取ってもsystemに書き込めなかったので9にダウングレードしました。
https pwnyourphone.com/
このサイトのツールはandroid10以降のデバイスでsystemの書き込み権限を取るツールなのですが、結構色々頑張っても無理でした。開発者に聞いても無理でした。成功デバイスリストがあるんですけど大体XiaomiかGaraxyです。開発者の回答「HUAWEI などを使用していない限り、Android 9 には悪名高いshared_blocks 読み取り専用機能も EROFS (拡張読み取り専用ファイル システム) も、私の知る限りではありません。」とのことです。なので実機を買う場合はandroid9対応、もしくは10なら上記のセキュリティを突破できるデバイスでないとceserver起動できないかもです。
572(1): 2023/06/08(木) 23:03:00.77 ID:??? AAS
ポインターを指定する際にマイナスのオフセットってありえますか?
ありえるのであればどういうデータ構造だとありえるんですか?
573: 2023/06/09(金) 07:08:49.89 ID:??? AAS
構造体の配列をポイントしている時など
574: 2023/06/09(金) 11:18:05.76 ID:??? AAS
外部リンク:yu-nix.com
構造体の配列自体はここでわかったんだけど
構造体の葉いt列がメモリーにどのように格納されるかとかは
どこら辺のサイトで勉強したらいいですか?
575: 2023/06/09(金) 12:04:45.72 ID:??? AAS
自分でサンプル書いてコンパイルしてみれば?
576: 2023/06/11(日) 04:36:01.68 ID:??? AAS
メモリアライメントで調べれ
577: 2023/06/11(日) 09:15:58.50 ID:??? AAS
データサイズ的に奇数になるような構造体だと分かりやすいね
自分でサンプル書いてアドレスや内容ダンプするのが理解が早いな
sizeof使ってみれば一発でわかるし
578: 2023/06/17(土) 06:10:15.82 ID:??? AAS
構造体の配列自体はなんとなく
メモリアライメント自体はある程度きちんと
理解しました。ただこれらがどうマイナスのオフセットに繋がるかよくわかりませんでした。ごめんなさい。
あと別件ですが12*7*4byte=336byteのメモリの状態をネット掲示板でたやすく交換できるような
シリアルコード的な短い暗号にする方法って何かありませんか?
579(1): 2023/06/17(土) 06:25:32.16 ID:??? AAS
Linked listとか?
Base64とかBase85とかBase65536とか
580: 2023/06/17(土) 06:40:16.61 ID:??? AAS
すいません間違えました
14*12個のfloatなんで672byteです
581: 2023/06/17(土) 07:11:23.74 ID:??? AAS
>>579
>base85
アスキーコード
これでやってみます
582: 2023/06/17(土) 19:06:37.74 ID:RWatc04Z(1)調 AAS
逆アセってなんのことかって思ったらそういうことか
画像リンク
画像リンク
583: 2023/06/17(土) 23:02:48.47 ID:??? AAS
>>571
返信遅れましたが詳しくありがとうございます
参考にさせてもらいます
584: 2023/06/23(金) 22:04:58.03 ID:??? AAS
チートエンジンのCEMファイルってどういうものなんですか?
585(1): 2023/06/27(火) 18:01:18.28 ID:vEbqGmyr(1/3)調 AAS
初心者はツールに頼る前にCとアセンブラ勉強すれば?
仮想マシンでイチから入れればセットアップも躓かないでしょ。
C: VisualStudioとMSVC++
アセンブラ: Netwide Assembler
(godbolt.orgでC->ASMがどうなるか見れる。)
Practical Malwareナンチャラとか、ゴミみたいな日本語の教材(ツールの貧相な紹介)みたいな低レベルの本読むからいかん。
実践て書いてある本は矛盾してることに気づけ。言語の教本(ネットでも良いやつは探せる)読んで自分で始めるのが一番。
Cの構文、ポインタの概念、アセンブラは3、4文字でできた単語と代入の方向、副作用を覚えるだけ。
小学校でYes, It is a pen.だとか、ヨウ素がでんぷんと...ってのを順番に覚えるのと何も変わらん。
"The importance of small steps"って調べてみ。
1から10知るなんて誰も出来ないよ。興味があるから1から10まで全部覚えるだけ。
以上が理解できないなら向いてない。分かってるならそのうちできるようになるから頑張れ。
ところで
>>0572
そのポインタより手前に有効なデータがあるならいつでもそうできるんじゃない?
だから、継承とかリンクトリスト、構造体の配列なんかはそうなるかもしれないね。
アセンブラ読んでてそれがでてきたなら、コンパイラがそうしたかったとしか。
例えば、int * hoge = &fuga->b;だと、fugaのbはhoge[-1]で触るとかね。
586: 2023/06/27(火) 18:03:31.85 ID:vEbqGmyr(2/3)調 AAS
>>585
の安価より下が
>>572
への返信ね。
バカすぎて安価の書き方間違えた。
587: 2023/06/27(火) 18:05:01.70 ID:vEbqGmyr(3/3)調 AAS
> 例えば、int * hoge = &fuga->b;だと、fugaのbはhoge[-1]で触るとかね。
あとfugaのbじゃなくてfugaのa。頭回ってないなぁ...
連投ごめんね
588(3): 2023/06/27(火) 22:37:05.71 ID:??? AAS
まぁボチボチ調べながらやってます。
話は変わりますが
浮動小数点の演算で、任意の小数を引数にした演算、を考えているのですが
誤差が出にくい演算のコーディングのコツってありますか?
なるべく整数演算にするってのは常道だとは思いますが今回考えているのは
任意の小数を引数にした演算なのでそれ以外の方法でコツ があれば教えてください
589: 2023/06/28(水) 00:10:34.77 ID:wvfY4N8I(1)調 AAS
>>588
スレチだしそのくらいググレカス。
精度は型に依るので、単、倍、四倍と扱える桁数は変わってくる。
そもそも小数精度の意味間違えてる。最初から0.9100..00じゃなくて0.91000035..82みたいなのを扱えばズレるわけで。コーディングとかの問題じゃあない。
高精度な浮動小数点を自前で実装するしかないね。
リサーチ癖付けな〜
590(1): 2023/06/29(木) 11:19:25.66 ID:??? AAS
Javaが使えるならプロセス間通信で引数を受け取ってBigDecimalで計算して返すツールを作って常駐させればよさそう
結果を浮動小数点に落とし込むまでは誤差ゼロ
処理速度はだいぶ犠牲になるだろうけど
591: 2023/06/29(木) 11:32:46.32 ID:n3XgK3mH(1/2)調 AAS
>>590
別に任意精度小数はJavaの専売じゃないからどの言語にも実装はあるよ…
あとどっちも浮動小数点ね。2進数に落とし込むまでは、が正解。
自分が重箱したいだけだけど、"演算のコーディングのコツ"と聞かれたら計算そのものの話。
>>588はそもそも自分が何をしてるのか理解してないから日本語もガタガタ。
チート板で聞くような用途でそんな精度いらないと思うけどね。
592: 2023/06/29(木) 11:48:52.90 ID:??? AAS
よく知らないけどその手の演算ライブラリのDLLをCEのプロセスにロードしてAPI叩くのでは?
593: 2023/06/29(木) 15:46:52.13 ID:??? AAS
画像リンク
コンポーネントの並びの順序を変更するにはどうすればいいですか?
594(1): 2023/06/29(木) 15:49:10.58 ID:??? AAS
有効数字は変わらんって言えばいいことをそこまでぐだぐだいう奴が”日本語がガタガタ”笑
595(1): 2023/06/29(木) 16:49:21.90 ID:??? AAS
ツリーはグループとか階層確認だけっぽいけどな
一番裏側の部品から順番に最前面へ持ってけば希望通りに並ぶと思うぞ
あとはフォーム情報のファイル直接いじればZオーダー書いてあるんじゃねーか?
596(1): 2023/06/29(木) 17:27:52.94 ID:n3XgK3mH(2/2)調 AAS
コーディングや計算の段階で誤差が出ると思う奴に"二進数の浮動小数点を使うなら有効桁は変わらないよ"とだけ言って正しく伝わるならそうする。
>>588にそこまで理解力あるならとっくに脱初心者してるんだよなぁ…>>594は人に教えるのうまいでちゅね〜ありがとう〜
597: 2023/06/29(木) 22:16:58.89 ID:??? AAS
>>595
一応できたっぽいんですけど
bring to frontで後ろに来て
send to backで前に来る上、
即時反映はされず一旦エディットモードを終わらせないと反映されませんでした。
これって仕様なんですかね?
598: 2023/06/29(木) 22:22:11.04 ID:??? AAS
バグ報告か改善要望でも出しとけよ
599: 2023/06/30(金) 18:25:14.00 ID:??? AAS
自分より出来ない奴を見下してマウント取るのに必死で草
リアルでも後輩社員にこんな感じで接してるんやろなぁ
600: 2023/06/30(金) 21:57:45.04 ID:??? AAS
言葉の定義にこだわってる感じ社会人というより情報学科の一年生とかだろ
そいつに限らず細かいこと気にしすぎなやつ多すぎ
チーターはチーターらしく結果をでっち上げることだけに専念すればいいのに
601: 2023/07/01(土) 16:46:06.01 ID:??? AAS
>>596
すいませんがそういうのはスレチです
ここはチート初心者スレなんで
そういうレスはコミュニケーション初心者スレとかでお願いします
602: 2023/07/02(日) 13:18:20.12 ID:b/OSoTcu(1)調 AAS
三國無双に似たオフラインゲームで
チートコードを作りたいんだけど知見がある方いれば教えて。。
やりたいことは外伝限定で操作出来るキャラを本編で操作したい。
この場合「誰を操作するか」という情報と
外伝キャラクターのidを特定する必要があると思うんだけど、どうやって特定すれば良いのか、そもそもこの考え方が合ってるのか分からなくて。
因みにドラッグオンドラグーン3っていうPS3のゲーム
603: 2023/07/05(水) 06:19:20.70 ID:Ip85qtpE(1)調 AAS
仕事でC使ってるのにこのスレの内容全く分からん
604: 2023/07/11(火) 01:30:38.33 ID:N7G3fNL2(1)調 AAS
専ブラ停止で人がいるかわからんけども
公式の衣装のバイナリ見るのに適したバイナリエディタとかあったら教えてほしい
上下前次1-新書関写板覧索設栞歴
あと 75 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.022s