5ちゃんねる用ブラウザ「Live5ch」part163

レス数が1000を超えています。これ以上書き込みはできません。
1名無しさん@お腹いっぱい。
垢版 |
2022/08/05(金) 15:17:21.34ID:zQVN/DiO0
5ちゃんねる用ブラウザ「Live5ch」part162
https://egg.5ch.net/test/read.cgi/software/1657266465/
2022/08/27(土) 15:35:45.60ID:45oAUBkl0
>>973
ありがとうございます
お陰様で無事達成し好奇心を満たせました
55 8B EC 83 EC が広告処理のバイナリなんですね
そして >>953 の 「1.58用」 が間違っているのも分かりましたw
55 8B EC 83 EC を検索してアドレスを見付けるのは簡単ですが
その位置を指し示す E9 のあとに続く相対アドレスを探すなんてバイナリエディタ+手作業では大変過ぎですね
皆さんスクリプトか何かで見付けるのでしょうか?
この度は丁寧に解説して頂きまして大変勉強になりました
本当にありがとうございました
2022/08/27(土) 15:42:00.15ID:jASO9Ma90
デバッガ使わんと無理
2022/08/27(土) 15:51:25.16ID:45oAUBkl0
いや簡単じゃ無いわ。。55 8B EC 83 EC いっぱいあるから特定難しい。。
2022/08/27(土) 15:56:58.41ID:Gv6m6h2n0
あどなっし使えばいいじゃん
2022/08/27(土) 16:07:42.57ID:45oAUBkl0
>>984
広告消したい訳じゃ無いんですよね
リソースハッカーで部品置き換えたりバイナリ書き換えで動作変えたりといった
「改造ネタ」が好きってだけの好奇心です
2022/08/27(土) 16:51:15.26ID:tUT0Aj0H0
>>981
たとえばバイナリを逆アセンブルすると

1.52
00026EFF E9 AC 50 11 00 → JMP 0013BFB0h
1.57
00027417 E9 44 53 11 00 → JMP 0013C760h
1.58
000272F7 E9 34 57 11 00 → JMP 0013CA30h

みたいに相対値から算出された実際のアドレスで表示されるから
あとはそれに対して広告処理のアドレスで検索を掛ければ…
2022/08/27(土) 17:20:01.14ID:KsL83OlY0
>>981
<ヒント>
広告処理とはつまり
http://tkssp.com/2ch/live2ch/160x600
の画像を表示する処理
2022/08/27(土) 18:19:15.92ID:45oAUBkl0
>>987
1.59 だと 0x000322FC にURLを見付けました
単純な文字列検索では見付けられずStirling目視で。。
これを読んでる先を逆アセってやつで探す感じでしょうか
逆アセの方はまださっぱりですが
2022/08/27(土) 18:40:59.04ID:tUT0Aj0H0
>>988
文字コードは一部の例外を除いて基本的にUTF16なので
Stringで検索する時もキャラクターセットをUnicodeに指定しておけば
普通に検索できますよ

1.52だと0x000318ECにURLがありますが
exeがメモリ上にロードされる位置は0x0040000なので
メモリ上での実際のアドレスは0x004318ECになります

例えばこのアドレスのバイナリ列「EC 18 43 00」を検索すれば
URL文字列を参照しているコードが見つかる訳です
2022/08/27(土) 18:48:48.23ID:tUT0Aj0H0
0がいっこ少なかった
× 0x0040000
〇 0x00400000
2022/08/27(土) 20:04:38.08ID:8t5scH9t0
>>939
ありがとうございます。感謝です
そんなとこにあるとは気が付かなかった・・・
2022/08/27(土) 20:11:24.15ID:45oAUBkl0
>>989
ありがとうございます。自分でも出来そうな気になって来ました
①文字コード:Unicode で http://tkssp.com/2ch/live2ch/160x600 を検索 (1.52: 0x000318EC)
②0x00400000 + ①のアドレス (1.52: 0x004318EC) をリトルエンディアンにしたバイナリ値 (1.52: EC 18 43 00) で検索 (1.52だと5箇所ヒット)
③検索2個目、或いは 0x0013**** 辺りで ヒットした箇所の直ぐ上辺りで バイナリ値"90"が連続した直後に "55 8B EC 83 EC 0C 68" が広告処理のアドレス
④そこにJMPを示している"E9"から続く相対アドレスのバイナリ値を E9含め3Byte "C20800" で上書き
と覚えました
広告処理かどうかを読むのとそこへの相対アドレスを知るには逆アセのソフトと知識が必要なようですね
でもコレだけでも、大きく変わったりしなければ十分に特定出来るかも?
2022/08/27(土) 20:26:23.40ID:Xcl8JO390
>>986の説明を読み返して後から気づいたけど

> 1.52
> 00026EFF E9 AC 50 11 00 → JMP 0013BFB0h

とかは0x00400000を考慮していなかったので、正確には

1.52
00426EFF E9 AC 50 11 00 → JMP 0053BFB0h

って書くべき内容でした



>>992
実際の処理の全体の流れでいうと
(1)0046EFFF
2022/08/27(土) 20:27:00.35ID:Xcl8JO390
失礼、ゴミがついてしまった
2022/08/27(土) 20:29:13.54ID:Yi8+9UQZ0
エンデアンうそつかない
2022/08/27(土) 20:39:44.85ID:Xcl8JO390
>>992
実際にメインルーチンから広告処理ルーチンから呼ぶ時の流れでいうと
メインルーチンから直接広告処理ルーチンを呼ばずに

(1)メインルーチンから広告処理(にジャンプするテーブル)をコール
(2)ジャンプテーブル(>>986)から広告処理ルーチンにジャンプ(E9******)
(3)広告処理ルーチン実行
(4)広告処理ルーチンの最後でメインルーチンにリターン(C20800)

って感じでVBの処理の都合で(2)がワンクッション間に挟まっています
でまぁ、ジャンプテーブルをリターン(C20800)に書き換える事によって
広告処理ルーチンにジャンプさせずにメインルーチンに戻るようにしてる訳ですが
ぶっちゃけジャンプテーブルを探すのが面倒であれば広告処理ルーチンの先頭を
リターン(C20800)に書き換えても処理は成り立ちます

ジャンプテーブルを書き換えた方が処理的にスマートなのと
潰した広告処理ルーチンを別の用途で再利用したい場合に少しでも広く使える
(たとえばUA文字列の置き場所にしたりとか)ので
こういう風にしているだけだったりします
2022/08/27(土) 20:49:05.98ID:Gv6m6h2n0
いつまでもスレチなことしてないで次スレ立てろ馬鹿め
2022/08/27(土) 20:57:37.73ID:OfUQIaW90
アイコンの変え方のほうがありがたいわw
2022/08/27(土) 21:01:09.74ID:45oAUBkl0
>>996
ありがとうございます。
なるほど、 C20800 てリターンコードだったのですね
勉強になりました
2022/08/27(土) 21:20:29.97ID:45oAUBkl0
次スレ
5ちゃんねる用ブラウザ「Live5ch」part164
https://egg.5ch.net/test/read.cgi/software/1661602781/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 22日 6時間 3分 9秒
レス数が1000を超えています。これ以上書き込みはできません。
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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