WinZip 9.0 Автор : Clever^HTB Перевод : NightCat^T53 Инструменты: SoftIce, Hexeditor Сегодня поговорим о том, как сломать WinZip'a 9.0. После инсталляции появляется подлый NAG, но рядом видим "enter registration number", что и делаем. Заполняем два поля, я воодил: name: clever code: 1122334455 Теперь ставим breakpoint на bpx hmemcpy и жмём OK. В SI один раз жмём F5, затем F12 ну и вы должны увидеть такой кусочек кода: 0167:0040CDB3 56 PUSH ESI 0167:0040CDB4 E811A90500 CALL 004676CA 0167:0040CDB9 56 PUSH ESI 0167:0040CDBA E834A90500 CALL 004676F3 0167:0040CDBF 803DE0814D0000 CMP BYTE PTR [004D81E0],00 0167:0040CDC6 59 POP ECX 0167:0040CDC7 59 POP ECX 0167:0040CDC8 7459 JZ 0040CE23 0167:0040CDCA 803D0C824D0000 CMP BYTE PTR [004D820C],00 0167:0040CDD1 7450 JZ 0040CE23 0167:0040CDD3 E864FCFFFF CALL 0040CA3C 0167:0040CDD8 84C0 TEST AL,AL <--------!!! 0167:0040CDDA 7447 JZ 0040CE23 0167:0040CDDC 57 PUSH EDI 0167:0040CDDD 6804774B00 PUSH 004B7704 0167:0040CDE2 BFE8764B00 MOV EDI,004B76E8 0167:0040CDE7 57 PUSH EDI 0167:0040CDE8 E8715A0500 CALL 0046285E 0167:0040CDED 56 PUSH ESI 0167:0040CDEE 68D8854B00 PUSH 004B85D8 0167:0040CDF3 57 PUSH EDI 0167:0040CDF4 E8655A0500 CALL 0046285E 0167:0040CDF9 68F0764B00 PUSH 004B76F0 0167:0040CDFE 6A00 PUSH 00 Программа остаётся незарегистрированной, если регистр AL после call'a не будет равен нулю. Заходим в call по адресу 40CDD3 и скролим вниз(CTRL+стрелка вниз) до этого фрагмента: 0167:0040CC6E 8B45F8 MOV EAX,[EBP-08] 0167:0040CC71 3B45F4 CMP EAX,[EBP-0C] 0167:0040CC74 0F94C0 SETZ AL 0167:0040CC77 A2BD774D00 MOV [004D77BD],AL 0167:0040CC7C 53 PUSH EBX 0167:0040CC7D 8D85C0FCFFFF LEA EAX,[EBP-0340] 0167:0040CC83 6A00 PUSH 00 0167:0040CC85 50 PUSH EAX 0167:0040CC86 E8D5FE0800 CALL 0049CB60 0167:0040CC8B 53 PUSH EBX 0167:0040CC8C 8D85B4FEFFFF LEA EAX,[EBP-014C] 0167:0040CC92 6A00 PUSH 00 0167:0040CC94 50 PUSH EAX 0167:0040CC95 E8C6FE0800 CALL 0049CB60 0167:0040CC9A A0BD774D00 MOV AL,[004D77BD] <--------!!! 0167:0040CC9F 83C418 ADD ESP,18 0167:0040CCA2 5F POP EDI 0167:0040CCA3 5E POP ESI 0167:0040CCA4 5B POP EBX 0167:0040CCA5 8B4DFC MOV ECX,[EBP-04] 0167:0040CCA8 334D04 XOR ECX,[EBP+04] 0167:0040CCAB E8E9F90800 CALL 0049C699 0167:0040CCB0 C9 LEAVE 0167:0040CCB1 C3 RET Находим то месте, где какое-то значение записывается в AL. Теперь ставим брейкпоинт на этот адрес: bpm 004D77BD [enter] Теперь убираем предыдущий breakpoint и снова регистрируемся. Вываливаемся вот тут: 0167:0040CBF6 56 PUSH ESI 0167:0040CBF7 E8C2F4FFFF CALL 0040C0BE 0167:0040CBFC 8D85C0FCFFFF LEA EAX,[EBP-0340] 0167:0040CC02 57 PUSH EDI 0167:0040CC03 50 PUSH EAX 0167:0040CC04 E899B90900 CALL 004A85A2 0167:0040CC09 83C418 ADD ESP,18 0167:0040CC0C F7D8 NEG EAX 0167:0040CC0E 1AC0 SBB AL,AL < -----1 0167:0040CC10 FEC0 INC AL < -----2 0167:0040CC12 A2BD774D00 MOV [004D77BD],AL < -----3 0167:0040CC17 7563 JNZ 0040CC7C <---!!! 0167:0040CC19 8D85B4FEFFFF LEA EAX,[EBP-014C] 0167:0040CC1F 57 PUSH EDI 0167:0040CC20 50 PUSH EAX 0167:0040CC21 E87CB90900 CALL 004A85A2 0167:0040CC26 F7D8 NEG EAX 0167:0040CC28 1AC0 SBB AL,AL 0167:0040CC2A 59 POP ECX 0167:0040CC2B FEC0 INC AL 0167:0040CC2D 59 POP ECX 0167:0040CC2E A2BD774D00 MOV [004D77BD],AL 0167:0040CC33 7547 JNZ 0040CC7C 0167:0040CC35 6A04 PUSH 04 Ну и что тут происходит? В строке (1) отнимается AL от AL в результате чего получаем 0xFFh. В строке (2) увеличивается AL, что даёт нам 1 в al. Ну а потом только запись значения AL по адресу. Давайте проверим кое-что и в строке 0040CC10 вместо INC AL сделаем NOP NOP (90 90) и возвращаемся в прогу. Жмём YES в aggrement и ... вываливаемся в абаут, yeah! Прога зарегана! Для проверки перезагрузим программу, чтобы проверить осталась ли она зарегистрирована... yeah, прога осталась зарегана! :) Теперь только нужно сделать патч, чтобы регистрироваться на любое имя. Greetz: XTREEME - my gods HTB - yeah TKM! - fajna nazwa teamu lFE - ... ну и гритсы для всех крякеров и мазафакеров :) fucks: PayteR: козёл ты, короч :E ------------------- clever [clev@o2.pl] ======================================================================= TEAM-53 TUTORiALs \\ www.BSUiR.com \\ #team-53 , IRC.By, IRC.BYNETS.ORG =======================================================================