X



チート初心者スレpart2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ネトゲ廃人@名無し
垢版 |
2016/04/26(火) 18:05:45.74ID:???
ミジンコ同士勉強していこうぜ

●定番解析ソフト
・デバッガ OllyDbg
http://www.ollydbg.de/
・プロセスメモリエディタ兼デバッガ スペシャルねこまんま57号
http://www.vector.co.jp/soft/win95/hardware/se254476.html
・プロセスメモリエディタ兼デバッガ+加速器 うさみみハリケーン
http://www.vector.co.jp/soft/win95/prog/se375830.html
●バイナリエディタ
・Stirling
http://www.vector.co.jp/soft/win95/util/se079072.html
・Binary Editor BZ ※4GBまで編集可
http://www.zob.ne.jp/~c.mos/soft/bz.html
●解析参考サイト
・Digital Travesia ※OllyDbg日本語化パッチあり
http://hp.vector.co.jp/authors/VA028184/

前スレhttp://schiphol.2ch.net/test/read.cgi/mmosaloon/1210219737/
ツールのクレクレ、売ります系はスルーで
0464おちんもザウルス
垢版 |
2019/09/11(水) 01:49:35.80ID:???
普通に考えて、プロセスを分けてる以上値の受け渡しが必要なのは仕方ない
ユーザ空間ではそれぞれのプログラムが干渉しあうなんてことはあってはならない
って前提のもとにOSは作られてるわけだから、OS自体がそんなことできるような
機能を提供しているわけがないし、もしそんなことができたらそれはOSの欠陥だからw
質問自体がナンセンス
0466ネトゲ廃人@名無し
垢版 |
2019/09/11(水) 09:37:17.26ID:???
OSの管理をぶち壊す上でって予め言ってるよな
説明が悪いとか言われたけど参照ってことも最初から言ってるのに参照と値渡しの違いも理解してない、つまりはチーターにとって基礎事項のポインタすらも理解してないレベルはさすがにご遠慮願いたい
まぁ初心者スレで聞いてる俺の方がスレチか
0467おちんもザウルス
垢版 |
2019/09/11(水) 10:12:52.60ID:???
OSの管理をぶち壊す上で(笑)ってそんなことできないのが当たり前でしょ
現代OSがなぜプロセスという形で独立させているか、意図をちゃんと理解していれば
そもそもそんなナンセンスな発想自体浮かばないって話だよ
仮にそういうことができちゃったらMicrosoftに報告すれば金もらえるレベルの話だと思うが?
オペレーティングシステムの基礎くらいはちゃんと勉強しような^^;
0471ネトゲ廃人@名無し
垢版 |
2019/09/13(金) 15:05:51.58ID:???
チートエンジンをNOXのアプリ(モバ7)に使用しているのですが
メモリ書き換えは出来てもspeedhackのチェック欄にチェックを入れると

「Failure cofiguring speedhack part1: 13:offset too big」とエラーポップアップが出てきました。
海外サイトを調べても対処法が書いておらず…どなたか分かりませんか…
0476ネトゲ廃人@名無し
垢版 |
2019/09/26(木) 00:04:20.32ID:???
こんにちは>>31です 久々(2年ぶり!)にこのスレ見た
前回は見事な三日坊主っぷりだったぜ
また三日で挫折するけど久々に取り組んでみる
0477ネトゲ廃人@名無し
垢版 |
2019/09/26(木) 02:07:45.31ID:???
>>466
直接参照したいならdllぶち込めば済む話だろ。
rpmが遅いなんて聞くまでもないし、そもそも外部でやる意味ね。内部でいいじゃん。
ちなみに、値渡しってよりも正確には読み取りだけどね。
0478ネトゲ廃人@名無し
垢版 |
2019/09/26(木) 03:41:16.74ID:???
アセンブラとかバイナリがわかんねぇー
素早く身につける方法教えてくれ
0484おちんも
垢版 |
2019/09/26(木) 22:10:44.98ID:???
このスレ意味ないだろ
低レベルな上に時々妙にイキった>>466みたいな無知が現れるだけじゃないか
048531
垢版 |
2019/09/26(木) 23:31:25.37ID:???
ImageDirectoryEntryToData関数使って関数名とアドレスを一覧表示しようとしてるんだけど
メモリエラーなるわ windows10の64bitだからなのかな
0495ネトゲ廃人@名無し
垢版 |
2019/09/28(土) 03:05:12.47ID:???
ブラウザゲーならどのプロセスで動いてるのかさえ特定できれば
プロセスメモリエディタで好き放題できるだろ
0496ネトゲ廃人@名無し
垢版 |
2019/09/28(土) 15:44:16.01ID:t4lItgWw
495様

そういった知識が0なのでご教授願いたいです 師匠
0498ネトゲ廃人@名無し
垢版 |
2019/09/29(日) 04:51:05.94ID:???
>>486
iat hookにチャレンジしたいのよ
その前段階

>>485
でけた

