PDA

View Full Version : Unpacking Kazaa 2.6



Ferasso
11-23-2003, 11:32 PM
Anyone found a way to unpack Kazaa 2.6? I&#39;ve been trying, and all i got was a file with around 3.7 MB (the original is 2.4 MB). I thought it was unpacked, but it don&#39;t disassemble, and all sections seems to be still encrypted <_< (when i&#39;ve checked with resource hacker) . Not enough, the damn IAT is messed, and ImpREC couldn&#39;t resolve it... :(

I&#39;ve done a search, and seems that no one have found a way to unpack ActiveMark? :blink:

By the way: Is it really packed with ActiveMark? I&#39;ve run a game witch was packed with ActiveMark, and it bitched because SoftICE, but Kazaa don&#39;t detect it... :unsure:

Edit:
http://www.zerosecurity.de/modules.php?op=...order=0&thold=0 (http://www.zerosecurity.de/modules.php?op=modload&name=News&file=article&sid=4418&mode=&order=0&thold=0)

sharedholder
11-23-2003, 11:51 PM
http://protools.cjb.net/

Agent-Smith
11-24-2003, 07:15 PM
Im trying to play with proc dump but somehow kazaa is hiding itself from the listing - any ideas?

Ferasso
11-25-2003, 03:20 AM
To sharedholder:
I have been there before, not much help, since i&#39;ve lots of tools. Thanks.

To Agent-Smith:
No, it don&#39;t hide itself. Right-click on the list and choose refresh. When i tried to unpack, procdump crashed.

To anyone interested:
I&#39;ve been able to unpack this file (kazaa available at kazaa.com) and so far here is a summary:
The dumped code sections seems to match.
It includes a splashscreen of Kazaa Plus and a dialog saying: You appear to be trying to use Kazaa Plus in a PC that isn&#39;t licensed.
But there&#39;s no direct reference to this dialog, what makes me think that the programmers just commented-out some parts to make Kazaa Plus.
All resource sections (besides strings reference) are ok.
The string references are working well on the disassembly listing.
The IAT is mangled. But it uses the FF15 trick, where it calls an address, and this address jumps to the API. I&#39;ve found the table where this data is located.
Anyone&#39;s interested?

Just one thing is pissing me off: when I start, it complais that the adware files have been removed, and it will be shut down. Until now, i couldn&#39;t bypass this dialog.

If you have any tips...

Agent-Smith
11-25-2003, 03:35 AM
How&#39;d you get it to unpack? I messed about with it for a few hours and got frustrated.

Hasnain
11-25-2003, 04:18 AM
Maybe you could upload an unpacked copy somewhere, so people more proficient at cracking can get to work. Good work with unpacking.

FTFakes
11-25-2003, 09:46 AM
@Ferasso
Great work so far&#33; I have problems to make KaZuperNodes and KaNAT work with KMD since version 2.5, as it doesn&#39;t allow me to modify values in its memory space (OpenProcess fails). I&#39;m very interested in this unpacked version&#33;

RileyF
11-25-2003, 01:53 PM
he you done great work so far with unpacking, nice to see there&#39;s so initiative :P .. so you can come in the resource sections huh? so are there many differents in strings and stuff in comparing with kmd2.02? cause if not, i think we could get k++ and kl extentions to work with a few little changes and that would be very good news..
btw indeed host the unpacked version somewhere so more devs can look at it. in this way there can be a solution more quick to your problems :D

RileyF
11-28-2003, 11:19 AM
hey man just wondering..what program did you use to get this result?

(hmm i should have edited my above post.. damn i&#39;m just too lazy ;) so sorry for double post)

Ferasso
11-28-2003, 04:54 PM
First, sorry for taking so long, my pc broke after i&#39;ve kicked it, so now, i&#39;ve borrowed a machine from a friend.
I can&#39;t host the file, since this computer don&#39;t have the file, not softice, nothing. But as a good cracker, i have everything on paper, so, i&#39;ll tell you how to unpack kazaa yourself.
Tools: SoftIce, LordPE, Hex editor

Open kazaa.exe in hex editor, go to offset 12FACC, there you will find a byte BB, and change it to CC. Save and to into SICE and:
bpint 03
Run the file, Sice breaks.
e eip bb
bc*
bpmb 576E71 x
F5

Wait... sice breaks
a eip
jmp eip
nop
enter
F5

Go into lord PE, fully dump kazaa, then kill task.
Open it in PE editor, set the entry point to 176E71
Save. Open it in hex editor, find EBFE90 and replace with 558BEC. Done.
If you want to disassemble in w32dasm, set the section characteristics to E0000..
instead of C00...
I&#39;ll get back WHEN i can, and IF i can... sorry.

Edit:
OH MY GOD&#33; I&#39;VE FINALLY POSTED&#33; THE DAMN COMPUTER CRASHED TWICE WHILE I WAS POSTING BEFORE....

The IAT will be corrupted, but you can do bpx on it and watch the stack, (dd esp), the first address, it&#39;s where it came from, do a unassemble in that address and you will see something like

jmp address
jmp address
jmp address
jmp API_CALL
jmp API_CALL
jmp API_CALL
jmp API_CALL
jmp API_CALL
jmp API_CALL
and so on....

in my computer look: A00014 and you will see.
Good luck. And if anyone wants to buy me a new pc...

Ferasso
11-29-2003, 04:21 PM
And...??? Too lazy, boys? Doesn&#39;t seem too hard&#33;
My old machine seems to be working now, and if it will keep working, i can have the unpacked file hosted somewhere. But for some reason, klboard crashes my system when i open it in ie. Others sites don&#39;t do that. :blink:

RileyF
11-29-2003, 05:41 PM
looks there&#39;s some kind of spell of sharman lies over your pc then lol :lol: j/k
but it would be nice if you or some one else can host it (maybe edkes ??) in this way the resource editors can go to work to tune it into a k-lite, such as the icons, menu&#39;s and textboxes :P , then it&#39;s only waiting for a loader to get rid of the spyware..

internet.news
11-29-2003, 08:08 PM
I tried it as well and what I got is something called
"p2p networking..." in my tasks...

Just us K-Lite K++ ;)

Agent-Smith
12-01-2003, 07:12 PM
Anyone had any luck - I can get to the first breakpoint but after that softice goes to 2 unhandled exceptions and kazaa crashes.


STATUS_ACCESS_VIOLATION

STACK_OVERFLOW

STATUS_ACCESS_VIOLATION


This is what I get if I enter the break point on memory access with 576E71 x

what exactly are we looking for at that address - because I have a feeling it has changed on my machine.

How much ram did u have at the time of unpacking, maybe that is affecting the memory address.

Ferasso
12-01-2003, 09:44 PM
Try using Win98. You must be using XP, and that&#39;s crap.

And just one thing: my hd died, with all on it. Lost all lesbians movies :angry:

576E71 is the entry point of the unpacked executable. The opcodes:
558BEC

55 stands for Push ebp
8BEC i don&#39;t remember.

Someone with W98 must give it a try. And can&#39;t be true that just me and you on this forum can use softice. I&#39;ll try to get the unpacked file on another machine, but it&#39;s so hard to find another machine besides these public computers.

EDIT:
To Agent-Smith:
Read here:
http://www.woodmann.net/forum/showthread.p...onal+breakpoint (http://www.woodmann.net/forum/showthread.php?t=4683&highlight=conditional+breakpoint)

Wonderful for breaking when you know the opcodes: 558BEC
Remember that on memory they are reversed.

