22:59:51 @uaa@social.mikutter.hachune.net
icon

一番目、二番目共に潰してもダメ…そこのロジックを通ってるか、なんかチェックする方法があればそれで見てみる必要があるかな

22:32:54 @uaa@social.mikutter.hachune.net
icon

二番目だけでもダメか…

22:30:13 @uaa@social.mikutter.hachune.net
icon

二番目はoffset 0x905bを0xed→0x90にして、2byte NOPにすれば良いかな。

22:18:16 @uaa@social.mikutter.hachune.net
icon

0x00108e00~0x108e75に違うコントローラのエントリポイントがあって、0x001098dcにこのコントローラのエントリポイントがあるみたいだから…なんとなく、この間が怪しいと見てる。んでもって、in (%dx), %axがあるのは2か所か…最初に見つけた場所(0x109831)が間違いなら、二番目に見つけた場所(0x109026)を潰したらどうなるかなあ

22:10:28 @uaa@social.mikutter.hachune.net
icon

この辺も怪しい?
109020: 8b 55 fc mov 0xfffffffc(%ebp),%edx
109023: 83 c2 14 add $0x14,%edx
109026: 66 ed in (%dx),%ax
109028: 8b 55 fc mov 0xfffffffc(%ebp),%edx
10902b: 83 c2 18 add $0x18,%edx
10902e: ed in (%dx),%eax

21:50:23 @uaa@social.mikutter.hachune.net
icon

見当違いのところいじってる可能性も当然あるからなあ…

21:48:43 @uaa@social.mikutter.hachune.net
icon

とりあえずシステムファイルの圧縮を解いて、バイナリパッチを当てることができる状態までは確立できたか。パッチを用意できるかどうかはまた別の話ってことで。

21:42:56 @uaa@social.mikutter.hachune.net
icon

だめだ、落ちたねえ。

21:38:35 @uaa@social.mikutter.hachune.net
icon

元のファイルは圧縮がかかっているからこれをどうにか解いて、得られたファイルのoffset 0x9861を14→10, 0x9865の66, edをef, 90か。objdumpでも

10982b: 8d 56 10 lea 0x10(%esi),%edx
10982e: 83 c4 08 add $0x8,%esp
109831: ef out %eax,(%dx)
109832: 90 nop

うん、意図した通りになってる。

21:32:51 @uaa@social.mikutter.hachune.net
icon

10982b 8d 56 14 lea 0x14(%esi), %edx

10982b 8d 56 10 lea 0x10(%esi), %edx

109831 66 ed in (%dx), %ax

109831 ef out %eax, (%dx)
109832 90 nop

これ試してみようか?

21:20:45 @uaa@social.mikutter.hachune.net
icon

109826: e8 fc ff ff ff call 109827 <_init-0xf67d9>
10982b: 8d 56 14 lea 0x14(%esi),%edx
10982e: 83 c4 08 add $0x8,%esp
109831: 66 ed in (%dx),%ax
109833: 8d 56 18 lea 0x18(%esi),%edx
109836: ed in (%dx),%eax
109837: 68 e8 03 00 00 push $0x3e8
この辺か?

07:46:54 @uaa@social.mikutter.hachune.net
icon

もしかするとあれかな、VMware Player上のvlanceが何かの拍子にDWIO modeが解除されるバグか何かがあって、それに対処したが故に問題が起こったのかなあ。

Linux最古のpcnet32.cを見るに、チップのプローブで8bitアクセスは使っているけど16bitアクセスは未使用… elixir.bootlin.com/linux/2.0.3

pcnet32.c - drivers/net/pcnet32.c - Linux source code (2.0.34) - Bootlin