Отваряме файла Plusmin.exe
в W32Dasm и от менюто Refs
избираме String Data References
( или натискаме бутона StrnRef
) за да потърсим някакви интересни думички. !!??!! След
известно търсене попадаме на следното нещо: "Key"
( What is This? ) Кликваме два пъти върху него и се озоваваме
в следният участък от кода на програмата:
* Possible StringData Ref from
Code Obj ->"PlusMin5" |
:005321DB BAF0375300 mov
edx, 005337F0 :005321E0 E8D37EEDFF call
0040A0B8 :005321E5 8D45E8 lea
eax, dword ptr [ebp-18] :005321E8 50 push
eax :005321E9 6A00 push
00000000 :005321EB 8D8578FAFFFF lea
eax, dword ptr [ebp+FFFFFA78] :005321F1 50 push
eax :005321F2 8D8574FAFFFF lea
eax, dword ptr [ebp+FFFFFA74] :005321F8 8D95A0FCFFFF lea
edx, dword ptr [ebp+FFFFFCA0] :005321FE B900010000 mov
ecx, 00000100 :00532203 E8481EEDFF call
00404050 :00532208 8B9574FAFFFF mov
edx, dword ptr [ebp+FFFFFA74]
* Possible StringData
Ref from Code Obj ->"Key" <---
ключето от бараката
|
:0053220E B904385300 mov
ecx, 00533804 :00532213 8B45A4 mov
eax, dword ptr [ebp-5C] :00532216 8B18 mov
ebx, dword ptr [eax] :00532218 FF13 call
dword ptr [ebx]
Много интересно. Ако скролираме малко по-нагоре попадаме на следният
код:
* Referenced by a CALL at Addresses:
|:004EE33F ,
:004F12CF |
:00531F04 55 push
ebp :00531F05 8BEC mov
ebp, esp :00531F07 B9CD000000 mov
ecx, 000000CD :00531F0C 6A00 push
00000000 :00531F0E 6A00 push
00000000 :00531F10 49 dec
ecx :00531F11 75F9 jne
00531F0C :00531F13 53 push
ebx :00531F14 56 push
esi :00531F15 57 push
edi :00531F16 8945FC mov
dword ptr [ebp-04], eax :00531F19 33C0 xor
eax, eax :00531F1B 55 push
ebp :00531F1C 686A375300 push
0053376A :00531F21 64FF30 push
dword ptr fs:[eax] :00531F24 648920 mov
dword ptr fs:[eax], esp :00531F27 C645FB00 mov
[ebp-05], 00 :00531F2B 8D85A0FBFFFF lea
eax, dword ptr [ebp+FFFFFBA0]
* Possible StringData Ref from
Code Obj ->"trust\mn\all" |
:00531F31 BA88375300 mov
edx, 00533788 :00531F36 E87D81EDFF call
0040A0B8 :00531F3B 8D85A0FAFFFF lea
eax, dword ptr [ebp+FFFFFAA0]
* Possible StringData Ref from
Code Obj ->"slent\nt\pen\1" |
:00531F41 BAA0375300 mov
edx, 005337A0 :00531F46 E86D81EDFF call
0040A0B8
* Possible Reference to String
Resource ID=00002: "” !" ” "
" ” ? " |
:00531F4B C705B80A5E0002000000 mov dword ptr [005E0AB8],
00000002 :00531F55 33C0 xor
eax, eax :00531F57 A3BC0A5E00 mov
dword ptr [005E0ABC], eax :00531F5C 33C0 xor
eax, eax :00531F5E A3C00A5E00 mov
dword ptr [005E0AC0], eax :00531F63 C605C40A5E0001 mov
byte ptr [005E0AC4], 01 :00531F6A A178EB5D00 mov
eax, dword ptr [005DEB78] :00531F6F 8B00 mov
eax, dword ptr [eax] :00531F71 E82A93F7FF call
004AB2A0
* Possible StringData
Ref from Code Obj ->"Win.INI" |
:00531F76 B9B8375300 mov
ecx, 005337B8 :00531F7B B201 mov
dl, 01 :00531F7D A128514700 mov
eax, dword ptr [00475128] :00531F82 E84932F4FF call
004751D0
Както изглежда, програмата явно търси някакъв ключ ( номер
) в Win.INI
файла. Време е ( за една бира ) да направим някой и друг
номер номер в SICE. Както се
вижда, кода по-горе се извиква от 2 места в програмата: адрес
004EE33F и адрес 004F12CF
За целта чрез SimbolLoader на
SoftIce стартираме Plusmin.exe
и поставяме 2 прекъсвания: BPX 004EE33F
и BPX 004F12CF след което излизаме
от SICE ( X,
F5 или Ctrl+D )и програмата
( Плюс-Минус ) продължава
изпълнението си.След като се появи диалога за свързване към
сървъра, натискаме бутона "добре" и SICE
прекъсва изпълнението на програмата на адрес: 004EE33F
За да избегнем извикването на процедурата от този адрес, въвеждаме
следната команда: R EIP=004EE344
( Enter ) и излизаме от SICE
( F5 ) Програмата се стартира
без изискването на сериен номер и парола. Както изглежда
вече програмата не се нуждае от регистриране :-+ Остава ни само
малко работа с HexWorkShop.
За да премахнем извикването на процедурата от адрес 004EE33F
може просто да заменим кода: E8C03B0400
CALL 00531F04
със 9090909090 , но "по-
елегантния" начин е да променим началото на подпрограмата на
адрес: 00531F04 от 55
push ebp на С3
RET ( автоматично връщане ) За целта отваряме файла
Plusmin.exe в HexWorkShop,
натискаме F5 и въвеждаме:
131304 ( ОК
) и променяме 55 на С3 С това този урок приключва. |