チート初心者スレpart2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>503
原因わかった
1回目のinjectionだとfdwReasonがDLL_PROCESS_ATTACHだから
該当の処理が実行されるけど
2回目のinjectionだとそうならないみたい
switchの外に処理を書く もしくは freelibrary使ってアンロードすれば2回目以降も動作するっぽい
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
MessageBox(NULL, “test”, “test”, MB_SYSTEMMODAL);
break;
} http://inaz2.はてなぶろぐ.com/entry/2015/08/10/193103
この記事真似してみたけど失敗した
windows10のメモ帳はshellabout呼んでないみたい setwindowtextあたりで再チャレンジ 明日 GoogleChromeでRPGアツマールのゲーム加速すらできない……
チートエンジンのProcessesタブのchorome.exeを片っ端から開いて加速設定していっても一切変化がない
オンライン要素皆無のゲームだから対策されてるわけでもないと思うんで誰かやり方教えてください ツクール系ならCEよりうさみみハリケーンの方が対応してると思うが ゲームの才能無い割に某TPSでアジアランカーに入れる程度のスキルは身に付いたが
この分野って結局は自力で発明しなきゃいけないこと多すぎてそれに懸けてきた労力も相まってあんまり他人に教える気無くなるんだよな
ハッカー文化とは真逆の思想に行き着いてすまん 少なくとも>>504みたいなクレクレ君には教える気にならない >>505
同一のdllを複数回injectするのならCreateRemoteThread,LoadLibraryを使った通常の方法だと2回目以降は失敗するけど、
PEBのモジュールリンクからinjectしたDLLを外せば何度でも同一DLL inject出来る。
DLLのロード後にリンク外すか、LoadLibrary使わないでマニュアルでinjectするかすれば良い。
そもそも同一のDLLじゃなくても失敗するんだったら、コードが悪いとか言えない。 >>506
x86->x86, x64->x64とか、同一のアーキテクチャ同士ならkernel32.dllとかシステムモジュールのロード位置(アドレス)はプロセス間でも同じだから、
そのまま従来の方法でアドレス渡せるけど、x86->x64とかならロードされるアドレスの相違上、inject対象のプロセスからReadProcessMemory等使ってPEB読み取って、
エクスポートテーブルからCreateRemoteThreadに渡したいAPIのアドレス取得しないと失敗する。
だから、x64でFreeLibrary実行が難しい〜って言うよりもx64->x64にすれば良いだけ。 とりえあず、メモ帳のタイトル変えることはできた
>>513
レスありがとう
>PEBのモジュールリンクからinjectしたDLLを外す
調べてみる
>>514
うん、freelibraryの実行自体は簡単だと思うんだけど
freelibraryに読み込んだDLLのアドレスを渡すのが大変そうだと思った 放置少女とかいう○ゲーでチート(アイテム増殖など)はできないですかね? >>512
教える気にならないんじゃなくてできないから教えられないんだろ? >>518
ここはある程度できる人が躓いてるところを補う場所であって
>>494>>504>>517みたいな乞食に施すスレではないので 初心者から上級者まで基本的に英語出来るかグーグル翻訳をある程度補完できる知能があるやつなら英語圏のサイトですべて事足りる
よってここもそうだが上級者スレは尚更需要無いだろうな
なんとなくワンチャン5ちゃんねらー特有の情報出てくるかなーと思ってロムったり何度かレスしたりしたが未だ価値ある情報は一つも見たことがない >>521
ならどんな書き込みがあっても文句は言えないな https://www.keicode.com/windows/win08.php
これ真似したけど失敗した
どうやらwindows7以降は署名がないと動かない模様
https://docs.microsoft.com/ja-jp/windows/win32/win7appqual/appinit-dlls-in-windows-7-and-windows-server-2008-r2
Microsoft is modifying the AppInit DLLs facility in Windows 7 and Windows Server 2008 R2 to add a new code-signing requirement. Win10の最新でもAppInitのインジェクションはできるよ
Win7以降からはマイクロソフトが証明書つけた方がいいんじゃねって言いだしただけで、RequireSignedAppInit_DLLsの値を変えれば普通に動く ありがとう
確かに記事の下に書いてあったわ
RequireSignedAppInit_DLLs
0 Load any DLLs.
1 Load only code-signed DLLs.
でも試してみたけどだめだった
たぶんどっか間違ってるんだけだろうけどもういいや(このやり方にあまり興味がない)
https://stackoverflow.com/questions/9027642/simple-dll-injection-not-working-using-appinit-dlls-dllmain-not-getting-callev 未だにinjection、しかも64bitと32bitの違いすらも分かっていない
まるで成長していない… おい・・・
見てるか>>31・・・
お前を超える逸材がここにいるのだ・・・!!
それも・・・
2人(>>494,>>504)も同時にだ・・・
>>31・・・ その動画の意味が分かるやつが入門者なのか
先が長すぎて嫌になるぜ… お 俺以外の初心者おったんかいな
先が長すぎてすぐ挫折する人(何年かしてまた取り組んでみる)の末路が俺だよ ゲームのプロテクト解除しようと思ったら
https://schiphol.5ch.net/test/read.cgi/mmosaloon/1208457391/
262,263,264,267,274,282,334,340,343,347,350,351,371,961,967
この人たち並みの知識と解析技術(バイナリファイルを読むテクニックと経験)が要求されるのだと思う
これ2009年の話だから今はもっと難しくなってるんですかね
どうなんですか 安西先生! >>537も良かったら一緒に勉強しよう
俺は今何やってるかというと昔調べた項目を実際に手を動かして確認する作業
(2年前は調べてみただけでゴールの遠さに目眩がして挫折しちゃった)
・dll injection(createremotethredを使ったやり方)
成功
・dll injection(AppInit_DLLs)
失敗
・iat hooking
成功
・メッセージフック(setwindowshookex)
めちゃくちゃしょぼい実験は成功
・inline hooking
これから試す
・デバイスドライバ作成
まだ
・SSDT hooking
まだ
・IDT hooking
まだ
・IRP hooking
まだ
crackme, unpackmeとか
windbgとか
項目はたくさんあるぞい! >>538
初心者どころか入門未満だ
CとC#の基本を勉強したけど解析に繋がるものもなかったし
>>498とか>>505みたいの全く意味分からなくて萎え掛けてる >>541
俺は何度も挫折してるし、その内挫折しちゃう(1、2週間後?)予感もあるから励ましの言葉もないよ
ゲームプロテクトはずせるのは頭がいい人 or 要領がいい人 or 地道に努力できる人
or バイナリ眺めて性的興奮覚えるような変態ぐらいだと思う
>>541が変態であることを祈るよ
>>498は何の知識もなしに見ても不明だよ
ざっくり言うと
IAT(Import Address Table)にDLLの関数のアドレスが格納されていて
windowsアプリケーションはIATをみて関数のアドレスを取得して実行しているから
そのIATを書き換えて自作の関数に処理を飛ばしちゃおうというやり方
iat フック とかでググれば説明してるサイトは複数ヒットするよ
ももいろテクノロジー IAT書き換えによるAPIフックをやってみる
http://inaz2.はてなぶろぐ.com/entry/2015/08/10/193103
APIフック
http://jackseven.s22.xrea.com/programming/apihook.html
などなど
何故かはてなぶろぐのurlがNGワードなんだよね >>541
C/C++は勿論、C#のような静的型付け言語ならかなり解析に繋がるはずだけどな
これらの高級言語を習得してからアセンブラを見れば大体どういう処理なのかを察せるようになる
その逆に解析中のアセンブラから高級言語の機能への理解が深まったりもして相乗効果 RequireSignedAppInit_DLLsっていま存在するかね
当方Microsoft Windows [Version 10.0.17763.775]だけど
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs
の両方に存在しないんだよなぁ 最終的に何がしたいのかさっぱり伝わって来ない
ただ勉強してることを日記に書いてるだけ? >>548
> 最終的に何がしたいのかさっぱり伝わって来ない
最終目標で言うと最新ゲームのプロテクトを無効or回避出来るようになりたい
> ただ勉強してることを日記に書いてるだけ?
うん >>547
存在しなかったから作って実験してた
今振り返ると0じゃなく1に設定してやってたかも >>547
https://attack.mitre.org/techniques/T1103/
これを試してみたかったんだ。
この手法には3つのレジストリキー値の設定が必要らしく、それは
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs
のいずれかにある
AppInit_DLLs
LoadAppInit_DLLs
RequireSignedAppInit_DLLs
なんだけど、最後のRequireSignedAppInit_DLLsが、上2つの両方のキーに無いんだよね。
自分で新規作成してもDLLは読み込まれなかったし、非署名のDLLはAppinit_DLLsには使用できなくされてるのかなと考えたり… Nikolay Igottiって人が考えたやり方試す
最初に下位アドレスをpushして、その後に上位アドレスを上書き
retでそのアドレスに飛ぶ
[cpp]
push 0xAAAAAAAAA 68 AA AA AA AA
mov DWORD PTR [rsp+0x4],0xBBBBBBBB c7 44 24 04 BB BB BB BB
ret MessageBoxAの呼び出しを自作関数にすり替えるところまで出来た。
アラインメントを全く気にしてないけど取り敢えず動いた。
BYTE jump[14] = {
0x68,0x90,0x90,0x90,0x90, // push <自作関数のアドレス下位4バイト>
0xc7,0x44, 0x24, 0x04, 0x90, 0x90, 0x90, 0x90, //mov DWORD PTR [rsp+0x4],<自作関数のアドレス上位4バイト>
0xc3}; //ret
FARPROC pTargetFunctionAddr = GetProcAddress(hModule, "MessageBoxA");
FARPROC pMyFunctionAddr = (FARPROC)&MyMessageBoxA;
memcpy(&jump[1], ((char*)&pMyFunctionAddr), 4);
memcpy(&jump[9], ((char*)&pMyFunctionAddr)+4, 4);
//MessageBoxAの先頭コードをjumpコードに書き換え
DWORD OriginalProtection;
VirtualProtect(pTargetFunctionAddr, 14, PAGE_EXECUTE_READWRITE, &OriginalProtection);
memcpy(pTargetFunctionAddr, jump, 14)
MessageBoxA(0, 0, 0, 0);
} そんな10年前のフックのやり方せずとも今はMinHookとかいろいろ便利なライブラリがあるぞ これか
https://github.com/TsudaKageyu/minhook
この人すごいな
Detoursに1万ドルも払えないから作った言うとる vac bypassとかでググってるんだけどまあまあ面白い
(内容あんま理解できてないけど)
vmt hooking後々調べてみよう
>>561のコードをいじくりつつ
しばらくはvac bypassとかpunkbuster bypassとかをググる日々かな >>561
書き換える前
48:83EC 38 | sub rsp,38 |
45:33DB | xor r11d,r11d |
44:391D 42650300 | cmp dword ptr ds:[7FFCA43E8290],r11d |
74 2E | je user32.7FFCA43B1D7E |
書き換えた後
68 3710A5D3 | push FFFFFFFFD3A51037 |
C74424 04 F67F0000 | mov dword ptr ss:[rsp+4],7FF6 |
C3 | ret |
74 2E | je user32.7FFCA43B1D7E |
たまたま長さが一致してた
汎用的にやろうとすると元のコードの命令の長さ求めて、はみ出た分はnopで埋める処理が必要になるのだろうけどめんどくさそう
minhookはどうやってるんだろう 後で調査 unknowncheatsおもしろいな
有益な情報がたくさんある気がする
以前MPGHを何回か読んだことがあるけど断然こっちの方がいい気がする
気のせいかもしれんが
How to Learn When You Have Decided To Learn
https://www.unknowncheats.me/forum/programming-for-beginners/315634-learn-decided-learn.html サーフィンしてて気になった事メモ
解析ツール
binary ninja、ghidra、ida pro、reclass
ssdt hooking win10では激ムズになった?
win10driver
署名なしはテストモードのみ動作 BEとかはそれを検知してくる
dse無効化、既存のデバイスドライバの脆弱性を利用してカーネルモードで動作させる cheat engine でアイテム名の変更をやっていて、
AというアイテムをBという名前に変更したら、所持品以外にも敵のアイテム名もAからBに変わってしまいます。
これを自分の所持品の一つだけを変更することは出来ないでしょうか?
スキャンしてもそれらしいアドレスがでないので、やり方などを教えて貰えると助かります。 >>570
その知識レベルだと多分すぐには無理だろうが
string型(文字列)はちゃんとしたプログラマかコンパイラなら同じ文字は出来る限り同じデータを参照するように作られため、参照先の文字列を変えたらそれを参照するものは全て変更後の文字になる
つまり自分が所持するアイテムAのインスタンスだけアイテム名へのポインタを自分で書き込んだ文字列へのポインタにすり替えれば良い
そのためにはまず自分の所持品リストのアドレスを探して、そのリストから目的のアイテムのインスタンスまでたどり着く必要がある
所持品のスロット場所を変えたり個数を変えたりとかすれば見つかるんじゃない 色々書いたけど要するに文字列の処理は単純な数値変えたりってのと比べたら何段も難しい
俺が持ってるゲームだったらそれくらいのチートテーブル作ってやってもいいけどな >>570
その文字列が格納されてるメモリアドレスに対して
メモリアクセスのブレークポイント仕掛ければ
その文字列を参照しているポインターが分かるのでは? >>571-573
どこから始めればいいか分からなかったので、教えていただいたことから調べていこうと思います。
お二人ともアドバイスありがとうございます! IPUSIRONって人逮捕されてたのか
日本ってセキュリティ関連の記事とか教材が少ない気がするんだけど
法律のせいなんかね 法律のせいもあるんじゃね
プロテクト外す系は話題がせいぜいで、ソースやバイナリUPしよう物なら不正競争防止法で
逮捕されるかもだし
こういうのって、出来る奴らか公開した情報をもとに中級以下が修行するのに
有意義なサンプル出せないからな
あと純粋にPCネトゲは終わってる ググって見たら無限ループでも摘発されるんだなw
検察アホすぎだろ 日本人が大したこと知ってるとは思えないから法のせいで記事が上がらずとも全く困らない Apexのチート作り方有償で教えますよ
EAC Bypass Driverもあり。
Discord: CopyAgent#9435 他板に該当スレが無かったので、若干スレ違いかもしれませんがこちらに失礼します
最近CheatEngineに手を出して、オフゲーのSLGをプレイしています
そのゲームにおいて、
1,CEを起動し、プロセスを選択すると同時に指定のAOBスキャンを実行
2,そのAOBスキャン結果をベースアドレスとして、複数のアドレスを定義付け
というコードファイル(CT?)を作りたいのですが、上手く出来ません
Youtubeで似た事例の動画やフォーラムを見て、見様見真似なのでどこがどう駄目なのかが理解できず…
AOBスキャンをする文字列や、変更したい数値のオフセットは恐らく合っていると思うのですが
https://ux.getuploader.com/nobu15/download/59
恐らく分かる方が見たら酷いスクリプトを書いてるのだとは思うのですが、
添削もしくは書き方のヒントを教えて頂けないでしょうか
ちなみに、参考にした動画やフォーラムは
https://forum.cheatengine.org/viewtopic.php?p=5545429
https://youtube.com/watch?v=vDsbIpu8H30
この辺りです
フォーラムのAug 05, 2014 6:57 pmからAug 06, 2014 3:44 amの流れも、
コードファイルに盛り込めればなぁと思っています 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) CEの Memory Viewe → Tools → Lua Engine
これでエディタ開けるからコード入れてExecuteしてみてね。
問題があればScript Errorが出るからエラーになってる行をよく見て修正してね。
あと、マルチポストはよくないよ。
https://medaka.5ch.net/test/read.cgi/gamehis/1521630363/ >>589
すみません、該当スレは人が居なくなってしまったようだったので…
検索するベースアドレスにFFが入っているせいだと思うのですが、
実行すると「expected near 'FF'」でエラーが出てしまいます
アドレスにFFの値があると、そもそも指定出来ないということでしょうか? Process HackerがWindowsDefenderに検出されるようになったのって俺だけ? どなたか>>588と>>590分かる方いませんか? チートが検出されたら、過去にそのチートを使用していた人もbanされるんですか?
今使ってないとしても チートエンジンを使用してステータスを2つから振り分け 一つを見つけていじれると思ったら
すぐにまた戻ってしまいます。チートエンジンの機能に固定化はありますが格納される前メモリを
いじれば固定化できるのでしょうか Apexのチート開発の仕方教えます。
Discord: 水谷#1584 >>597
検索したアドレスをダブルクリックして下の枠へ登録すると
一番左端に「凍結」というのがあると思う
それにチェック付けておけばOK そういうのは凍結しても意味ないよ
そのすぐに戻ってしまうという値へのWriteアクセスを確認して、書き込んでくるアセンブラコードを書き込まないように修正するのが正しいアプローチ MmCopyVirtualMemoryの使い方教えて cheat engine 7.0 をWindows10で使っています。
NOX 6.6.でスピードハックしようとしたらDLL Injection Failed と出ました
動画の通りforcedinjection-i386.dll等を使おうとしました
そしたら今度はnot be loaded - Error 126 とか 139 が出てきました。もうどうしたらよいのか分かりません。助けてください ■ このスレッドは過去ログ倉庫に格納されています