File Investigator Properties for Windows 95 by Bart

Temat    :jak usunac nagscreen
Program  :File Investigator Properties for Windows 95
Gdzie    :PCKW 3/99 A
Narzedzia:SoftIce,W32dsm,Hiew(lub inny edytor hex)

Usuniecie nagscreena jest banalnie proste, wiec jesli nie jestes zupelnie zielony to nie czytaj tego tekstu.

Przed przystapieniem do pracy skopiuj Fiprop.exe do tego samego katalogu pod nazw Fiprop.bak(kopia zapasowa)

1.Uruchamiamy File Investigation(FI) wyskakuje nagscreen informujacy, ze trzeba zarejestrowac program aby sie go pozbyc.

2.Zamykamy program, wchodzimy do SoftIca(ctrl-d) i zakladamy pulapke na wyswietlanie okna dialogowego >bpx DialogBoxParamA.

3.Wychodzimy z SoftIca

4.Ponownie uruchamiamy FI.Gdy wyladujemy w SoftIce naciskamy F11 widzimy ten paskudny nagscreen klikamy na CONTINUE i znowu jestesmy w SoftIce tym razem mozemy jednak odczytac adres wywolania funkcji DialogBoxParamA,spisujemy go an kartce.

5.Uruchamiamy W32dsm i dekompilujemy Fiprop.bak

6.Z menu wybieramy GOTO\CODE LOCATION i wpisujemy wczesniej spisany adres.Widzimy kod

:0040102F 55                      push ebp
:00401030 68802C4000              push 00402C80
:00401035 55                      push ebp

* Possible Reference to Dialog: DialogID_0070 
                                  |
:00401036 6A70                    push 00000070
:00401038 51                      push ecx

* Reference To: USER32.DialogBoxParamA, Ord:008Eh
                                  |
:00401039 FF15A0934100            Call dword ptr [004193A0]<--wywolanie

7.Klikamy podwojnie na Call dword ptr [004193A0] i z paska statusu odczytujemy offset(zapisujemy go).

8.Ladujemy Fiprop.exe do Hiew.Naciskamy F4 i zmieniamy tryb na dekodowanie,potem F5 i wpisujemy spisany offset.

9.Teraz moglibysmy "znopowac" wywolanie funkcji ale mozecie sie sami przekonac, ze ta zmiana powoduje wieszanie sie programu, ale jest inny sposob.Widzimy, ze przed wywolaniem funkcji sa zapamietywane parametry wywolania.Nie sa one w naszym przypadku wazne i to jest miejsce gdzie "poprawimy" kod.

10.W hiew przewijamy kod strzalkami do gory az do momentu gdy znajdzimy sie

0000042F: 55                           push      ebp <--tu jestesmy
00000430: 68802C4000                   push      000402C80 ;" @,a"
00000435: 55                           push      ebp
00000436: 6A70                         push      070
00000438: 51                           push      ecx
00000439: FF15A0934100                 call      DialogBoxParamA
0000043F: 6804144100                   push      000411404 ;" AÂ_"

11.Naciskamy F3 potem F2 i wpisujemy "jmp 43F"(bez cudzyslowow).Po tych zmianach program powinien wygladac tak

 0000042F: E90B000000                   jmp       00000043F  ----- (1)
 00000434: 00556A                       add       [ebp][0006A],dl
 00000437: 7051                         jo        00000048A  ----- (2)
 00000439: FF15A0934100                 call      DialogBoxParamA
 0000043F: 6804144100                   push      000411404 ;" AÂ_"

12.Zapamietujemy zmiany(F9) wychodzimy(F10)

13.Uruchamiamy fiprop.exe i czy widac nagscreena?!

14.Przykladowy patch w pascalu

=================================
program patch;
uses crt;

var     f:file;
               
const   val:array[0..4] of byte=($E9,$0B,$00,$00,$00);{jmp 43F}
        adr=$42F;
       name='Fiprop.exe';
begin
 writeln('File Investigator Properties patch by Bart');
 assign(f,name);
 {$I-}reset(f,1);{$I+}
 if IOresult<>0 then
 begin
 writeln('ERROR:File not found: '+name+'!');
 halt;
 end;
 Seek(f,adr);
 BlockWrite(f,val,SizeOf(val));
 end;
 writeln('File patched.Enjoy!');
end.

========================================

15.I to by bylo na tyle.C'ya!