jakert50
12-11-2003, 05:52 PM
If you need some hosting, let me know. I can put it up on my site (Intrepid Studios). Just PM me if you want and I&#39;ll set up a user account for you on that site so you can upload stuff.

~Jaker B)

jakert50
12-11-2003, 05:57 PM
Quick Question.. I don&#39;t have 2.6 yet, but will those VB modules that allowed communication to older Kazaa&#39;s still work? I used those for KazIE (the post for that doesn&#39;t appear to be here anymore) and I&#39;m wondering if KazIE will still work with the new version...

~Jaker

Edit: If you go to the site to download KazIE, there&#39;s a very old version up. I should probably update that. The new version is at www.intrepidstudios.net/KazIE35.zip (http://www.intrepidstudios.net/KazIE35.zip)
Just FYI...

SuBKulture
12-11-2003, 06:20 PM
Originally posted by jakert50@11 December 2003 - 17:57
Quick Question.. I don&#39;t have 2.6 yet, but will those VB modules that allowed communication to older Kazaa&#39;s still work? I used those for KazIE (the post for that doesn&#39;t appear to be here anymore) and I&#39;m wondering if KazIE will still work with the new version...

~Jaker

Edit: If you go to the site to download KazIE, there&#39;s a very old version up. I should probably update that. The new version is at www.intrepidstudios.net/KazIE35.zip (http://www.intrepidstudios.net/KazIE35.zip)
Just FYI...
Quick answer: Yes it will.

Johnny_B
12-11-2003, 06:26 PM
Didn&#39;t random nut unpack kazaa.exe? :unsure:

RileyF
12-11-2003, 06:49 PM
Originally posted by Johnny_B@11 December 2003 - 19:26
Didn&#39;t random nut unpack kazaa.exe? :unsure:
well yeah he unpacked it, how would you otherwise reverse engineer it... but that&#39;s not the point.. if some one can host the unpacked kazaa other devs that can&#39;t unpack it (cause it&#39;s protected) ,trough whatever problems, can work on programs for 2.6, resource sections can be changed --&#62; turn outlook in to a lite (icons)and maybe some one can work on KLR and imporve it.. so if some one can host it, that will be a &#39;investment&#39; in the developing of kazaa lite...

Johnny_B
12-11-2003, 07:04 PM
Originally posted by RileyF+11 December 2003 - 17:49--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (RileyF &#064; 11 December 2003 - 17:49)</td></tr><tr><td id='QUOTE'><!--QuoteBegin-Johnny_B@11 December 2003 - 19:26
Didn&#39;t random nut unpack kazaa.exe? :unsure:
well yeah he unpacked it, how would you otherwise reverse engineer it... but that&#39;s not the point.. if some one can host the unpacked kazaa other devs that can&#39;t unpack it (cause it&#39;s protected) ,trough whatever problems, can work on programs for 2.6, resource sections can be changed --&#62; turn outlook in to a lite (icons)and maybe some one can work on KLR and imporve it.. so if some one can host it, that will be a &#39;investment&#39; in the developing of kazaa lite...[/b][/quote]
Yeah I know all that.
It&#39;s just that if random nut already did it, perhaps he could make it easier for us and put it up on his klr website for us to download (or perhaps maybe even email it to someone that can host it).
Once some of us have it, he could then take take it off of his website (no need for him to get into trouble :ph34r: ).
We will eventually spread it. ;)

random nut
12-11-2003, 08:08 PM
Yes, I unpacked it, but I will not send it to anyone else or put it on a web site. I have provided the source code to klr.exe and use the source luke. :D

Kunal
12-11-2003, 08:32 PM
c&#39;mon RN, just send it to me pls&#33; :)

Johnny_B
12-11-2003, 09:01 PM
Originally posted by random nut@11 December 2003 - 19:08
Yes, I unpacked it, but I will not send it to anyone else or put it on a web site. I have provided the source code to klr.exe and use the source luke. :D
I think you like watching us trying to do in a month what you can do in 5 minutes. :lol:
We can&#39;t handle the source like you do, Obi-wan. :D

Please help us on this one, random nut. :)

--Spam--
12-12-2003, 04:15 AM
Does this help?


This code unpacks ActiveMark wrapper thanks to the fact, that it uses upx to compress the original PE. Sometimes theres is an error if SoftICE is active in w98 due to a high INT1 address, because a protection checks a large amount of memory from this address and it may produce an access exception.




.386

.model flat, stdcall

option casemap: none
include masm32includewindows.inc
include masm32includekernel32.inc
include masm32includeuser32.inc
include masm32includecomdlg32.inc

includelib masm32libkernel32.lib
includelib masm32libuser32.lib
includelib masm32libcomdlg32.lib

ImageBase&nbsp; &nbsp; &nbsp; equ 400000h
sizeCabecera&nbsp; &nbsp; equ 600h
FALSO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equ 0
CIERTO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equ -1

GetSection&nbsp; &nbsp; &nbsp; PROTO :DWORD
RealignSections PROTO
WriteITAddress&nbsp; PROTO :DWORD, :DWORD

.data
Save&nbsp; &nbsp; &nbsp; &nbsp; db &#39;Unpacked.exe&#39;,0
Semaforo&nbsp; &nbsp; db &#39;LeeMe.txt&#39;,0
msgNoes&nbsp; &nbsp; db &#39;La proteccion no es ActiveMark o es otra version, desea continuar de todas maneras?&#39;,0
ofnTitle&nbsp; &nbsp; db &#39;Unpacker para el ActiveMARK v2.6 bY eSn-mIn&#39;,0
ofnFilter&nbsp; db &#39;Executable Files (*.exe)&#39;,0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db &#39;*.exe&#39;,0,0
Readme&nbsp; &nbsp; &nbsp; db &#39;Unpacker para el ActiveMARK v2.6 bY eSn-mIn&#39;,13,10
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db &#39;Creado el 28 de Septiembre del 2002&#39;,13,10
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db &#39;http://www.esnmin.get.to&#39;
sizeReadme&nbsp; equ &#036; - OFFSET Readme
Pregunta&nbsp; &nbsp; db FALSO

.data?
stnfo&nbsp; &nbsp; &nbsp; STARTUPINFO <>
pinfo&nbsp; &nbsp; &nbsp; PROCESS_INFORMATION <>
ofn&nbsp; &nbsp; &nbsp; &nbsp; OPENFILENAME <>
ofnFile&nbsp; &nbsp; db 200h dup (?)
Bytes&nbsp; &nbsp; &nbsp; dd ?
sizeRsrc&nbsp; &nbsp; dd ?
lpRsrc&nbsp; &nbsp; &nbsp; dd ?
lpRsrc2&nbsp; &nbsp; dd ?
rvaRsrc&nbsp; &nbsp; dd ?
Cabecera&nbsp; &nbsp; db sizeCabecera dup (?)
lpHook&nbsp; &nbsp; &nbsp; dd ?
lpFile&nbsp; &nbsp; &nbsp; dd ?
hSave&nbsp; &nbsp; &nbsp; dd ?
hReadme&nbsp; &nbsp; dd ?

.code
Main proc
LOCAL rvaIT:DWORD, sizeIT:DWORD, ImageSize:DWORD

invoke GetModuleHandle, NULL

