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!