LastUpdate 2003/08/18
(普通の逆アセンブラでは展開することが出来ない)ファイルにも対応.
; subroutine --------------------------------------------------------------------------
; using F0040aa5c() F00401340()
; referrer F00401570()
F00402a80: call near F00401340
mov cl,[L0041b120]
test cl,cl
jz C00402ac7
; if {
test eax,eax
jl C00402ab6
; if {
push eax
mov eax,[L0041afa8]
push dword S00415e10
push eax
C00402a9f: call near F0040aa5c
mov ecx,dword [L0041afa8]
add esp,byte +00ch
add ecx,eax
mov dword [L0041afa8],ecx
ret
; }
C00402ab6: mov ecx,dword [L0041afa8]
neg eax
push eax
push dword S00415e00
push ecx
jmp short C00402a9f
; }
C00402ac7: test eax,eax
jl C00402ada
; if {
mov edx,dword [L0041afa4]
push eax
push dword S00415e10
push edx
jmp short C00402ae8
; }
; else {
C00402ada: neg eax
push eax
mov eax,[L0041afa4]
push dword S00415e00
push eax
; }
C00402ae8: call near F0040aa5c
mov ecx,dword [L0041afa4]
add esp,byte +00ch
add ecx,eax
mov dword [L0041afa4],ecx
ret
align 16,nop
dispe.exeをdispeによって逆アセンブルしたdispe.exe.asm結果の一部.今まで,ブロックごとに分割→ブロックごとに構文木作成,でなんとかなると考えていたけどよくよく考えたらそれじゃ全然ダメかも.
つーか,事前にブロック分割する必要性ってない気がしてきた.ああ作り直しの予感.しかし考えただけでその作業量にぞっとする.
>dispe c:/winnt/explorer.exe
>dispe -p1024