- C++相談室 part123 [無断転載禁止]©2ch.net
782 :デフォルトの名無しさん[sage]:2016/03/31(木) 00:03:10.29 ID:wytOYZTk - >>781
glibcのmallocは意図的に指定しない限りデフォはスレッドセーフだな 逆にスレッドセーフじゃない実装があるのか疑問だ jemallocが最強とは一言も言ってないけどそういう状況にも対応出来るように 実装されてるはず (詳しくは知らん) https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/ ここに各OSのmallocの実装状況が出てたよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
793 :デフォルトの名無しさん[sage]:2016/03/31(木) 08:09:26.00 ID:wytOYZTk - >>787
処理系ww ローダーとか知らないのかな https://en.wikipedia.org/wiki/DLL_injection ↑ここを100回読めよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
796 :デフォルトの名無しさん[]:2016/03/31(木) 08:36:49.75 ID:wytOYZTk - >>794
いやそれだけ それ以外はマクロハックと同じ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
798 :デフォルトの名無しさん[]:2016/03/31(木) 08:42:13.72 ID:wytOYZTk - >>794
お前の言う処理系依存の方法は strdup()が内部で呼んでるmalloc()とか 他のライブラリが呼んでるのも偽装できんだよな?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
799 :デフォルトの名無しさん[]:2016/03/31(木) 08:48:43.48 ID:wytOYZTk - strdup()は内部でmalloc()はするがfree()は自分でやる必要があるから
ちゃんと捕捉しないといけない 他のライブラリでそういうのがあったら全部捕捉する必要はある
|
- C++相談室 part123 [無断転載禁止]©2ch.net
802 :デフォルトの名無しさん[]:2016/03/31(木) 08:58:28.39 ID:wytOYZTk - >>800
スタティックライブラリをリンクしたら素のmallocがそのままくっつくだけだろw > デバッグ用の API とか使って動的に差し替えるとかもあるし だからそれがDLL Injection
|
- C++相談室 part123 [無断転載禁止]©2ch.net
815 :デフォルトの名無しさん[sage]:2016/03/31(木) 13:10:41.88 ID:wytOYZTk - >>812
デバッグ版のライブラリとリンクするとmallocがどうなるってんだよw 意味不明 > DebugActiveProcess とか ptrace を使う話だ 何言ってんの…馬鹿かよ DLL Injectionと何の関係があんだよ 論点がずれてるようだがデバッグをするんじゃないだろ malloc,freeを自前の実装版で捕捉してメモリリークの調査をするっていうながれをずっとしてんだろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
816 :デフォルトの名無しさん[sage]:2016/03/31(木) 13:14:41.51 ID:wytOYZTk - >>812
とりあえずDebugActiveProcess使ってmallocを自前実装版に差し替える手順を説明しろ https://msdn.microsoft.com/ja-jp/library/cc428926.aspx がDebugActiveProcessのリファレンスだがそんな機能は全く無いけどなw
|
- C++相談室 part123 [無断転載禁止]©2ch.net
825 :デフォルトの名無しさん[sage]:2016/03/31(木) 19:11:23.53 ID:wytOYZTk - >>817
俺は ID:yO7JBNvw ID:wytOYZTk だぞ。全部抽出してみ、書いてる事は全て正しいよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
828 :デフォルトの名無しさん[sage]:2016/03/31(木) 19:18:53.02 ID:wytOYZTk - >>827
お前基地害だろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
830 :デフォルトの名無しさん[sage]:2016/03/31(木) 19:21:10.87 ID:wytOYZTk - >>827
こちは真性だろ。本物は初めて見た
|
- C++相談室 part123 [無断転載禁止]©2ch.net
833 :デフォルトの名無しさん[sage]:2016/03/31(木) 19:51:31.05 ID:wytOYZTk - >>831
> Visual Studio も GCC/clang もライブラリのソースがあるから malloc/free をラップして確保/解放情報を取得するとか簡単にできる だからサードパーティ製のようなDLLしかないライブラリを使う場合はどうなるってんだよ DLL Injectionでmalloc/freeを置き換えるのが不可能だと言いたいのか? 不可能ではなければそれだけで全て事足りるだろ > DLL Injection と違うって書いてあるのになんの関係ガー > とかバカすぎるだろ w > > > デバッグ用の API とか使って動的に差し替えるとかもあるし ← これお前の書き込み > > だからそれがDLL Injection > 違う DebugActiveProcess とか ptrace を使う話だ ← これお前の書き込み ↑デバッグ用のAPI(お前が言うにはDebugActiveProcessだが)で動的に差し替えてみろよ 基地害だからDebugActiveProcessで動的差し替えできると思ってるらしいが > デバッガーでブレークかけて違う関数呼び出したりできることもご存じない? お前何万回と呼ばれる可能性のあるmallocをブレークとか片腹痛いwww お前は手動でやる事にこだわってたのかよ…そりゃ話が合わないわ もういいよボロが出ちゃったから
|
- C++相談室 part123 [無断転載禁止]©2ch.net
834 :デフォルトの名無しさん[sage]:2016/03/31(木) 19:52:41.84 ID:wytOYZTk - >>832
取り合えずお前らみんな手動でやる事にこだわってたんだなw ポチポチ頑張ってくれよw
|
- C++相談室 part123 [無断転載禁止]©2ch.net
838 :デフォルトの名無しさん[sage]:2016/03/31(木) 20:18:26.41 ID:wytOYZTk - >>836
> 勝手な後だし条件かよ w つうかそれぐらい普通に想定しろよw > サードパーティの malloc ? サードパーティのmallocなんて言ってねーよw DLL内でnewしてオブジェクトを返すライブラリがあったとして それをdeleteするにはDLL内のmallocを捕捉する必要がある。アンダースタン? > 別の方法もあるってだけの話 それは分かったよ 一生懸命ブレーク張って置き換えんだろwww 面白すぎるもっとやってくれ > そう言うプログラムを作るだけの話だろ DebugActiveProcess「とか」言ってんなら 取り合えず数行でもいいからコード書いてよマジで とりあえず一生懸命ネットでググって得た知識だから 全然具体的な事はわかってないんだろ? マジで書けよ、おい
|
- C++相談室 part123 [無断転載禁止]©2ch.net
839 :デフォルトの名無しさん[sage]:2016/03/31(木) 20:21:28.25 ID:wytOYZTk - >>836
取り合えずDebugActiveProcessで一回嘘ついてんだよお前は 早く他の方法をコードつきで書けよ、ほら 次はなんだよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
840 :デフォルトの名無しさん[sage]:2016/03/31(木) 20:27:56.34 ID:wytOYZTk - >>836
> > DLL Injectionでmalloc/freeを置き換えるのが不可能だと言いたいのか? > 別にやりたきゃやればいいだけ > 別の方法もあるってだけの話 DLL Injectionでいいし何も問題無い事にわざわざケチ付けて別の方法を言う意味がどこにあんだよ マジで頭おかしいだろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
844 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:13:16.81 ID:wytOYZTk - >>843
> delete ? auto a = getNewObjectFromThirdPartyLib(); ... aを使う delete a; ← これ newはライブラリ内にあるが、deleteは自分のソースに書く リークを検出するには、ライブラリ内のnew(malloc)を捕捉しないと 自分のソース内のdelete と釣り合いが取れなくなる っていうか、頭悪wwwかわいそうだなお前 > あれでわかんないところがあるのか? 分かってないのはお前 取り合えずコード書けないのは分かったから流れだけでも説明してよ それすら出来ない? 多分しないだろうけど > どこが嘘なのか具体的によろ https://msdn.microsoft.com/ja-jp/library/cc428926.aspx > デバッガをアクティブなプロセスにアタッチしてデバッグできるようにします。 プロセスにアタッチするAPIだからwww残念 お前はデバッグさえ出来れば置き換えられると思って書いただろうけど アタッチするだけのAPIだったよwww 俺は知らないけど他に必要なんだよ(手動は無しよw) だから次はそれを教えてよ、はい頑張って
|
- C++相談室 part123 [無断転載禁止]©2ch.net
845 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:16:35.66 ID:wytOYZTk - >>843
> はっきり「スタティックライブラリ」って書いてあってもアホは噛みついてくるんだな >>767を読め(これは俺じゃない)
|
- C++相談室 part123 [無断転載禁止]©2ch.net
847 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:23:07.76 ID:wytOYZTk - >>843
DebugActiveProcessって英語読めれば一目瞭然なのにここまで引っ張るとはw DebugActiveProcess君は次も間違いなく具体的なことは書かずに 誹謗中傷に徹するだろうな
|
- C++相談室 part123 [無断転載禁止]©2ch.net
849 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:34:51.22 ID:wytOYZTk - >>848
> > それをdeleteするにはDLL内のmallocを捕捉する必要がある。 > どこがアホなのか説明した方がいいか? w それを(リーク検出の為に釣り合いを保って)deleteするにはDLL内のmallocを捕捉する必要がある。 アホには言葉足らずだったスマン > >>832 に流れが説明してあることも理解できないのか? 手動のやつかよ興味ねーよ 毎回アタッチされて止まるまで待つのかよ馬鹿かよw DLL Injection
|
- C++相談室 part123 [無断転載禁止]©2ch.net
851 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:37:36.59 ID:wytOYZTk - >>848(続き)
DLL Injectionと比較して利点と欠点ぐらい言えよ 非効率な方法を一生懸命説明してるのがマジで切ない
|
- C++相談室 part123 [無断転載禁止]©2ch.net
853 :デフォルトの名無しさん[sage]:2016/03/31(木) 21:43:46.11 ID:wytOYZTk - >>852
そうとは言い切れない auto a = getNewObjectFromThirdPartyLib(); ... aを使う releaseObjectFromThirdPartyLib(a); みたいに直接deleteはさせないけど解放用のAPIを用意してることは考えられる releaseObjectFromThirdPartyLib(a);を呼び忘れる事がメモリリークだから 考慮は必要だと思うよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
856 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:06:00.43 ID:wytOYZTk - >>855
修正したつもりはなかったけど、deleteだけさせる事は確かにほとんど無いかもね でもDLL Injectionでmalloc/freeに加えてget/releaseも捕捉すればいいから メモリ以外にも色々なリソースリークに使えるはず
|
- C++相談室 part123 [無断転載禁止]©2ch.net
861 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:33:36.80 ID:wytOYZTk - >>858
> malloc を捕捉なんてしなくても delete できるけど? メモリリークの話してんのにmallocを捕捉しないとか本末転倒過ぎてもう… 色々突っこんでる奴いるけどお前が群を抜いて馬鹿だなww面白すぎww >> WaitForDebugEvent でプロセス一時停止するまで待って いや待ってるじゃんww メクラかよ サーバープログラムとか一時停止するまで待つとかありえねーよ っていうと後出し言うんだろwww お前が経験無いだけだからww残念 DebugActiveProcess君、はい次どうぞww待ってるよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
862 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:39:28.58 ID:wytOYZTk - >>858
> malloc を捕捉なんてしなくても delete できるけど? これを書き込むに至った理由を頼むから教えてくれ、m(_ _)m ← このとーりwww ちゃんと保存しとくから
|
- C++相談室 part123 [無断転載禁止]©2ch.net
863 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:47:39.10 ID:wytOYZTk - >>858
あと>>832で > ブレークしたら malloc エミュレートするなりなんでもできるだろ ここのAPIが書いてないからサクッと補完しといて(手動は無しよw) 見た瞬間分かるんだよね?どこかのリンクでもいいよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
865 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:55:30.35 ID:wytOYZTk - >>864
> 別に数ms 程度停まっても平気なサーバーソフトはいくらでもあるぞ とりあえず>>863に返答して完全に自動で出来る事を証明しろ じゃなきゃ手動でやってたら数msで済むわけ無いだろ >>849に書いたけど > それを(リーク検出の為に釣り合いを保って)deleteするにはDLL内のmallocを捕捉する必要がある。 > アホには言葉足らずだったスマン 揚げ足取るにしても寒いツッコミだったなwww はい次、>>863の返答を待ってるよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
869 :デフォルトの名無しさん[sage]:2016/03/31(木) 22:59:37.41 ID:wytOYZTk - >>864
ちなみにWriteProcessMemoryは関数が置いてあるコード領域は書き換えられないよ これはグローバル変数とか書き換える用だろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
870 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:02:06.51 ID:wytOYZTk - >>867
アホか だからmy_malloc()みたいな関数があってそれをどう使えば >>832の後に関数の中身を書き換えられるのかコードかリンクを出せよ さっきから文章しか書いてないぞ そろそろコードがみたいよwww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
872 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:05:53.46 ID:wytOYZTk - >>871
> デバッガというソフトがやれることが自動化できない理由がないと思うんだが... ご名答ww だからAPIを教えてっていってんだよ なぜならお前が何も知らない馬鹿だと思ってるからそれを覆して欲しい > なんで手動にアホみたいに固執するのか意味わからん それがお前が手動でしかできない方法をアホみたいに支持してるからwww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
873 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:10:41.80 ID:wytOYZTk - >>871
とりあえず今後はデバッガ野郎って呼ぶよw
|
- C++相談室 part123 [無断転載禁止]©2ch.net
874 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:15:42.52 ID:wytOYZTk - >>871
逆に、理論上出切るとしても>>832の流れで関数書き換えを自動化するAPIが 無かったらどうすんの? それでも出来るから出来ると言い張るのか?
|
- C++相談室 part123 [無断転載禁止]©2ch.net
876 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:17:52.72 ID:wytOYZTk - >>875
ちゃんととは? メモリの属性を書き換えるんだろ?そのAPIをちょろっと教えてよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
877 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:19:18.82 ID:wytOYZTk - >>875
で、>>832の > ブレークしたら malloc エミュレートするなりなんでもできるだろ これに関する話題が無いけど、こっちも早く返答しろ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
879 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:21:31.31 ID:wytOYZTk - >>875
ID変わる前に > ブレークしたら malloc エミュレートするなりなんでもできるだろ が出来る事をコードを書くなりリンクを貼るなり早くしてくれ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
880 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:23:25.43 ID:wytOYZTk - >>878
だから>>832に自動化する方法をサクッと付け加えてくれればいいよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
881 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:24:15.22 ID:wytOYZTk - >>878
さっきからコードを書いたりリンク貼ることを一生懸命回避してるなw超ウケルよww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
883 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:32:31.59 ID:wytOYZTk - >>882
お!やっと来たか! 確かにこれでパッチは可能だな。これは参考になる ただコンパイルしたコードはアドレスとか解決しないといけない それが足りないから、はい次待ってるよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
884 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:34:02.76 ID:wytOYZTk - >>882
デバッガを作るだけじゃ飽き足らずこんどはローダーを作らないといけないな で、完成したものはDLL Injectionのコードと同じになるというwww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
885 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:35:37.45 ID:wytOYZTk - >>882
とりあえずMy DLL Injectorに半分近づいたよwww 残りを楽しみに待ってるよ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
886 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:48:41.29 ID:wytOYZTk - >>882
もしかしてコンパイルしたコードをそのまま貼り付けられると思ったか? ちょっと考えただけでもとんでもなく手間の掛かることだがな グローバル変数の「実」アドレスとか*.oには含まれてないから全部解決しないといけない 当然別の関数のアドレスとかもね コンパイルする時に実アドレスを想定して*.oを吐き出せるはずだが…現実的じゃないね LoadLibraryとか使えば?DLL Injectionのコードと同じになっちゃうけどww
|
- C++相談室 part123 [無断転載禁止]©2ch.net
889 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:56:40.39 ID:wytOYZTk - >>887
めんどくさい奴だな… > ローダー? > 実行中のプロセスにアタッチする ちがうよ、書き換える元だよ my_malloc()をコンパイルするとmy_malloc_lib.oが出来る はいそっからどうすんの? 俺の使ってるデバッガは*.oを実行時にリンクできるよ > とか言うだろうけどそんなケースは DLL Injection でも無理だから はいダウトwww DLL Injectionは単に外部シンボルを使うからロードできる つうかDLLのローダにデバッグ情報とか関係無いぞ
|
- C++相談室 part123 [無断転載禁止]©2ch.net
890 :デフォルトの名無しさん[sage]:2016/03/31(木) 23:58:52.43 ID:wytOYZTk - >>887
あと > あとアドレス情報はデバッグ情報から取得すればいいだけ もダウト 「実」アドレス情報がデバッグ情報にあるわけないwww 相対アドレス情報が外部シンボルに関連付けられてるだけだ どうした?もう眠いか?
|