&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.hWndOwner, eax
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.lStructSize, SIZEOF ofn
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.lpstrFilter, offset ofnFilter
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.lpstrTitle, offset ofnTitle
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.lpstrFile, offset ofnFile
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.nMaxFile, 200h
&nbsp; &nbsp; &nbsp; &nbsp; mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OFN_LONGNAMES or OFN_EXPLORER or
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OFN_HIDEREADONLY
invoke GetOpenFileNameA, offset ofn
or eax, eax
jz error

invoke GetStartupInfo, OFFSET stnfo
invoke CreateProcess, OFFSET ofnFile, NULL, NULL, NULL, NULL,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATE_SUSPENDED, NULL, NULL, OFFSET stnfo, OFFSET pinfo

; Lee la cabecera
&nbsp; &nbsp; &nbsp; &nbsp; invoke ReadProcessMemory, pinfo.hProcess, ImageBase, OFFSET Cabecera,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sizeCabecera, OFFSET Bytes

; Obtiene el size y la RVA de la seccion RSRC
&nbsp; &nbsp; &nbsp; &nbsp; invoke GetSection, 3
&nbsp; &nbsp; &nbsp; &nbsp; mov rvaRsrc, eax
&nbsp; &nbsp; &nbsp; &nbsp; mov sizeRsrc, edx

; Realinea las secciones
&nbsp; &nbsp; &nbsp; &nbsp; invoke RealignSections
&nbsp; &nbsp; &nbsp; &nbsp; cmp eax, -1
&nbsp; &nbsp; &nbsp; &nbsp; jz error

; Lee la seccion de recursos donde esta la IAT (La segunda vez es un backup)
&nbsp; &nbsp; &nbsp; &nbsp; invoke GlobalAlloc, NULL, sizeRsrc
&nbsp; &nbsp; &nbsp; &nbsp; mov lpRsrc, eax
&nbsp; &nbsp; &nbsp; &nbsp; invoke ReadProcessMemory, pinfo.hProcess, rvaRsrc, lpRsrc, sizeRsrc, OFFSET Bytes
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; invoke GlobalAlloc, NULL, sizeRsrc
&nbsp; &nbsp; &nbsp; &nbsp; mov lpRsrc2, eax
&nbsp; &nbsp; &nbsp; &nbsp; invoke ReadProcessMemory, pinfo.hProcess, rvaRsrc, lpRsrc2, sizeRsrc, OFFSET Bytes


mov edi, lpRsrc

; Escribe Funcion con la direccion de LoadLibraryA
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, LoadLibrary
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax+2]
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; mov FuncionLoadLibrary, eax
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, CreateFile
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax+2]
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; mov FuncionCreateFile, eax
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, CloseHandle
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax+2]
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; mov FuncionCloseHandle, eax
&nbsp; &nbsp; &nbsp; &nbsp;
; Busca la cadena LoadLibraryA
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, &#39;daoL&#39;
&nbsp; &nbsp; &nbsp; &nbsp; xor ecx, ecx
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE [edi+ecx] &#33;= eax && ecx < sizeRsrc
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc ecx
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .IF ecx == sizeRsrc && Pregunta == FALSO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov Pregunta, CIERTO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; invoke MessageBoxA, 0, OFFSET msgNoes, OFFSET ofnTitle, MB_OKCANCEL OR MB_ICONQUESTION
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cmp eax, IDCANCEL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jz error

&nbsp; &nbsp; &nbsp; &nbsp; .ENDIF
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, ecx
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, 2
&nbsp; &nbsp; &nbsp; &nbsp; push eax

; Busca algunos ceros seguidos
&nbsp; &nbsp; &nbsp; &nbsp; xor eax, eax
&nbsp; &nbsp; &nbsp; &nbsp; xor edx, edx
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE edx < sizeHook + 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Uno de los ceros marca el final de una cadena, de ahi el +1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .IF BYTE PTR [edi+ecx] == 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc edx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ELSEIF
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xor edx, edx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDIF
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc ecx
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, ecx
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, sizeHook
&nbsp; &nbsp; &nbsp; &nbsp; add eax, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; mov lpHook, eax

; Busca la parte de la IAT que referencia a esa cadena y escribe la direccion del Hook
&nbsp; &nbsp; &nbsp; &nbsp; pop eax
&nbsp; &nbsp; &nbsp; &nbsp; add eax, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, ImageBase
&nbsp; &nbsp; &nbsp; &nbsp; xor ecx, ecx
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE [edi+ecx] &#33;= eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc ecx
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, lpHook
&nbsp; &nbsp; &nbsp; &nbsp; mov [edi+ecx], eax

; Busca el FirstThunk del bloque del Kernel32.dll y suma 4
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, ecx
&nbsp; &nbsp; &nbsp; &nbsp; add eax, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, ImageBase
&nbsp; &nbsp; &nbsp; &nbsp; xor ecx, ecx
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE [edi+ecx] &#33;= eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc ecx
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp; add DWORD PTR [edi+ecx], 4

; Busca el rva de la IT
&nbsp; &nbsp; &nbsp; &nbsp; sub ecx, 10h
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, ecx
&nbsp; &nbsp; &nbsp; &nbsp; add eax, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, ImageBase
&nbsp; &nbsp; &nbsp; &nbsp; mov rvaIT, eax

; Busca el size de la IT
&nbsp; &nbsp; &nbsp; &nbsp; mov bl, FALSO
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE bl == FALSO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov bl, CIERTO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov edx, 20
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .WHILE edx > 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .IF BYTE PTR [edi+ecx] &#33;= 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov bl, FALSO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDIF
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc ecx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dec edx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, ecx
&nbsp; &nbsp; &nbsp; &nbsp; add eax, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; sub eax, rvaIT
&nbsp; &nbsp; &nbsp; &nbsp; mov sizeIT, eax

; Escribe la direccion y size de la IT en la cabecera
&nbsp; &nbsp; &nbsp; &nbsp; invoke WriteITAddress, rvaIT, sizeIT

; Escribe el Hook en el hueco libre
&nbsp; &nbsp; &nbsp; &nbsp; mov edi, lpHook
&nbsp; &nbsp; &nbsp; &nbsp; sub edi, rvaRsrc
&nbsp; &nbsp; &nbsp; &nbsp; add edi, lpRsrc
&nbsp; &nbsp; &nbsp; &nbsp; mov esi, OFFSET Hook
&nbsp; &nbsp; &nbsp; &nbsp; mov ecx, sizeHook
&nbsp; &nbsp; &nbsp; &nbsp; rep movsb

; Obtiene la ImageSize de la Cabecera
&nbsp; &nbsp; &nbsp; &nbsp; mov edi, DWORD PTR Cabecera + 3Ch
&nbsp; &nbsp; &nbsp; &nbsp; add edi, OFFSET Cabecera
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [edi+50h]
&nbsp; &nbsp; &nbsp; &nbsp; mov ImageSize, eax

invoke DeleteFile, OFFSET Readme
invoke WriteProcessMemory, pinfo.hProcess, ImageBase, OFFSET Cabecera, sizeCabecera, OFFSET Bytes
invoke WriteProcessMemory, pinfo.hProcess, rvaRsrc, lpRsrc, sizeRsrc, OFFSET Bytes
invoke GlobalFree, lpRsrc
invoke ResumeThread, pinfo.hThread

