Welcome to Cracking Tutorial #64! Hiya guys, Ah finally, a first cracking tutorial in year 2000! As you can see, here's a new version *again* and I hope you like this one! :) And today for a bonus, I give you 7 tutors, #58-64! OK, let's rave! TOOLS ~~~~~ You'll need the following tools: (I use these tools, I assume you'll use 'em, but it doesn't mean that you'll need to use all those tools, so be sure to get them handy for the examples in this tutorial!) SoftICE v4.01 W32Dasm v8.93 Hacker's View v6.20 SmartCheck v6.03 ProcDump32 v1.6 Windows Commander v4.03 (I use it coz of easier to multitask) Delphi, VB, C++, or TASM to code a keygen or a patch.. Don't ask me where to download all these tools since you had a chance to get them when you used my older tutorials. Here is a good site where you can grab tools from: http://protools.cjb.net or http://w3.to/protools or ask any crackers to get you these tools! Are you ready?! OK! ;) PART 1 ~~~~~~ Name : Quick View Plus Trail Version : 5.1 Editor : JASC Target : qvp51.exe Tools : W32Dasm Snooper Hiew Brain Cracker : LW2000 Tutorial : No.37 http://www.jasc.com/ --- DISCLAIMER For educational purposes only! I hold no responsibility of the mis-used of this material! --- 1. Ok, after the 15 day trail Quick View Plus greets you with a nag, without the continue option. You can deinstall the proggy, or exit it. This is not what we want *g*. So let's snoop a bit. Mhmm, Qvp.dll, quite interesting. Let's make a deadlisting in W32Dasm. Mhhm, no interesting SDR, but what's about the Export/Import Functions? You should see this: [...] DllCanUnloadNow DllGetClassObject FVGetDocObjectView QVPManager QVPTrialWareStart <<<--- nice *g* 2. Let's go to QVPTrialWareStart. Doubleclick on this string and close the E/I Window. * Referenced by a CALL at Address: |:208058D7 <--- here we go Exported fn(): QVPTrialWareStart - Ord:000Bh :20805650 81EC28010000 sub esp, 00000128 :20805656 53 push ebx :20805657 55 push ebp :20805658 56 push esi :20805659 33DB xor ebx, ebx :2080565B 57 push edi :2080565C 891D340A8220 mov dword ptr [20820A34], ebx :20805662 E8E9FEFFFF call 20805550 :20805667 3C51 cmp al, 51 :20805669 88442413 mov byte ptr [esp+13], al :2080566D 7417 je 20805686 :2080566F 3C73 cmp al, 73 :20805671 740F je 20805682 :20805673 33F6 xor esi, esi :20805675 8BC6 mov eax, esi :20805677 5F pop edi :20805678 5E pop esi :20805679 5D pop ebp :2080567A 5B pop ebx :2080567B 81C428010000 add esp, 00000128 :20805681 C3 ret 3. Goto 208058D7 to see what's going on. * Reference To: QVP.QVPTrialWareStart :208058D7 E874FDFFFF call 20805650 <<-- jmp to function QVPTrialWareStart :208058DC 83C404 add esp, 00000004 :208058DF 85C0 test eax, eax <<-- test is ok if eax =1 :208058E1 0F84DD060000 je 20805FC4 <<-- If test fails jump to expired :208058E7 8B4508 mov eax, dword ptr [ebp+08] :208058EA A3280A8220 mov dword ptr [20820A28], eax :208058EF E86C240000 call 20807D60 :208058F4 8BF0 mov esi, eax :208058F6 A144058220 mov eax, dword ptr [20820544] :208058FB 33FF xor edi, edi 4. Ok, let's beat this babe! To fake the trailperiod simply fill eax with 1 by 20805650 and then return. To do this, note the offset, start hiew and goto the offset with F5. Then press F3 for editmode and F2 to enter asm commands. Then type: mov eax, 1 [Enter] ret [Enter] [Esc] Save your work and try to use Quick View Plus. Congratulation! You have beaten the trail! FINISH! Easy, or? cu LW2000 Any comments? Mail me LW2000@gmx.net! ---- tKC, thx for your tutors! I started with tutor 1 and i still read them... they are the best! PART 2 ~~~~~~ Name : Windows Sniper Version : 2.1 Editor : unHUman Software Target : WindowsSniper.Exe Tools : W32Dasm Hiew Brain Cracker : LW2000 Tutorial : No.38 www.unhuman.com --- DISCLAIMER For educational purposes only! I hold no responsibility of the mis-used of this material! --- Ok, hope you have already read the tut about windows sniper from +SEKt0r. Here ist another approach. Let's denag our target! 1. Ok, enter the details: Name: LW2000 Code: 1234 *Boom* Shit, wrong code, think we found a bug... ;) Let's note the msg and open the bitch in W32Dasm. 2. Same procedure as everytime, click on the string data reference and search for our string. Mhmm, found very often. So let's look for "You must agree to the license before you can use Windows Sni" This string was used for the license agreement. * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0040C539(C) | :0040C5DA 8BCE mov ecx, esi :0040C5DC E896260100 call 0041EC77 :0040C5E1 8B8684080000 mov eax, dword ptr [esi+00000884] :0040C5E7 85C0 test eax, eax :0040C5E9 0F854B010000 jne 0040C73A <--- Bad Boy! :0040C5EF 8DBE14080000 lea edi, dword ptr [esi+00000814] * Possible Reference to String Resource ID=00001: "You must agree to the license before you can use Windows Sni" | :0040C5F5 BB01000000 mov ebx, 00000001 :0040C5FA 8BCF mov ecx, edi :0040C5FC 899E84080000 mov dword ptr [esi+00000884], ebx :0040C602 E88966FFFF call 00402C90 :0040C607 3BC3 cmp eax, ebx :0040C609 744A je 0040C655 :0040C60B 8B07 mov eax, dword ptr [edi] :0040C60D 8BCF mov ecx, edi :0040C60F FF90B8000000 call dword ptr [eax+000000B8] :0040C615 8BCF mov ecx, edi :0040C617 E87466FFFF call 00402C90 :0040C61C 85C0 test eax, eax :0040C61E 7535 jne 0040C655 :0040C620 6AFF push FFFFFFFF :0040C622 50 push eax * Possible Reference to String Resource ID=00009: "The 30 day trial of Windows Sniper has expired. Windows Sni" | :0040C623 6A09 push 00000009 :0040C625 E8EB820100 call 00424915 :0040C62A 6A00 push 00000000 3. Looks quite clear =) Simply change the jne to je. To do this, open hiew and goto Offset C5E9 (noted from W32Dasm). Press F3 to edit and change 0F85 to 0F84. Save your work. Congratulation! You have denaged Windows Sniper! FINISH! Easy, or? cu LW2000 Any comments? Mail me LW2000@gmx.net! ---- tKC, thx for your tutors! I started with tutor 1 and i still read them... they are the best! PART 3 ~~~~~~ Name : Start Clean Version : generic Editor : Firas Target : startcln.exe Tools : Softice Brain Cracker : LW2000 Tutorial : No.39 --- DISCLAIMER For educational purposes only! I hold no responsibility of the mis-used of this material! --- 1. Ok, load start clean and click on register. Then enter LW2000 as Username and 1230099 as code. Press ok. *BOOM* A Error Messagebox pops up. 2. Switch with [ctrl]+[d] to sice and set a breakpoint on the function Getdlgitemtexta. BPX GetDlgItemtext Press F5 to contine. Try it again. *BOOM* Sice pops up. With F11 we get the Caller. Ok, trace with F10 till esp is moved into eax. Ok, d eax shows our serial. 3. After a pair of F10s we see Lstrcmp and then Test EAX, EAX. When we take a look into the api help for LSTRCMP, we know that the two values must be saved before. value 1 value 2 compare So let's take a close look at the code. It saves eax (our s/n) and 00406030. Mhhm, 'd 406030' *g* Ok, let's try this code... Congratulation! You are a registered user. FINISH! Easy, or? cu LW2000 Any comments? Mail me LW2000@gmx.net! ---- tKC, thx for your tutors! I started with tutor 1 and i still read them... they are the best! PART 4 ~~~~~~ Name : Xaudio Wave ENCODER Version : 1.xx Editor : Xaudio Target : encoder.exe Tools : W32Dasm 8.93 Hiew 6.01 Brain Cracker : LW2000 Tutorial : No.40 http://www.xaudio.de/encoder --- DISCLAIMER For educational purposes only! I hold no responsibility of the mis-used of this material! --- 1. Ok, try to start wave encoder. *BOOM* 'The Wave-Encoder only works in the registered version!' Mhhm, seems that we have found a bug ... ;) Let's fix it! 2. Load W32Dasm and click on the SDR. Search for 'The Wave-Encoder only works in the registered version!' and doubleclick on it. Then close the SDR Window. :004CBE2E 8945F4 mov dword ptr [ebp-0C], eax :004CBE31 837DF400 cmp dword ptr [ebp-0C], 00000000 :004CBE35 0F8ED4000000 jle 004CBF0F :004CBE3B A1B82A5000 mov eax, dword ptr [00502AB8] :004CBE40 803800 cmp byte ptr [eax], 00 :004CBE43 7518 jne 004CBE5D <-- mhmm, bad boy :004CBE45 6A40 push 00000040 * Possible StringData Ref from Code Obj ->"Unregistered" | :004CBE47 6854BF4C00 push 004CBF54 * Possible StringData Ref from Code Obj ->"The Wave-Encoder only works in" ->"the registered version!" | :004CBE4C 6864BF4C00 push 004CBF64 :004CBE51 6A00 push 00000000 3. Mhmm, by 004CBE4 is checked if this is a registered version, or not. Note the offset and open the file in Hiew. Goto cb243 (this was the offset) with F5 and press F3 for editmode. Now change the 7518 to 7418 (jne -> je). Save your work and try the wave encoder! Congratulation! All done. FINISH! Easy, or? cu lw2000 Any comments? Mail me lw2000@gmx.net! ---- I'd like to thank tKC for his tutors! I started with tutor 1 and i still read them... they are the best! PART 5 ~~~~~~ Tutorial for StreamBox VCR 1.0 Beta 2 Crack ps. as of 1/7/99, the crack and the original program were both available at ftp.gentile.cc (login: mp3, password: mp3). Part I -About StreamBox VCR StreamBox VCR is a brilliant example of reverse engineering; it will take the address of a real audio file (or in fact a long list of such files), decode them, contact the proper realaudio servers, and (cough cough) bully the server into sending it the raw files which it then saves to your harddrive. As a historical note, StreamBox VCR used to be a program called "x-fileget," which is available on the web and seems more stable than this beta version of StreamBox VCR, but it does not know how to negotiate with many of the newer realaudio servers, wheras StreamBox VCR does. Be warned that it is still a beta and sometimes crashes. It's also not the easiest program to use, but on the other hand, it's the only program that knows how to reach through space and time and suck the life out of those realaudio streams, so you've got to love it. Of course RealAudio doesn't want you recording their streams using this program, because they don't want you using another program to access realaudio files, and more importantly don't want you being able to save their real audio streams (it's probably more accurate to say that the stream distributors may not want you to record them, and RealAudio has assured them that they will be protected). To make a long story short, sometime around 12/7/99, RealAudio was able to obtain an injunction on StreamBox, preventing them from distributing the StreamBox VCR program (www.StreamBox.com for more info). It remains to be seen the outcome of this litigation. Part II - The Crack Anyway, the crack for this proggie was trivial. It *could* have been made very tricky - any program that can assume an internet connection can be made quite tough to crack, but we got lucky here. So I'll tell you about how the program was cracked for the benefit of the real newbies who are curious. Everyone else can change the channel now. But before i do i want you to search the web for some tutorials by 'the keyboard caper' a cracker who founded the phrozen crew. not to learn from, but to just read the words and enjoy the spirit of this person. there are more sophisticated complex essays on cracking, but i want you to get a feel for how happy these tutorials can make you. at least they did that for me. Okay here goes the story of the crack, which will be of interest only to a person who has never cracked a program before. The punchline is that we first find the funciton calls where the program places to its server (located at internet address 216.034.068.140), and then patch in instrutions which just return immediately from the function, without performing any call to the server. You are probably thinking that it can't be that easy, but it is. It could have been that the server sent some critical information nescesary to continue operating the program, but it doesn't. Of course when you begin cracking a program you don't know how easy it's going to be. The tools used for this crack were: SoftIce, a debugger which gets under the skin of windows, watches programs as they run, and can interupt them and let you look at the memory and code of running processes as they run. W32DASM, a dissasembler which helps you view executable programs by converting the binary to assembly and doing some very clever stuff about guessing where references are made to certain text strings, and showing you what code gets called from where. Very nice. Ultraedit, an editor that can do hex editing of arbitrary bytes in a file. This was used to make the modifications to the executable. PacketBoy, a program for observing Windows Sockets communication, ie the internet conversations that the program has with its server. The first thing i tried was running Packet_boy and observing the communication between the program and the server. Packet_boy actually intercepts incoming and outgoing windows-sockets calls and shows you who is sending what to whom. 14 bytes Ethernet Header 6 bytes Destination Ethernet Address xx:xx:xx:xx:xx:xx <- i blacked out address 6 bytes Source Ethernet Address 00:e0:b0:e2:a9:28 2 bytes type 0x800 ( IP ) 20 bytes IP Header 4 bits version 4 4 bits header length (longwords) 5 1 byte type of service 0x0 2 bytes total length 40 2 bytes identification 0xce0e 3 bits Fragmentation Flags 1 bit 0 . . - Reserved 1 bit . 1 . - Don't Fragment (DF) 1 bit . . 0 - More Fragments (MF) 13 bits fragment offset 0x0 1 byte time to live 119 1 byte protocol 0x6 ( TCP ) 2 bytes header checksum 0x1a89 4 bytes source IP address 216.34.68.140 <------------- the home base 4 bytes destination IP address xx.xx.xx.xx <---------- i blacked out address Data: 1.1 200 OK Set-Cookie: WEBTRENDS_ID=xxx.xxx.xxx.xx-3431x5x304.2x316x51; <--- i blacked out address expires=Fri, 31-Dec-2010 00:00:00 GMT; <--- looks like we have a while ;) path=/ Server: Microsoft-IIS/4.0 Date: Sat, 01 Jan 2000 09:08:42 GMT Pragma: No-Cache Content-length: 212 Things looked bad because it was clear that the server was *not* just sending back a bit that said yes or no, but rather was sending back more than 300 bytes of information, and that the server was sending back different info depending on the request made by the client. Anyway, this made me think that i was going to have to spoof the server and write a fake server for the program to converse with. That would not be fun. I decided to try the simple route first. Using a firewall (AtGuard) i was able to see how StreamBox VCR reacted when it couldn't get in touch with its mommy. Interestingly, after three unsuccesful attempts, it claims that "StreamBox VCR service will shutdown for maintenance." hmm... pretty weasly how it doesn't want to admit that it couldn't connect... Opened up the program (vcr_e_.exe) from W32DASM, and having not used the new dissasemblers, was quite surprised to see how smart it was. A search for a string containing "shutdown for maintenance" takes us right to the error reporting code in the program. Some interesting messages there including messages for when your username/password is rejected, when you are forced to upgrade the program, and other miscelaneous denials of service. We found the bitch's nest, as the keyboard caper might say, and now we are feeling a little less guilty about cracking this baby open. * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00451D7B(C) | :00451DAB 837D0805 cmp dword ptr [ebp+08], 00000005 :00451DAF 751E jne 00451DCF :00451DB1 6A00 push 00000000 :00451DB3 6A00 push 00000000 :00451DB5 8B4D10 mov ecx, dword ptr [ebp+10] :00451DB8 51 push ecx :00451DB9 8B550C mov edx, dword ptr [ebp+0C] :00451DBC 52 push edx * Possible StringData Ref from Data Obj ->"Access Denied" | :00451DBD 68A8DC4C00 push 004CDCA8 :00451DC2 6A01 push 00000001 :00451DC4 E868B0FBFF call 0040CE31 :00451DC9 83C418 add esp, 00000018 :00451DCC 8945F0 mov dword ptr [ebp-10], eax * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00451DAF(C) | :00451DCF 837D0806 cmp dword ptr [ebp+08], 00000006 :00451DD3 751D jne 00451DF2 :00451DD5 6A00 push 00000000 :00451DD7 6A00 push 00000000 :00451DD9 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"Sreambox VCR Server Service will " ->"shut down for maintance. After " ->"the server maintance has been " ->"completed, you will be able to " ->"use Sreambox VCR." | :00451DDB 68B8DC4C00 push 004CDCB8 So our first strategy will be to try to walk backwards through the program, from the occurence of this error, and try to find the location where the program *decides* it is going to deliver the error to us. The basic process involves running vcr.exe through softice, and setting breakpoints where we want softice to stop the program and let us look at the greasy insides of it. And then going back and forth between the dissasembler and softice to try out new guesses about what calls are being made from where. After several hours of walking the cat backwards from the error message, we begin to have a harder time. perhaps if i was able to convince softice to show me some backtraces, we might have been succesful with this approach, but this is the first time i've used softice and as it was, we eventually traced back to a section of code that was being jumped to indirectly (ie there wasn't a hardcoded jump to the code segment which would allow you to find the source of the jump from within the dissasembler). I try faking a RET into softice to get it to pop back to it's indirect caller but don't end up at a CALL statement, so am at a dead end. :0045A6D8 5F pop edi :0045A6D9 5E pop esi :0045A6DA 5B pop ebx :0045A6DB C9 leave :0045A6DC C22000 ret 0020 :0045A6DF 55 push ebp <- dissasembler doesn't know how we could get here.. :0045A6E0 8BEC mov ebp, esp :0045A6E2 83EC28 sub esp, 00000028 :0045A6E5 8B4508 mov eax, dword ptr [ebp+08] :0045A6E8 53 push ebx :0045A6E9 56 push esi :0045A6EA 57 push edi We decide to make a slight modification to our strategy. Again using the dissasembler, we are able to search for what we know are tell-tale Winsock commands (those used for internet communication). We search for 'recv' and find several locations. Unfortunately, this whole program is about talking over the internet, so we've got lots of candidates. Just for fun we search on the server address string "216.34.68.140," and surprise, there it is (actually in 3 locations). And we can see from the dissasembled code where it is in fact building the data packets to send. Possible Reference to String Resource ID=00131: "http://216.34.68.140/_vti_bin/go.dll?ID=%s" | :004165C2 6883000000 push 00000083 :004165C7 8D4DF0 lea ecx, dword ptr [ebp-10] :004165CA 51 push ecx :004165CB E8B02C0600 call 00479280 Again we go back to softice and set some breakpoints to figure out exactly which of the 3 code segments where the server address is referred to is actually used for the download verification (the others are presumably for other events, notably the initial registration). Now we go back to our old strategy of perusing the dissasembled code backwards from this code segment, and look for the signs of a modular function call. ie, in the midst of these jmps and movs, we are looking to see if we can't identify the functional component of the call to the server. Eventually, tracing back and performing a few breakpoint experiments, we see the tell-tale bookends of a function call (the saving of registers on entry via push, and the popping them off and retting at exit). * Referenced by a CALL at Addresses: |:00412317 , :00414D7D , :00414EEA , :00417753 , :004178C0 |:004310F3 , :00431260 , :00434316 , :0043E155 <--- look at all the places | that calls this :0043CC49 55 push ebp <----------- here's the start :0043CC4A 8BEC mov ebp, esp :0043CC4C 51 push ecx :0043CC4D 894DFC mov dword ptr [ebp-04], ecx :0043CC50 8B45FC mov eax, dword ptr [ebp-04] :0043CC53 83B8EC00000000 cmp dword ptr [eax+000000EC], 00000000 :0043CC5A 7407 je 0043CC63 :0043CC5C B801000000 mov eax, 00000001 :0043CC61 EB2F jmp 0043CC92 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0043CC5A(C) | :0043CC63 8B4DFC mov ecx, dword ptr [ebp-04] :0043CC66 51 push ecx :0043CC67 8B4DFC mov ecx, dword ptr [ebp-04] :0043CC6A 81C1A4000000 add ecx, 000000A4 :0043CC70 E82B5B0000 call 004427A0 :0043CC75 50 push eax :0043CC76 B9B00C4D00 mov ecx, 004D0CB0 :0043CC7B E8B396FDFF call 00416333 :0043CC80 8B55FC mov edx, dword ptr [ebp-04] :0043CC83 8982EC000000 mov dword ptr [edx+000000EC], eax :0043CC89 8B45FC mov eax, dword ptr [ebp-04] :0043CC8C 8B80EC000000 mov eax, dword ptr [eax+000000EC] * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0043CC61(U) | :0043CC92 8BE5 mov esp, ebp :0043CC94 5D pop ebp :0043CC95 C3 ret <------- and here's the finish Just for fun, but without much expectation we put a breakpoint at the start of the function call, and when it traps, we manually resume from the end of the function call. surprise, this little proggie got confused and thought that everything was approved. Okay, so now we know what we need to do. we go back into the dissasembler, read off the absolute file location for the first instruction of the function call (which W32DASM shows you on the bottom status line) and write it down, along with the hexadecimal byte code at that location (which codes for the PUSH opcode). Since my assembly is shakey, I also write down the byte opcode for a RET instruction which I get from looking at the end of the function code. Now we load up the executable in our hex editor, go to the location we wrote down that we know corresponds to the start of the function call. It all looks like gibberish, but we know we are at the right location since the byte matches that for the PUSH opcode that we wrote down from the dissasembler. We replace this byte with the byte representing the RET instruction, save file and exit. Just to make sure all went well, we reload the file into the dissasembler and sure enough, our change took and the function call starts with a RET. * Referenced by a CALL at Addresses: |:00412317 , :00414D7D , :00414EEA , :00417753 , :004178C0 |:004310F3 , :00431260 , :00434316 , :0043E155 <--- look at all the places | that calls this :0043CC49 C3 ret <----------- this used to say PUSH ebp :0043CC4A 8BEC mov ebp, esp :0043CC4C 51 push ecx :0043CC4D 894DFC mov dword ptr [ebp-04], ecx :0043CC50 8B45FC mov eax, dword ptr [ebp-04] :0043CC53 83B8EC00000000 cmp dword ptr [eax+000000EC], 00000000 :0043CC5A 7407 je 0043CC63 :0043CC5C B801000000 mov eax, 00000001 :0043CC61 EB2F jmp 0043CC92 We run the program and make sure it works. it does, natch. The patch above is for the call the program makes every time you want to download a file. Tracing through the other references to the server address we come across the function where it sends the initial registration info. :00416E9C 55 push ebp :00416E9D 8BEC mov ebp, esp :00416E9F 6AFF push FFFFFFFF :00416EA1 6864104A00 push 004A1064 :00416EA6 64A100000000 mov eax, dword ptr fs:[00000000] :00416EAC 50 push eax ... :00416F7F 5D pop ebp :00416F80 C20400 ret 0004 <----- here's the return from the call So again we patch in a RET instruction at the front of this call. We note that the return call at the end of the function is a RET 04 (hex bytes C20400), so that's what we patch in at the begining of the call (this time it's at file location 00016E9C, disassembly location 00416E9C). To test it out, we remove the registry entries for the program, rerun it and watch to see if the firewall is triggered. Nope, works like a charm. Still asks for the information but doesn't sent it anywhere. Now we could try to bypass the code that asks for this information, but instead we open the hex editor and look for the message that comes up in the opening window, the message that tells you how this information you are filliing out is going to be sent to streambox.com; since that's no longer true we feel we should correct the message. We find the message text at file location DD9E64, and replace it with a message that tells the user not to worry about any information being sent anywhere, remember that each character is followed by a 00 byte, and making sure not to change the size of the file. Now we want to automate the patch so that anyone can work it without having to edit the executable with a hex editor. So we grab perfx' patchfx utility and compile an official patch for the crack. Are we done? well, yes and no. We have reached the limit of our abilities. There are some remaining mysterious though, that we are not able to solve. First, we discover a segment of code that appears to be trying to connect to a server at 210.217.191.143. We run this address through visual router, and it comes up with a no-name machine in seol korea. Hmm, that sounds interesting. We try to figure out what the code is doing, but no luck. We watch the firewall and play with the program to see if it tries to go there. no luck. then we try to be clever and use softice to jump straight into that code, but aren't able to generate a call that doesn't segment fault on us. Okay, so in the interest of expediency, we give up on this and leave it fr the more experienced reverse-engineers. Now we've got a choice whether to leave the code in there or kill it. For safety, we zero out the reference to the address "210.217.191.143" and all references to the streambox server address "216.34.68.140" The other interesting thing we find in the code is a message that says "the true test of great espresso is savoring it without sugar or milk" - and the message is manipulated every time the program tries to talk with its mommy. We can't figure out how it's being used though. Maybe as a kind of one-time (every-time) encryption pad? It's just a lingering curiousity though, since the thing is mute now. That's it - hope you had as much fun as we did. And a final question to the cracker historians out there: do you know about the calculator crackers who cracked into the HP41C calculator? If not, time to go back and hit the books. -Flying Raichu ABOUT ~~~~~ I really hope you've enjoyed this tutorial as much as I did! Don't miss Tutor #65 soon! ;) And as I said last time: Without knowledge, there's no power! ;) Credits go to: tKC for Interface. tKC for Splash Logo Flying Raichu for providing a tut in this version. LW2000 for providing 4 tuts in this version. tKC for coding this version :) All the crackers (non-members of CiA) are welcome to send tutors for the next tutorials .. see below for my email address! *** 80 chars per line in textfile please! *** And all the tutors can be found at http://www.msjessca.da.ru! Greetz goto all my friends! You can find me on IRC or email me at tkc@reaper.org Coded by The Keyboard Caper - tKC The Founder of PhRoZeN CReW/Crackers in Action 2000 Compiled with Delphi 5 on 10 January 2000 Cracking Tutorial #64 is dedicated to Mandy.