Baseの前の(char*)が無いとでかい数値になってメモリアクセス違反が発生して
(char*)つけたら上手く動作した
なんでこれが必要なのか分からん
アドレスの足し算にキャストが必要な理由がわかってないからいっぺん死んでくる

for (; pImageImportDescriptor->Characteristics != 0; pImageImportDescriptor++) {
printf("-%s\n", ((char*)Base) + pImageImportDescriptor->Name);
IMAGE_THUNK_DATA64* pINT = (IMAGE_THUNK_DATA64*)((char*)Base + pImageImportDescriptor->OriginalFirstThunk);
for (; pINT->u1.AddressOfData; pINT++) {
if (IMAGE_SNAP_BY_ORDINAL64(pINT->u1.Ordinal)) {

}
else {
IMAGE_IMPORT_BY_NAME* tName = (IMAGE_IMPORT_BY_NAME*)((char*)Base + pINT->u1.AddressOfData);
printf("%s\n", tName->Name);
}
}
}
0502ネトゲ廃人@名無し
垢版 |
2019/09/29(日) 16:41:41.42ID:???
その頃はどんな書き込みしても教えてくれる人がいたんだな
羨ましい
0503ネトゲ廃人@名無し
垢版 |
2019/09/29(日) 18:28:12.28ID:???
羨ましいね

iat hookとdll injection(createremotethread)それぞれ独立だけど出来た
dll injectionって同じプロセスに対して一回しか出来ないのね 何でだろ
0505ネトゲ廃人@名無し
垢版 |
2019/09/29(日) 20:44:51.09ID:???
>>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;
}
0507ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 01:13:35.33ID:???
http://inaz2.はてなぶろぐ.com/entry/2015/08/10/193103
この記事真似してみたけど失敗した
windows10のメモ帳はshellabout呼んでないみたい
0509ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 02:13:41.78ID:???
GoogleChromeでRPGアツマールのゲーム加速すらできない……
チートエンジンのProcessesタブのchorome.exeを片っ端から開いて加速設定していっても一切変化がない
オンライン要素皆無のゲームだから対策されてるわけでもないと思うんで誰かやり方教えてください
0510ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 02:34:30.43ID:???
ツクール系ならCEよりうさみみハリケーンの方が対応してると思うが
0511ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 11:53:38.33ID:???
ゲームの才能無い割に某TPSでアジアランカーに入れる程度のスキルは身に付いたが
この分野って結局は自力で発明しなきゃいけないこと多すぎてそれに懸けてきた労力も相まってあんまり他人に教える気無くなるんだよな
ハッカー文化とは真逆の思想に行き着いてすまん
0513ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 15:19:38.90ID:???
>>505
同一のdllを複数回injectするのならCreateRemoteThread,LoadLibraryを使った通常の方法だと2回目以降は失敗するけど、
PEBのモジュールリンクからinjectしたDLLを外せば何度でも同一DLL inject出来る。
DLLのロード後にリンク外すか、LoadLibrary使わないでマニュアルでinjectするかすれば良い。
そもそも同一のDLLじゃなくても失敗するんだったら、コードが悪いとか言えない。
0514ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 15:32:39.99ID:???
>>506
x86->x86, x64->x64とか、同一のアーキテクチャ同士ならkernel32.dllとかシステムモジュールのロード位置(アドレス)はプロセス間でも同じだから、
そのまま従来の方法でアドレス渡せるけど、x86->x64とかならロードされるアドレスの相違上、inject対象のプロセスからReadProcessMemory等使ってPEB読み取って、
エクスポートテーブルからCreateRemoteThreadに渡したいAPIのアドレス取得しないと失敗する。
だから、x64でFreeLibrary実行が難しい〜って言うよりもx64->x64にすれば良いだけ。
0515ネトゲ廃人@名無し
垢版 |
2019/10/01(火) 22:57:34.08ID:???
とりえあず、メモ帳のタイトル変えることはできた

>>513
レスありがとう
>PEBのモジュールリンクからinjectしたDLLを外す
調べてみる
>>514
うん、freelibraryの実行自体は簡単だと思うんだけど
freelibraryに読み込んだDLLのアドレスを渡すのが大変そうだと思った
0517ネトゲ廃人@名無し
垢版 |
2019/10/02(水) 21:30:34.65ID:???
放置少女とかいう○ゲーでチート(アイテム増殖など)はできないですかね?
0518ネトゲ廃人@名無し
垢版 |
2019/10/03(木) 03:20:51.94ID:nukVUHES
>>512
教える気にならないんじゃなくてできないから教えられないんだろ?
0521ネトゲ廃人@名無し
垢版 |
2019/10/03(木) 10:43:31.36ID:???
初心者から上級者まで基本的に英語出来るかグーグル翻訳をある程度補完できる知能があるやつなら英語圏のサイトですべて事足りる
よってここもそうだが上級者スレは尚更需要無いだろうな
なんとなくワンチャン5ちゃんねらー特有の情報出てくるかなーと思ってロムったり何度かレスしたりしたが未だ価値ある情報は一つも見たことがない
0531ネトゲ廃人@名無し
垢版 |
2019/10/04(金) 08:49:19.96ID:???
Win10の最新でもAppInitのインジェクションはできるよ
Win7以降からはマイクロソフトが証明書つけた方がいいんじゃねって言いだしただけで、RequireSignedAppInit_DLLsの値を変えれば普通に動く
0532ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 04:04:06.88ID:???
ありがとう
確かに記事の下に書いてあったわ
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
0535ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 21:21:47.30ID:???
未だにinjection、しかも64bitと32bitの違いすらも分かっていない
まるで成長していない…
0536ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 22:37:25.76ID:???
おい・・・
見てるか>>31・・・