; Espera a que se desempaque..
&nbsp; &nbsp; &nbsp; &nbsp; @@:
&nbsp; &nbsp; &nbsp; &nbsp; invoke CreateFile, OFFSET Semaforo, GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
&nbsp; &nbsp; &nbsp; &nbsp; cmp eax, INVALID_HANDLE_VALUE
&nbsp; &nbsp; &nbsp; &nbsp; jz @b
&nbsp; &nbsp; &nbsp; &nbsp; mov hReadme, eax
&nbsp; &nbsp; &nbsp; &nbsp; invoke WriteFile, hReadme, OFFSET Readme, sizeReadme, OFFSET Bytes, NULL
&nbsp; &nbsp; &nbsp; &nbsp; invoke CloseHandle, hReadme

invoke SuspendThread, pinfo.hThread
invoke WriteProcessMemory, pinfo.hProcess, rvaRsrc, lpRsrc2, sizeRsrc, OFFSET Bytes
invoke GlobalFree, lpRsrc2

invoke GlobalAlloc, NULL, ImageSize
mov lpFile, eax
invoke ReadProcessMemory, pinfo.hProcess, ImageBase, lpFile, ImageSize, OFFSET Bytes

invoke CreateFile, OFFSET Save, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL
mov hSave, eax
invoke WriteFile, hSave, lpFile, ImageSize, OFFSET Bytes, NULL
invoke GlobalFree, lpFile

invoke TerminateProcess, pinfo.hProcess, NULL
invoke CloseHandle, pinfo.hProcess
invoke CloseHandle, hSave
jmp fin

error:
invoke GlobalFree, lpRsrc
invoke GlobalFree, lpRsrc2
invoke TerminateProcess, pinfo.hProcess, NULL
invoke CloseHandle, pinfo.hProcess

fin:
invoke ExitProcess, NULL
ret
Main endp

; -----------------------------------------------------------------------

GetSection proc Number
LOCAL rvaSection:DWORD, sizeSection:DWORD
&nbsp; &nbsp; &nbsp; &nbsp; push ebx
&nbsp; &nbsp; &nbsp; &nbsp; push edi
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov edi, DWORD PTR Cabecera + 3Ch
&nbsp; &nbsp; &nbsp; &nbsp; add edi, OFFSET Cabecera
&nbsp; &nbsp; &nbsp; &nbsp; xor ebx, ebx
&nbsp; &nbsp; &nbsp; &nbsp; mov bx, [edi+14h]&nbsp; &nbsp; &nbsp; ; Size of NT header
&nbsp; &nbsp; &nbsp; &nbsp; add edi, ebx
&nbsp; &nbsp; &nbsp; &nbsp; add edi, 18h+8&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Size of FileHeader + Size of the name of the section
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, 28h
&nbsp; &nbsp; &nbsp; &nbsp; mov ebx, Number
&nbsp; &nbsp; &nbsp; &nbsp; dec ebx
&nbsp; &nbsp; &nbsp; &nbsp; mul ebx
&nbsp; &nbsp; &nbsp; &nbsp; add edi, eax&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Size of a section * Number of section - 1
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [edi]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Size of RSRC section
&nbsp; &nbsp; &nbsp; &nbsp; mov sizeSection, eax
&nbsp; &nbsp; &nbsp; &nbsp; add edi, 4
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [edi]
&nbsp; &nbsp; &nbsp; &nbsp; add eax, ImageBase&nbsp; &nbsp; &nbsp; ; RVA of RSRC section
&nbsp; &nbsp; &nbsp; &nbsp; mov rvaSection, eax
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, rvaSection
&nbsp; &nbsp; &nbsp; &nbsp; mov edx, sizeSection
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; pop edi
&nbsp; &nbsp; &nbsp; &nbsp; pop ebx
&nbsp; &nbsp; &nbsp; &nbsp; ret

GetSection endp

; -----------------------------------------------------------------------

RealignSections proc
LOCAL NumberOfSections:WORD
&nbsp; &nbsp; &nbsp; &nbsp; push eax
&nbsp; &nbsp; &nbsp; &nbsp; push ebx
&nbsp; &nbsp; &nbsp; &nbsp; push edi
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov edi, DWORD PTR Cabecera + 3Ch
&nbsp; &nbsp; &nbsp; &nbsp; add edi, OFFSET Cabecera
&nbsp; &nbsp; &nbsp; &nbsp; mov ax, [edi+6]
&nbsp; &nbsp; &nbsp; &nbsp; mov NumberOfSections, ax

&nbsp; &nbsp; &nbsp; &nbsp; xor ebx, ebx
&nbsp; &nbsp; &nbsp; &nbsp; mov bx, [edi+14h]&nbsp; &nbsp; &nbsp; ; Size of NT header
&nbsp; &nbsp; &nbsp; &nbsp; add edi, ebx
&nbsp; &nbsp; &nbsp; &nbsp; add edi, 18h&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Size of FileHeader
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; mov bx, NumberOfSections
&nbsp; &nbsp; &nbsp; &nbsp; .WHILE bx > 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .IF (DWORD PTR [edi] &#33;= &#39;????&#39; || DWORD PTR [edi+4] &#33;= &#39;????&#39;) && Pregunta == FALSO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov Pregunta, CIERTO
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; invoke MessageBoxA, 0, OFFSET msgNoes, OFFSET ofnTitle, MB_OKCANCEL OR MB_ICONQUESTION
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cmp eax, IDCANCEL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jz error
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDIF
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov eax, [edi+8]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov [edi+8+8], eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov eax, [edi+0Ch]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov [edi+0Ch+8], eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add edi, 28h
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dec bx
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; pop edi
&nbsp; &nbsp; &nbsp; &nbsp; pop ebx
&nbsp; &nbsp; &nbsp; &nbsp; pop eax
&nbsp; &nbsp; &nbsp; &nbsp; jmp fin
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; error:
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, -1
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; fin:
&nbsp; &nbsp; &nbsp; &nbsp; ret
&nbsp; &nbsp; &nbsp; &nbsp;
RealignSections endp

; -----------------------------------------------------------------------

WriteITAddress proc rvaIT:DWORD, sizeIT:DWORD
&nbsp; &nbsp; &nbsp; &nbsp; mov edi, DWORD PTR Cabecera + 3Ch
&nbsp; &nbsp; &nbsp; &nbsp; add edi, OFFSET Cabecera
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, rvaIT
&nbsp; &nbsp; &nbsp; &nbsp; mov [edi+80h], eax
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, sizeIT
&nbsp; &nbsp; &nbsp; &nbsp; mov [edi+84h], eax
&nbsp; &nbsp; &nbsp; &nbsp; ret

WriteITAddress endp

; -----------------------------------------------------------------------

Hook proc Modulo:DWORD
LOCAL hRead:DWORD
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [ebp+4]
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; .IF eax == 47078A95h&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; xchg eax, ebp | mov al, [edi] | inc edi
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov edx, [ebp+4]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .WHILE DWORD PTR [edx] &#33;= 0C009078Bh&nbsp; &nbsp; ; mov eax, [edi] | or eax, eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dec edx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sub edx, 6
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov eax, edx
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .WHILE DWORD PTR [eax] &#33;= 0FFCD8357h&nbsp; &nbsp; ; push edi | or ebp, -1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dec eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .ENDW
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov WORD PTR [eax], 685Eh&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; pop esi | push
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov [eax+2], edx&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; address
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov BYTE PTR [eax+6], 0C3h&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; ret
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sub eax, 0Dh&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; eax = OEP &#33;&#33;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; ; Escribe el OEP en la cabecera
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov edx, ImageBase
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add edx, [edx+3Ch]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sub eax, ImageBase
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov [edx+28h], eax

&nbsp; &nbsp; &nbsp; &nbsp; ; Crea algo para avisar de que ya estamos
&nbsp; &nbsp; &nbsp; &nbsp; call _CreateFile
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FuncionCreateFile&nbsp; dd ?
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db &#39;LeeMe.txt&#39;,0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _CreateFile:
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pop eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push NULL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push FILE_ATTRIBUTE_NORMAL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push CREATE_ALWAYS
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push NULL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push NULL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push NULL
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add eax, 4
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax-4]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; call eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov hRead, eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; call _CloseHandle
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FuncionCloseHandle&nbsp; dd ?
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _CloseHandle:
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pop eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; push hRead
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; call eax
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jmp &#036;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .ENDIF
&nbsp; &nbsp; &nbsp; &nbsp; call _LoadLibrary
&nbsp; &nbsp; &nbsp; &nbsp; FuncionLoadLibrary dd ?
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; _LoadLibrary:
&nbsp; &nbsp; &nbsp; &nbsp; pop eax
&nbsp; &nbsp; &nbsp; &nbsp; mov eax, [eax]
&nbsp; &nbsp; &nbsp; &nbsp; push Modulo
&nbsp; &nbsp; &nbsp; &nbsp; call eax
&nbsp; &nbsp; &nbsp; &nbsp; ret

