- C++相談室 part123 [無断転載禁止]©2ch.net
891 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:11:47.22 ID:ebD6jQFi - >>882
> 属性? OpenProcess(PROCESS_ALL_ACCESS でメモリの属性を変更してるじゃん https://msdn.microsoft.com/ja-jp/library/cc429278.aspx によるとPROCESS_ALL_ACCESSは PROCESS_VM_WRITE このプロセスの仮想メモリへの書き込みを行うために、 関数がこのプロセスのハンドルを使うことを認めます。 を含んでるからこれでメモリの属性変更してる これしないでメモリ書き換えようとすると例外が発生するはず
|
- C++相談室 part123 [無断転載禁止]©2ch.net
892 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:17:08.75 ID:ebD6jQFi - >>887
とりあえずもう日付変わったがまだまだ続けるよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
894 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:22:50.92 ID:ebD6jQFi - >>893
俺は ID:wytOYZTk ID:ebD6jQFi だがそれは俺に言ってんの?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
896 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:44:59.58 ID:ebD6jQFi - >>895
> アタッチで何を「ロード」するんだよ w アタッチするのは書き換え先のプロセス ロードするのは書き換えもとのオブジェクトファイル なんでスッと理解できないのか… > シンボルあるならそれ使えばいいだけ wwwwDLLにはシンボル情報は「常に」あるよ > 何度も書くがスタティックライブラリだと手も足も出ないだろ? そりゃDLL Injectionだからな。ただ、スタティックリンクされた関数をDLLで上書きできる それと手も足も出てないのはお前も一緒だろwww まだ*.oを実行時にリンクするコードを示せてないからなw > まあ、100歩譲って API 中で操作してるメモリープロテクション関連の設定を属性って言ってるって思ってやるよ スゲー負け惜しみwww最高ww > 権限のチェックが入ってるから API が失敗するだけ そりゃそうか。逆にAPIを使わずに直接メモリを書き換えたら権限の有無でどうなるんだ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
898 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:49:04.42 ID:ebD6jQFi - >>895
とりあえず揚げ足取り合戦はこれぐらいにして、ローダーも理解せずに どうやって*.oをロードするんだ? リンクで教えてもらったのは単にメモリを書き換える方法だけだぞ 結局それらをまとめた処理をDLL Injectionって言うんだけど 理解してもらえるまで(またはお前がMy DLL Injectorを作るまで)付き合うよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
899 :デフォルトの名無しさん[sage]:2016/04/01(金) 00:50:13.04 ID:ebD6jQFi - >>897
さっきから誰宛だ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
903 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:00:10.90 ID:ebD6jQFi - >>900
俺は ID:yO7JBNvw ID:wytOYZTk ID:ebD6jQFi だが、postMessageなんて一度も書き込んでないけどどういうことだ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
906 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:06:20.68 ID:ebD6jQFi - >>895
とりあえずWindowsでDLL Injectionのやり方 http://inaz2.hatenablog.com/entry/2015/08/08/223643 で、ここの最後の行で > DLLを使わないコードインジェクション > ここではRemoteCreateThread関数でLoadLibrary関数を呼び出したが、 > WriteProcessMemory関数で実行可能メモリを確保し、 > そこにコードをコピーして直接実行させることも可能である。 > この場合DLLが不要となる一方、利用するAPI関数一式のアドレスを事前に取得し、 > 構造体などの形でコピーしたコードに渡す必要があるため、 > 複雑なコードの実行には適さない。 ちょっとググるだけでこんなん出てきたよ さあどうする?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
907 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:08:37.84 ID:ebD6jQFi - >>904
PostMessageは上のほうでなんかやり合ってた話題か とりあえず俺はDLL Injection君でいいよw
|
- C++相談室 part123 [無断転載禁止]©2ch.net
909 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:11:14.61 ID:ebD6jQFi - >>908
とりあえず>>906でFA 適さないとかいてあるけど、ほとんど不可能といえる はい終了 とりあえずお前が文系だってのは分かったよ プログラムなんて手出して大変だったなww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
912 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:16:53.18 ID:ebD6jQFi - >>910
お前は馬鹿か > この場合DLLが不要となる一方、利用するAPI関数一式のアドレスを事前に取得し、 > 構造体などの形でコピーしたコードに渡す必要があるため、 > 複雑なコードの実行には適さない。 現実的に出来ないんだよ 出来ないの! それでまだドヤ顔か? >>882でやってるのはメモリを単に書き換える「だけ」 *.oをロードするのはとてつもなく大変なんだ?それをお前が理解できてないだけ で、LoadLibraryを使えば簡単に出来るがそれは>>906でやってるDLL Injection
|
- C++相談室 part123 [無断転載禁止]©2ch.net
913 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:20:38.06 ID:ebD6jQFi - >>911
Windows では (プログラムから呼ぶ)ローダー = LoadLibrary だがなんでスッと出なかった? 超超基本的なAPIだけど?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
915 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:24:05.27 ID:ebD6jQFi - >>914
つうかターゲットって何だ? まずは厳密に定義しろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
917 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:27:51.39 ID:ebD6jQFi - >>911のエミュレートってなんだ?
やべーこえーwww 何言ってんだこいつww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
918 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:28:58.51 ID:ebD6jQFi - >>916
LoadLibraryと同等の処理を>>832に実装する事だろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
920 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:30:09.70 ID:ebD6jQFi - >>916
そうすれば>>832はお前の望みのものが出来上がる ただし、出来ない場合は不可能という事になる そんな事をお前はデバッガが出来るからという曖昧な理由だけで勧めてた事になる
|
- C++相談室 part123 [無断転載禁止]©2ch.net
921 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:32:53.41 ID:ebD6jQFi - >>919
わかったよ じゃあエミュレートって何だ? 例えばmallocと同等のコードを実装する事か? でそれをする話ではないという事か?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
923 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:36:28.47 ID:ebD6jQFi - >>922
だから分かったって それを具体的にやるコードの提示がないだろ で、LoadLibraryと同等の処理を実装しないと駄目だからほとんど不可能と言ってる 同じ事何回書かせんだよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
926 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:39:17.16 ID:ebD6jQFi - >>924
ねーよwww int counter = 0; void* my_malloc(void *mem) { ++counter; return 元のmalloc(mem); } これを動かすためにはまずコンパイルしないといけないよな?ここまではいいか?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
927 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:40:26.81 ID:ebD6jQFi - >>924
で、my_malloc_lib.o が出来るだろ? それをどうやって>>832の方法でメモリに書き込むんだ? それをもう少し具体的に言ってみ? そうすればお前もそのうち気付くよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
928 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:42:17.73 ID:ebD6jQFi - >>926
はmallocとfreeが混ざって変になった… int counter = 0; void* my_malloc(size_t len) { ++counter; return 元のmalloc(len); }
|
- C++相談室 part123 [無断転載禁止]©2ch.net
930 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:45:45.29 ID:ebD6jQFi - >>929
わかった my_malloc_lib.oをリンクして起動したよ で? 厳密に行こうぜ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
933 :デフォルトの名無しさん[sage]:2016/04/01(金) 01:59:15.25 ID:ebD6jQFi - >>932
誤魔化すなよ、おい APIの話してんだろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
935 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:03:51.35 ID:ebD6jQFi - >>932
最後はアセンブラ(機械語)レベルできちんとmy_malloc()をコールするコードを書き込むって言えよ 一度うまく行けばずっと使えるが、お前はどうせ知らないだろ そんな曖昧な状態でずっとこんな事を勧めてたんだよお前は… とりあえず最後にちゃんとアセンブラを書けよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
937 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:07:10.25 ID:ebD6jQFi - >>932
DLL Injection(WindowsだとLoadLibraryを使った一連の処理で、Linuxはdlopenを使った一連の処理) アセンブラの知識は必要ないし俺もコードを何度も書いてるし、ググれば簡単に出てくる お前は最後まで文系だったな デバッガーで出来るから出来るはずでごまかし続けたな ググっても実コードは全然出てこないし、本人も全然最後まで分かってないし
|
- C++相談室 part123 [無断転載禁止]©2ch.net
938 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:08:07.99 ID:ebD6jQFi - >>936
あげ足取りはいいから、ちゃんと動くコードを書くか提示しろよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
941 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:10:26.75 ID:ebD6jQFi - >>939
> my_malloc() はデバッガ側で実行するんだよ だからそのコードを書けよ なんで頑なにコードを書かないんだ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
943 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:13:25.75 ID:ebD6jQFi - >>942
お前メモリ書き換えられるだけでドヤ顔はやめろよ 最終的にmy_malloc()を呼び出すコードを書けよ 文系のお前には一行もかけないだろうけど
|
- C++相談室 part123 [無断転載禁止]©2ch.net
945 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:14:59.46 ID:ebD6jQFi - >>942
お前だってローダーって何とか言ってるし、デバッグ情報を使ってDLLロードしろとか 言っちゃってるだろwww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
947 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:18:37.40 ID:ebD6jQFi - >>946
>>943の > 最終的にmy_malloc()を呼び出すコードを書けよ を早くしろよ お前が頑なに拒んでるのが最大の知ったかだろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
949 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:20:01.00 ID:ebD6jQFi - ID:vf5GPZ8Mはメモリに書き込む方法をググって見つけたってだけで
肝心の別関数を呼び出すコードをここまで書かずに、引っ張り続けてるだけ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
950 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:22:39.17 ID:ebD6jQFi - >>948
>>887で今後ローダーが必要な事に気付いてない デバッグ情報がないとDLL Injectionが無理だといっている
|
- C++相談室 part123 [無断転載禁止]©2ch.net
952 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:29:38.59 ID:ebD6jQFi - >>951
とりあえず、俺らが有能か無能かはどうでもいい > 最終的にmy_malloc()を呼び出すコードを書けよ これを証明してお前の言ってるやり方が実際に出来る事をコードを書くかリンクを貼れ 手動でできそうなことはもうわかってるから (それも曖昧だがな)
|
- C++相談室 part123 [無断転載禁止]©2ch.net
955 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:37:47.60 ID:ebD6jQFi - >>954
まだコード書かないよ… まず、デバッガ側で実行というのはどういう事だ? 普通プログラムをデバッガに読み込ませて実行させる事をいうぞ? それと思いっきり手動に見えるが…もう手動でないと無理でFAでいいか?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
956 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:46:09.49 ID:ebD6jQFi - もう遅いんでまとめるが
Windowsにべったりな方法だが…メモリに書き込む方法は具体的に分かった mallocをmy_mallocに置き換えるのはデバッガを駆使すれば手動では可能(なはず) ただ自動でやる方法は不明 でいいだろ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
961 :デフォルトの名無しさん[sage]:2016/04/01(金) 02:58:48.13 ID:ebD6jQFi - >>957
とりあえず、デバッグするんじゃないんだよ 単純にメモリリークをチェックするだけなのになんでデバッガ必須なんだよ コードが書かれてるリンクを提示したのは何だったんだよ… そこまではデバッガ要らないだろ…諦めるなよ > 手動でできることは全て自動でできるんだよ それは分かったよ… 手動でできる事は全部自動で出来る(ただし具体的な方法は知らない) が結論でいいよな?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
962 :デフォルトの名無しさん[sage]:2016/04/01(金) 03:02:09.19 ID:ebD6jQFi - >>959
それでメモリリークのチェックをするって言ってるだろ 理解してないのはお前だろ それとも、一旦別の場所に飛ばしてカウンターなり増やしてもとの場所に復帰させる 「手動」でって言いたいんだろ? そして手動で出来る事は全て自動で出来るから具体的な方法は知らなくても このスレではそういっておけばいいといいことだろ?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
963 :デフォルトの名無しさん[sage]:2016/04/01(金) 03:07:48.16 ID:ebD6jQFi - >>962の最後の2行は実に文系的な考えだな
素晴らしい推論だよ 推論さえ正しければ最終的にコードなんて書く必要ないよな、絶対出来るはずだもんな 俺も何でも出来そうな気がしてきた
|
- C++相談室 part123 [無断転載禁止]©2ch.net
964 :デフォルトの名無しさん[sage]:2016/04/01(金) 03:17:48.51 ID:ebD6jQFi - ちなみにデバッガって専用のデバッグレジスタとか使ってブレークしたりしてる
当然「普通」のプログラムがデバッガと全く同じ動作なんて出来ないと思うけどな…
|
- C++相談室 part123 [無断転載禁止]©2ch.net
965 :デフォルトの名無しさん[sage]:2016/04/01(金) 03:21:34.83 ID:ebD6jQFi - >>964
突っこまれそうなんで捕捉しておくと確かにWindowsのAPIにはデバッガと似たような動作をするAPIはある それ使えば出来るって言いたいんだろ、俺は詳しくは知らんけど
|
- C++相談室 part123 [無断転載禁止]©2ch.net
966 :デフォルトの名無しさん[sage]:2016/04/01(金) 03:28:17.05 ID:ebD6jQFi - デバッグレジスタで調べたら
http://d.hatena.ne.jp/Hossy/20071120 WindowsAPIにブレーク張るコードがあったよ これで特定の場所でブレークさせて別の場所に飛ばして戻すとか出来そうだな
|
- C++相談室 part123 [無断転載禁止]©2ch.net
969 :デフォルトの名無しさん[]:2016/04/01(金) 07:21:46.20 ID:ebD6jQFi - >>967
そう言うと思って>>965で補足したんだけどなww
|