お前を超える逸材がここにいるのだ・・・!!

それも・・・
2人(>>494,>>504)も同時にだ・・・


>>31・・・
0537ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 22:55:32.22ID:???
その動画の意味が分かるやつが入門者なのか
先が長すぎて嫌になるぜ…
0538ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 23:03:00.77ID:???
お 俺以外の初心者おったんかいな
先が長すぎてすぐ挫折する人(何年かしてまた取り組んでみる)の末路が俺だよ
0539ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 23:24:01.09ID:???
ゲームのプロテクト解除しようと思ったら
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年の話だから今はもっと難しくなってるんですかね
どうなんですか 安西先生!
0540ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 23:38:58.58ID:???
>>537も良かったら一緒に勉強しよう
俺は今何やってるかというと昔調べた項目を実際に手を動かして確認する作業
(2年前は調べてみただけでゴールの遠さに目眩がして挫折しちゃった)
・dll injection(createremotethredを使ったやり方)
 成功
・dll injection(AppInit_DLLs)
 失敗
・iat hooking
 成功
・メッセージフック(setwindowshookex)
めちゃくちゃしょぼい実験は成功
・inline hooking
これから試す
・デバイスドライバ作成
 まだ
・SSDT hooking
まだ
・IDT hooking
 まだ
・IRP hooking
まだ

crackme, unpackmeとか
windbgとか
項目はたくさんあるぞい!
0541ネトゲ廃人@名無し
垢版 |
2019/10/05(土) 23:56:42.45ID:???
>>538
初心者どころか入門未満だ
CとC#の基本を勉強したけど解析に繋がるものもなかったし
>>498とか>>505みたいの全く意味分からなくて萎え掛けてる
0542ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 00:47:15.89ID:???
>>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ワードなんだよね
0545ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 09:16:07.12ID:xHi2dDCo
>>541
C/C++は勿論、C#のような静的型付け言語ならかなり解析に繋がるはずだけどな
これらの高級言語を習得してからアセンブラを見れば大体どういう処理なのかを察せるようになる
その逆に解析中のアセンブラから高級言語の機能への理解が深まったりもして相乗効果
0546ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 09:30:11.41ID:p5Qrl05+
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
の両方に存在しないんだよなぁ
0547ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 09:40:45.22ID:???
最終的に何がしたいのかさっぱり伝わって来ない
ただ勉強してることを日記に書いてるだけ?
0548ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 09:54:47.70ID:???
>>548

> 最終的に何がしたいのかさっぱり伝わって来ない
最終目標で言うと最新ゲームのプロテクトを無効or回避出来るようになりたい

> ただ勉強してることを日記に書いてるだけ?
うん
0549ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 09:57:09.65ID:???
>>547
存在しなかったから作って実験してた
今振り返ると0じゃなく1に設定してやってたかも
0550ネトゲ廃人@名無し
垢版 |
2019/10/06(日) 10:02:26.33ID:p5Qrl05+
>>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には使用できなくされてるのかなと考えたり…
0553ネトゲ廃人@名無し
垢版 |
2019/10/07(月) 00:18:02.32ID:???
x64 inline function hookingで検索して見つかった記事
まだあんま読めてない
https://blog.nettitude.com/uk/windows-inline-function-hooking
https://www.ragestorm.net/blogs/?p=107
https://www.blackhat.com/docs/us-16/materials/us-16-Yavo-Captain-Hook-Pirating-AVs-To-Bypass-Exploit-Mitigations.pdf

qiita x64の関数呼び出し
https://qiita.com/FAMASoon/items/a93c1361f80bb28f895c
x86だと引数はスタックに積んでたけどx64は第6引数までレジスタにいれて
第7引数以降はスタックに積むみたい
0554ネトゲ廃人@名無し
垢版 |
2019/10/07(月) 03:39:12.24ID:???
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
0556ネトゲ廃人@名無し
垢版 |
2019/10/08(火) 00:41:06.26ID:4aDKR6xF
保守
0557ネトゲ廃人@名無し
垢版 |
2019/10/08(火) 00:41:13.69ID:4aDKR6xF
保守
0561ネトゲ廃人@名無し
垢版 |
2019/10/14(月) 01:18:48.77ID:???
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);
}
0562ネトゲ廃人@名無し
垢版 |
2019/10/14(月) 06:59:51.19ID:???
そんな10年前のフックのやり方せずとも今はMinHookとかいろいろ便利なライブラリがあるぞ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況