Hook endp

sizeHook&nbsp; &nbsp; equ &#036; - OFFSET Hook

end Main

--Spam--
12-12-2003, 04:17 AM
Or this?


A 10-30 minutes method to remove the activemark protection from a game is presented here:



AM=Activemark

tools required :
PTRW/W9x, SoftIce, C/C++ compiler, basic debugging skills.

Now this method is very cumbersome, my english is bad and if your not familiar with S-ice and such
you can skip all this :)

Background:

AM&#39;s Softice detection is quite simple. It tries to open a file like "&#092;&#092;.&#092;SICE", "&#092;&#092;.&#092;NTICE", etc and exits if success. So simply use Yoda&#39;s HOKO and you can play with SoftIce as you like.
I needed PTRW 2000 / WinMe because it makes a correct dump, which I wasn&#39;t able (I didnt&#39; try hard :) to make
under NT/2k with Sice - addins.


1). Method of finding our entrypoint:
* under nt/2k, launch hoko (use CreateFileA hook and ret -1 if "&#092;&#092;.&#092;NTICE" on CreateFileA)
* launch the AM protected game, wait 1-3 seconds, press ctrl-d, then search for the following pattern in memory :
if you cant find it, g and wait another second, then ctrl-d again. It is there, believe me.

L0 lea edi, [esi + ...]
L1 mov eax, [edi]
L2 or eax, eax
L3 jnz XXX

i.e. s 400000 L -1 8B, 07, 09, C0, 74

OK. note the above instruction, is something like lea edi, [esi + ...]
because this will be our new entry point.

now boot in w9x, load the .exe in PTRW, bpx at L0, and go.
we will receive a break due to our bpx @ L0

(Here I should tell you that even you make the perfect dump at this point, it won&#39;t work because:
a) - the .exe already loaded &LoadLibraryA and &GetProcAddress somewhere in memory, making our crack OS-dependant);
B) - you need to skip 2 more checks (2 JMPs);
c) - the game is reading itself, so because our dump is different than the original exe, another error will occur.

you will learn to avoid all these problems in a sec.


