base64 рулит =) код: VUdGe nVm1G ZjbVF c2FXU mMzZH base64encode(base64encode('Password Valid !')) => VUdGemMzZHZjbVFnVm1Gc2FXUWdJUT09 => VUdGe mMzZH ZjbVF nVm1G c2FXU WdJUT09 => перестановка местами => VUdGe nVm1G ZjbVF c2FXU mMzZH WdJUT09 - константа, добавляется в коде сама.
С алгоритмом не стал разбираться. Но мне понравилось. Особенно ошибочные операции со стеком))) Патчим программу в двух местах 1. Забиваем nop'ами 00454B70 E8 D3FBFFFF CALL CrackMe2.00454748 2. Меняем 00454B82 JNZ SHORT CrackMe2.00454B9F на очевидный JE SHORT CrackMe2.00454B9F
А то))) DeDe предательски спалила функцию IdBased64Decoder1. Откуда мне и стало ясно что base64 все накрывает медным тазом.
http://tuts4you.com/download.php?view.398 (Filesize 3.42 mb) >>7. Plugin Interface with plugins like Generic OEP Finder and Krypto ANALyzer.
Code: Text strings referenced in CrackMe2:CODE, item 1966 Address=00451BF4 Disassembly=DD CrackMe2.00451C74 Text string=ASCII 10,"TIdBase64Encoder" Text strings referenced in CrackMe2:CODE, item 1970 Address=00451CD8 Disassembly=DD CrackMe2.00451D58 Text string=ASCII 10,"TIdBase64Decoder" Кладется характерная строка Code: 004529C5 . 8B15 645C4500 MOV EDX, DWORD PTR DS:[455C64] ; CrackMe2.00451930 EDX = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" Строка непосредственно используемая в Base64