for the point c). we will be loading at L0 a little DLL, am.dll, which will overwrite LoadLibraryA and GetProcAddress (at loadtime) in the game (their locations are found very easy :
scroll down the code, you will see a call to [esi + ...] just a few lines below, notice the address on a
paper, I call them LLA. The GPA (GetProcAddress) is just after the LLA. Also note the values of the ESI and EDI registers, as when the EIP will be "L1". (i.e LEA EDI, ... is executed)
(ESI is always 401000, EDI is 401000 + some_value)


so, we will write a little stub. Search down the code, you will notice that we have plenty of space (0s) just
after this kind of jump, at L6...
L4 POPAD
L5 JMP ep
L6 db 0, 0, 0, 0,... (lots of them, cant miss&#39;em :)

so, we&#39;ll jump at L6, make a call to loadlibrary, then jump back, then dump the exe.

at L0: overwrite with :
NOP 90
JMP L6 ; (E9 XX XX XX XX)


at L6:
CALL &#036;+7 ; (E8 07 00 00 00)
db &#39;am.dll&#39;, 0 ; (7 bytes)
mov edx, @LLA ; address of LoadLibraryA you&#39;ve noted before
call edx ; the stack is already with &#39;am.dll&#39; on it
; return to host
pushad
mov esi, 401000 ; (BE 00 10 40 00) (prev. noted value)
mov edi, ... ; (BF xx xx xx xx) (prev. noted value)
JMP L1


ok, now is time to fix the point B). i.e. get rid of the subsequent AM checks.

search in memory for the address of the following
AS1 = "ActiveMark Client engine could not find a valid volume."
AS2 = "Unable to start ActiveMark Client engine due to an internal error."

ok, now search in memory for instructions : "PUSH AS1" and "PUSH AS2", (they appear only once)
and look just before. Sometimes there is a simple JNZ or JZ instruction, sometimes it takes a
little bit of effort but this is it : you just have to avoid (with a simple JMP) getting here.
(shouldnt&#39; take you more than 5 minutes of debugging).


ok, now everything is set, just "pedump dump.exe", and go
the game should not crash, if we did it right.

Now, boot again in nt/w2k, make a quick tool that will scan dump.exe for "KERNEL32.DLL" (case sensitive)
where we find a PE import section. (a routine is presented below)

and fix the imports just before it...

---------------------------------------------
Now, all we need is our injected DLL, "am.dll"

the scope of this DLL is to check if the game tries to open itself, and present him with the
original exe if so :).

For this you could also use Yoda&#39;s HOKO. (great tool, too bad its for money)


This am.dll presented here is configurable, meaning am_hooks.dll will have 4x2 bytes containing the
addresses of LoadLibraryA and GetProcAddress in the game. Quick and DIRTY :

With this, move the original game xxxx.exe into xxxx.ex_, copy the dumped.exe as xxxx.exe,
compile & copy the am.dll into the game dir, fix the imports on the dumped.exe, edit am_hooks.bin
and enter the addresses of LoadLibraryA and GetProcAddress, and there you go, launch the exe
and it will go. No more AM.

If something goes wrong, you will have to figure out for yourself


---------------------------------------------------------------

// am.cpp : Defines the entry point for the DLL application.
//

#include


typedef HANDLE WINAPI _LoadLibraryA_t
(
LPCTSTR lpLibraryName
);


typedef HANDLE WINAPI _GetProcAddress_t
(
HMODULE hModule,
LPCTSTR lpFunctionName
);


typedef HANDLE WINAPI _CreateFile_t(
LPSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);

static char g_szGame[MAX_PATH + 1];
static long g_szGameLen = 0;
static char* g_szHooksPointersFile = "am_hooks.bin";


DWORD g_pfnCreateFile_ORIG = 0;
DWORD g_pfnLoadLibraryA_ORIG = 0;
DWORD g_pfnGetProcAddress_ORIG = 0;

DWORD g_bLoadingKernel32 = FALSE;


HANDLE WINAPI xCreateFile(LPSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
HANDLE WINAPI xLLA(LPCTSTR lpLibraryName);
HANDLE WINAPI xGPA(HMODULE hModule, LPCTSTR lpFunctionName);



void FixPointers()
{

DWORD dwDummy;
DWORD dwLLA = 0;
DWORD dwGPA = 0;


HANDLE hFile = CreateFile(g_szHooksPointersFile,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if (INVALID_HANDLE_VALUE &#33;= hFile)
{
ReadFile(hFile, &dwLLA, 4, &dwDummy, NULL);
ReadFile(hFile, &dwGPA, 4, &dwDummy, NULL);
CloseHandle(hFile);

*((DWORD*)dwLLA) = (DWORD)xLLA;
*((DWORD*)dwGPA) = (DWORD)xGPA;

}
}


BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{

switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:

// initialize the pointers
g_pfnCreateFile_ORIG = (DWORD)CreateFileA;
g_pfnLoadLibraryA_ORIG = (DWORD)LoadLibraryA;
g_pfnGetProcAddress_ORIG = (DWORD)GetProcAddress;
g_szGame[0] = &#39;&#092;0&#39;;

// Get self name
g_szGameLen = GetModuleFileName(GetModuleHandle(NULL), g_szGame, MAX_PATH);

// mark pointers in the game

FixPointers();
break;

case DLL_PROCESS_DETACH:
break;
}

return TRUE;
}


HANDLE WINAPI xLLA(LPCTSTR lpLibraryName)
{
long k, nLen;
for (k = nLen = 0; &#33;IsBadReadPtr(&lpLibraryName[k], 1) && lpLibraryName[k] &#33;= &#39;&#092;0&#39;; k++)
nLen++;

if (nLen == 12)
{
if (lpLibraryName[0] | 0x20 == &#39;k&#39; &&
lpLibraryName[1] | 0x20 == &#39;e&#39; &&
lpLibraryName[2] | 0x20 == &#39;r&#39; &&
lpLibraryName[3] | 0x20 == &#39;n&#39; &&
lpLibraryName[4] | 0x20 == &#39;e&#39; &&
lpLibraryName[5] | 0x20 == &#39;l&#39; &&
lpLibraryName[6] | 0x20 == &#39;3&#39; &&
lpLibraryName[7] | 0x20 == &#39;2&#39; &&
lpLibraryName[8] | 0x20 == &#39;.&#39; &&
lpLibraryName[9] | 0x20 == &#39;d&#39; &&
lpLibraryName[10] | 0x20 == &#39;l&#39; &&
lpLibraryName[11] | 0x20 == &#39;l&#39;)
{
g_bLoadingKernel32 = 1;
}
else
{
g_bLoadingKernel32 = 0;
}
}

_LoadLibraryA_t* pfnMyLoadLibraryA = (_LoadLibraryA_t*)g_pfnLoadLibraryA_ORIG;
return (*pfnMyLoadLibraryA)(lpLibraryName);

}

HANDLE WINAPI xGPA(HMODULE hModule, LPCTSTR lpFunctionName)
{
if (g_bLoadingKernel32)
{
long k, nLen;
for (k = nLen = 0; &#33;IsBadReadPtr(&lpFunctionName[k], 1) && lpFunctionName[k] &#33;= &#39;&#092;0&#39;; k++)
nLen++;

if (11 == nLen)
{
if ((lpFunctionName[0] | 0x20) == &#39;c&#39; &&
(lpFunctionName[1] | 0x20) == &#39;r&#39; &&
(lpFunctionName[2] | 0x20) == &#39;e&#39; &&
(lpFunctionName[3] | 0x20) == &#39;a&#39; &&
(lpFunctionName[4] | 0x20) == &#39;t&#39; &&
(lpFunctionName[5] | 0x20) == &#39;e&#39; &&
(lpFunctionName[6] | 0x20) == &#39;f&#39; &&
(lpFunctionName[7] | 0x20) == &#39;i&#39; &&
(lpFunctionName[8] | 0x20) == &#39;l&#39; &&
(lpFunctionName[9] | 0x20) == &#39;e&#39; &&
(lpFunctionName[10] | 0x20) == &#39;a&#39;)
{
return xCreateFile;
}
}
}

_GetProcAddress_t* pfnMyGetProcAddress = (_GetProcAddress_t*)g_pfnGetProcAddress_ORIG;
return (*pfnMyGetProcAddress)(hModule, lpFunctionName);
}


HANDLE WINAPI xCreateFile(LPSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{

if (IsBadReadPtr(lpFileName, 1))
return INVALID_HANDLE_VALUE;

long k, nLen;
for (k = nLen = 0; lpFileName[k] &#33;= &#39;&#092;0&#39;; k++)
nLen++;

if (g_szGameLen == nLen)
{
for (k = 0; k < nLen; k++)
{
if ((lpFileName[k] | 0x20) &#33;= (g_szGame[k] | 0x20))
break;
}

if (k == nLen)
{
lpFileName[k -1] = &#39;_&#39;;
}
}

_CreateFile_t* pfnMyCreateFile = (_CreateFile_t*)g_pfnCreateFile_ORIG;

return (*pfnMyCreateFile)(lpFileName,
dwDesiredAccess,
dwShareMode,
lpSecurityAttributes,
dwCreationDisposition,
dwFlagsAndAttributes,
hTemplateFile);
}
---------------------------------------------------------------


and the "optimised", DIRTY too, routine for fixing imports :


bool FixImports(char* pszFileName)
{
CString strOrigGame = CString(pszFileName);
char* szFileName = (LPSTR)(LPCSTR)strOrigGame;

HANDLE hFile = CreateFile(szFileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);

if (INVALID_HANDLE_VALUE == hFile)
{
return false;
}

DWORD dwDummy;
DWORD dwSize = GetFileSize(hFile, &dwDummy);


HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, dwSize, "__KRNL32OFFS_SCAN2");
if (&#33;hMap)
{
printf("CreateFileMapping failed&#092;n");
}


DWORD* pMapMem = (DWORD*)MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);
ULONG _bFound = 0;
ULONG _nOffset = 0;
if (pMapMem)
{
__asm
{
cld

mov _bFound, 0

mov ecx, dwSize
shr ecx, 2
mov edi, pMapMem

_loop:
mov eax, 0x4e52454b // &#39;KERN&#39;
repnz scasd
cmp ecx, 0
jnz _found1
jmp _notfound

_found1: cmp [edi], 0x32334c45 // &#39;EL32&#39;
jz _found2
jmp _notfound

_found2: cmp [edi + 4], 0x4c4c442e // &#39;.DLL&#39;
jnz _notfound

inc ecx
shl ecx, 2
mov eax, dwSize
and eax, 0xfffffffc
sub eax, ecx
mov _nOffset, eax
jmp _done

_notfound:
cmp ecx, 8
ja _loop

_done:
}

}
else
{
return false;
}

UnmapViewOfFile(pMapMem);


DWORD dwAddressOffset = _nOffset - 0x70;
CloseHandle(hMap);
CloseHandle(hFile);




char buff[512];
char libbuff[1024];
GetSystemDirectory(buff, 512);


DWORD a[24];
HINSTANCE h;
memset(a, 0, 24 * sizeof(DWORD));

a[0] = (DWORD)LoadLibrary;
a[1] = (DWORD)GetProcAddress;
a[2] = (DWORD)ExitProcess;

a[4] = (DWORD)RegCloseKey;

strcpy(libbuff, buff);
strcat(libbuff, "&#092;&#092;comdlg32.dll");
h = LoadLibrary(libbuff);
if (h)
{
a[6] = (DWORD)GetProcAddress(h, "PrintDlgA");;
FreeLibrary(h);
}

strcpy(libbuff, buff);
strcat(libbuff, "&#092;&#092;crypt32.dll");
h = LoadLibrary(libbuff);
if (h)
{
a[8] = (DWORD)GetProcAddress(h, "CertOpenStore");;
FreeLibrary(h);
}

a[10] = (DWORD)::DPtoLP;

strcpy(libbuff, buff);
strcat(libbuff, "&#092;&#092;netapi32.dll");
h = LoadLibrary(libbuff);
if (h)
{
a[12] = (DWORD)GetProcAddress(h, "Netbios");
FreeLibrary(h);
}
a[14] = (DWORD)CoInitialize;
a[16] = (DWORD)ExtractIconA;
a[18] = (DWORD)::GetDC;

strcpy(libbuff, buff);
strcat(libbuff, "&#092;&#092;wininet.dll");
h = LoadLibrary(libbuff);
if (h)
{
a[20] = (DWORD)GetProcAddress(h, "InternetOpenA");;
FreeLibrary(h);
}

strcpy(libbuff, buff);
strcat(libbuff, "&#092;&#092;winmm.dll");
h = LoadLibrary(libbuff);
if (h)
{
a[22] = (DWORD)GetProcAddress(h, "joyGetPos");;
FreeLibrary(h);
}


CFile f;
if (f.Open(strOrigGame, CFile::modeReadWrite))
{
f.Seek(dwAddressOffset, CFile::begin);
f.Write(a, 24 * sizeof(DWORD));
f.Close();
}
else
{
return false;
}


return true;
}

Ariel_001
12-12-2003, 04:27 AM
if someone here successfully unpacked kazaa can please host it somewere. I really want to edit out some of shareman crap. :D

infamousalbo101
12-12-2003, 04:56 AM
Yes It does help :)

Kunal
12-13-2003, 11:32 AM
C&#39;mon someone just send me the god dam file :) .

Ferasso/ RN, can you put it on some webpace for us please?

nettwister
12-17-2003, 07:12 PM
Originally posted by Ferasso@28 November 2003 - 16:54
Open kazaa.exe in hex editor, go to offset 12FACC, there you will find a byte BB, and change it to CC. Save and to into SICE and:
bpint 03
Run the file, Sice breaks.
e eip bb
bc*
bpmb 576E71 x
F5

Wait... sice breaks
a eip
jmp eip
nop
enter
F5

Go into lord PE, fully dump kazaa, then kill task.
Open it in PE editor, set the entry point to 176E71
Save. Open it in hex editor, find EBFE90 and replace with 558BEC. Done.
Unpacked succesfully with this trick, but I have fixed the import table with ImportREC. After that, the file didn&#39;t run successfully. But I&#39;m sure that ImportREC has fixed the hole import table, &#39;cos in the screen, there wasn&#39;t unresolved item in the import table list. Where did I make a mistake?

metheowner
12-17-2003, 08:19 PM
can&#39;t someone upload the unpacked file anywhere ... or atleast give a reason why no one is willing to do so .. :( i can&#39;t follow the instructions that are posted, coz softice doesn&#39;t run on windows server 2003 :( (btw .. neither does kazaa 2.6 .. tried it out on 4 different PCs runiing win2k3, and on all of them, kmd2.6 starts, an icon appears in the tray, and then it exits ... wrote to the sharman guys a couple of times already, but till now, there is no mention of any problem with win2k3 or a patch on their website)

Kunal
12-17-2003, 08:26 PM
Originally posted by metheowner@17 December 2003 - 21:19
tried it out on 4 different PCs runiing win2k3, and on all of them, kmd2.6 starts, an icon appears in the tray, and then it exits ... wrote to the sharman guys a couple of times already, but till now, there is no mention of any problem with win2k3 or a patch on their website)
Ok first off Windows 2003 is a server os, so i dont know what you are doing with it installed on a workstation&#33; i run kazaa #klchat build fine on win 2k3 server. Looks to me you dont know what your doing using win 2k3, go back to win xp, and it will work fine (sorry i didnt want to make you seem like a n00b, but i think i did ;) )

Explosive
12-17-2003, 08:48 PM
Originally posted by Kunal+17 December 2003 - 21:26--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Kunal @ 17 December 2003 - 21:26)</td></tr><tr><td id='QUOTE'> <!--QuoteBegin-metheowner@17 December 2003 - 21:19
tried it out on 4 different PCs runiing win2k3, and on all of them, kmd2.6 starts, an icon appears in the tray, and then it exits ... wrote to the sharman guys a couple of times already, but till now, there is no mention of any problem with win2k3 or a patch on their website)
Ok first off Windows 2003 is a server os, so i dont know what you are doing with it installed on a workstation&#33; i run kazaa #klchat build fine on win 2k3 server. Looks to me you dont know what your doing using win 2k3, go back to win xp, and it will work fine (sorry i didnt want to make you seem like a n00b, but i think i did ;) ) [/b][/quote]
sure u did&#33; hehe :D

nettwister
12-17-2003, 10:02 PM
Well, I can upload this file, but I bet it doesn&#39;t matter, &#39;cos I think the file has some checks about unpacking and some tricks about import table. I don&#39;t believe that unpacking this file is so easy.

Ferasso
12-20-2003, 01:05 AM
Hi, boys and girls, i&#39;m back. &#036;220 bucks for a 20 gb hd, and another &#036;40 bucks for a drive a: (broke with a kick). Besides the money and one month, not so bad...

nettwister, great work, following the steps and having the unpacked file. But i&#39;ve advised that the IAT would be messed.

I&#39;m downloading kmd 2.6 now, and i&#39;ll unpack it again, if the file is really really needed to be hosted somewhere, now it can be done (unless my pc melts again... :angry: ) but: it can&#39;t be run, BUT can be disassembled (for knowledge pourposes).

I also got klr source, and since i&#39;m on Win 98 i also want it to run. And that&#39;s what i&#39;ll try to do. I&#39;ll also try to understand if there&#39;s anything usefull regarding the unpacking, to have a perfectly unpacked file. I&#39;ll get back ASAP (with the unpacked file hosted somewhere). Bye.

todzuallen
12-20-2003, 01:42 AM
&#036;220 bucks for a 20 gig hd what currency? my 80 gig hd (serial ATA 150 8 MB Cache) was only &#036;120 Canadian like 5-6 months ago.

Ferasso
12-20-2003, 02:00 AM
Well, around US&#036; 70, then. How much is &#036;120 Canadian?

------
The file is unpacked, as I said, IAT is messed. Working on it. Contacted jakert50 about hosting, waiting his reply.

nettwister
12-20-2003, 02:25 AM
@Ferasso
Just a little help:
To bypass the "My ad&#39;s were removed, I won&#39;t run" dialog in kazaa, place a dummy cd_clint.dll file into you system folder (Win9x Windows/System, WinXP Windows/System32 folder). Not a null file, here is a dummy cd_clint.dll @ http://www.cexx.org/cd_clint.zip
Well, after that, Kazaa will show "Error about showing ad&#39;s" dialog. I&#39;ve searched this dialog in W32Dasm, there were two references about this string. And top of the strings, there were nice "jne"s :D

Ferasso
12-20-2003, 02:55 AM
Thanks for the help, nettwister. But something left...
1) The cd_clint.dll wasn&#39;t removed (i&#39;ve checked it and it was on /windows/system).
2) I&#39;ve seen no reference to this string.

Strange... could you give me the addresses? Thanks.

nettwister
12-20-2003, 01:47 PM
Sorry, I had written here about v2.52. I will check with WinME about kazaa 2.6 modules, so you can check the dll files in your windows.
Well, here are the modules (This is ImpRec Log):


Analysing process...
Module loaded: c:&#092;windows&#092;system&#092;browseui.dll
Module loaded: c:&#092;windows&#092;system&#092;imm32.dll
Module loaded: c:&#092;windows&#092;system&#092;msls31.dll
Module loaded: c:&#092;windows&#092;system&#092;mshtml.dll
Module loaded: c:&#092;program files&#092;vmware&#092;hook.dll
Module loaded: c:&#092;windows&#092;system&#092;mlang.dll
* No export for module: c:&#092;windows&#092;system&#092;shdoclc.dll
Module loaded: c:&#092;windows&#092;system&#092;shdocvw.dll
Module loaded: c:&#092;windows&#092;system&#092;rnr20.dll
Module loaded: c:&#092;windows&#092;system&#092;iphlpapi.dll
Module loaded: c:&#092;windows&#092;system&#092;dhcpcsvc.dll
Module loaded: c:&#092;windows&#092;system&#092;icmp.dll
Module loaded: c:&#092;windows&#092;system&#092;cd_clint.dll
Module loaded: c:&#092;windows&#092;system&#092;msafd.dll
Module loaded: c:&#092;windows&#092;inetmib1.dll
Module loaded: c:&#092;windows&#092;snmpapi.dll
Module loaded: c:&#092;windows&#092;system&#092;rsaenh.dll
Module loaded: c:&#092;program files&#092;kazaa&#092;topsearch.dll
Module loaded: c:&#092;windows&#092;system&#092;winmm.dll
Module loaded: c:&#092;windows&#092;system&#092;olepro32.dll
Module loaded: c:&#092;windows&#092;system&#092;oleaut32.dll
Module loaded: c:&#092;windows&#092;system&#092;oledlg.dll
Module loaded: c:&#092;windows&#092;system&#092;msvcrt20.dll
Module loaded: c:&#092;program files&#092;kazaa&#092;kzscan.dll
Module loaded: c:&#092;windows&#092;system&#092;urlmon.dll
Module loaded: c:&#092;program files&#092;kazaa&#092;bdcore.dll
Module loaded: c:&#092;windows&#092;system&#092;wininet.dll
Module loaded: c:&#092;windows&#092;system&#092;setupapi.dll
Module loaded: c:&#092;windows&#092;system&#092;wintrust.dll
Module loaded: c:&#092;windows&#092;system&#092;imagehlp.dll
Module loaded: c:&#092;windows&#092;system&#092;crypt32.dll
Module loaded: c:&#092;windows&#092;system&#092;msasn1.dll
Module loaded: c:&#092;windows&#092;system&#092;cfgmgr32.dll
Module loaded: c:&#092;windows&#092;system&#092;ntdll.dll
Module loaded: c:&#092;windows&#092;system&#092;cabinet.dll
Module loaded: c:&#092;windows&#092;system&#092;winspool.drv
Module loaded: c:&#092;windows&#092;system&#092;ole32.dll
Module loaded: c:&#092;windows&#092;system&#092;lz32.dll
Module loaded: c:&#092;windows&#092;system&#092;comdlg32.dll
Module loaded: c:&#092;windows&#092;system&#092;shell32.dll
Module loaded: c:&#092;windows&#092;system&#092;comctl32.dll
Module loaded: c:&#092;windows&#092;system&#092;version.dll
Module loaded: c:&#092;windows&#092;system&#092;shlwapi.dll
Module loaded: c:&#092;windows&#092;system&#092;wsock32.dll
Module loaded: c:&#092;windows&#092;system&#092;mswsock.dll
Module loaded: c:&#092;windows&#092;system&#092;ws2_32.dll
Module loaded: c:&#092;windows&#092;system&#092;rasapi32.dll
Module loaded: c:&#092;windows&#092;system&#092;secur32.dll
Module loaded: c:&#092;windows&#092;system&#092;svrapi.dll
Module loaded: c:&#092;windows&#092;system&#092;msnet32.dll
Module loaded: c:&#092;windows&#092;system&#092;mspwl32.dll
Module loaded: c:&#092;windows&#092;system&#092;tapi32.dll
Module loaded: c:&#092;windows&#092;system&#092;rpcrt4.dll
Module loaded: c:&#092;windows&#092;system&#092;netapi32.dll
Module loaded: c:&#092;windows&#092;system&#092;netbios.dll
Module loaded: c:&#092;windows&#092;system&#092;mpr.dll
Module loaded: c:&#092;windows&#092;system&#092;ws2help.dll
Module loaded: c:&#092;windows&#092;system&#092;msvcrt.dll
Module loaded: c:&#092;windows&#092;system&#092;user32.dll
Module loaded: c:&#092;windows&#092;system&#092;gdi32.dll
Module loaded: c:&#092;windows&#092;system&#092;advapi32.dll
Module loaded: c:&#092;windows&#092;system&#092;kernel32.dll
Getting associated modules done.
Image Base:00400000 Size:003A7000



Hope this helps.

RileyF
12-20-2003, 07:00 PM
well if you try to make klr compactable with 98 can you also add more features to it?? like load KL extensions&#33;&#33;&#33; and remove the adspace above each new search?? hope you can :D good luck&#33;

jakert50
12-20-2003, 08:16 PM
Hello all,
You can download the unpacked version here:

www.intrepidstudios.net/Kazaa26/Kazaa26Unpacked.rar (http://www.intrepidstudios.net/Kazaa26/Kazaa26Unpacked.rar)

Just remember that the import table is corrupted, it can&#39;t be run, but can be disassembled. We know you can&#39;t run it. Don&#39;t even post that it doesn&#39;t run, because we already know it doesn&#39;t&#33;&#33;
:lol: :P :D

Enjoy&#33;
~Jaker

jakert50
12-20-2003, 08:24 PM
And btw...

If you ever need to get more hardware, I highly recommend one of the following sites:

www.newegg.com (http://www.newegg.com)
www.pricewatch.com (http://www.pricewatch.com)
www.techdepot.com (http://www.techdepot.com)

B)

~Jaker

Kunal
12-21-2003, 01:01 PM
Errrmmmm, it doesnt load :blink: .............. jokes

Nice work guys, but you did have to unpack the beta version didnt you *sigh*

Ferasso
12-22-2003, 01:29 AM
Thanks for everything, people. But what does


but you did have to unpack the beta version didnt you

mean?

I&#39;ve downloaded the file 20/12?

Kunal
12-22-2003, 10:13 PM
Originally posted by Ferasso@22 December 2003 - 02:29

but you did have to unpack the beta version didnt you

mean?

I&#39;ve downloaded the file 20/12?
its just on some of the resource sections it says important BETA information

RileyF
12-29-2003, 04:07 PM
so guys, how far are you guys with fixing that error that is caused because the import table is corrupted?? just wondering how you&#39;re doing on this &#39;project&#39;, cause i believe that you guys can take the new 2.6 to a higher level if it&#39;s able to run.. :P serious work can be done once ready..

So will there be good news in the future??

jan ter hofte
01-20-2004, 09:17 PM
thank you verymuch for the unpacked exe from kazaa

jan ter hofte
01-20-2004, 09:34 PM
maybe you can make it work &#33;&#33;&#33;