Título: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: Karcrack en 3 Marzo 2010, 17:46 pm Bueno, supongo que algunos se habran dado cuenta que en W7 algunos CallAPI no funcionan... Eso es porque el W7 pone primero NTDLL antes que KERNEL32 en los modules cargados (Peb->InInitOrder[0]->BaseAddress != &KERNEL32 ::) :xD)... Es por eso que he programado (Basandome en otros) este shellcode que saca el BaseAddress de K32 en cualquier W$ NT aqui tenies el codigo:
Código: http://karcrack.pastebin.com/TWmj5G5c Y bueno, para solucionar el problema en los codigos que utilizan un pequeño shellcode para sacar el BaseAddres basta con reemplazar la constante THUNK_KERNELBASE por estos OPCODES: Código: 8B4C2408565531C0648B70308B760C8B761C8B6E088B7E208B3638471875F3803F6B7407803F4B7402EBE789295D5EC3 Saludos :D Originalmente posteado (En Ingles): Código: http://www.advancevb.com.ar/?p=499 Título: Re: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: el_c0c0 en 4 Marzo 2010, 22:16 pm Bueno, supongo que algunos se habran dado cuenta que en W7 algunos CallAPI no funcionan... Eso es porque el W7 pone primero NTDLL antes que KERNEL32 en los modules cargados (Peb->InInitOrder[0]->BaseAddress != &KERNEL32 ::) :xD)... Es por eso que he programado (Basandome en otros) este shellcode que saca el BaseAddress de K32 en cualquier W$ NT aqui tenies el codigo: uf perfecto! yo no uso esos codigos, pero siempre que me pasaban alguno, no funcionaba en W7 y tenia que recurrir a la querida PC virtual. Código: http://karcrack.pastebin.com/TWmj5G5c Y bueno, para solucionar el problema en los codigos que utilizan un pequeño shellcode para sacar el BaseAddres basta con reemplazar la constante THUNK_KERNELBASE por estos OPCODES: Código: 8B4C2408565531C0648B70308B760C8B761C8B6E088B7E208B3638471875F3803F6B7407803F4B7402EBE789295D5EC3 Saludos :D Originalmente posteado (En Ingles): Código: http://www.advancevb.com.ar/?p=499 ahora yo pregunto (para boludear), ese opcode que pusiste, si lo llamo con CallWindowProc, me devuelve el base address asi nomas no? es un poco engañoso el tema de comparar la primera letra nomas, pero dudo que se cargue otra DLL que empieze con K antes que el k32 o el ntdll en fin, perfecto, saludos Título: Re: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: Karcrack en 4 Marzo 2010, 22:28 pm uf perfecto! yo no uso esos codigos, pero siempre que me pasaban alguno, no funcionaba en W7 y tenia que recurrir a la querida PC virtual. Si llamas a esa ShellCode con CallWindowProc este devolvera 0, tienes que pasarle el puntero a un buffer (LONG) donde recibirás el Address en [ESP+8] (2ndo parametro)... Seria algo asi:ahora yo pregunto (para boludear), ese opcode que pusiste, si lo llamo con CallWindowProc, me devuelve el base address asi nomas no? es un poco engañoso el tema de comparar la primera letra nomas, pero dudo que se cargue otra DLL que empieze con K antes que el k32 o el ntdll en fin, perfecto, saludos Código: CallWindowProc VarPtr(bvCode(0)),byval 0&, byval varptr(lBuffer),byval 0&, byval 0& Y no solo compara que el modulo cargado empiece por 'K'/'k' sino que mida tambien 12 caracteres (UNICODE)(24bytes)... osea que sea "KERNEL32.DLL" Título: Re: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: el_c0c0 en 4 Marzo 2010, 22:31 pm uf perfecto! yo no uso esos codigos, pero siempre que me pasaban alguno, no funcionaba en W7 y tenia que recurrir a la querida PC virtual. Si llamas a esa ShellCode con CallWindowProc este devolvera 0, tienes que pasarle el puntero a un buffer (LONG) donde recibirás el Address en [ESP+8] (2ndo parametro)... Seria algo asi:ahora yo pregunto (para boludear), ese opcode que pusiste, si lo llamo con CallWindowProc, me devuelve el base address asi nomas no? es un poco engañoso el tema de comparar la primera letra nomas, pero dudo que se cargue otra DLL que empieze con K antes que el k32 o el ntdll en fin, perfecto, saludos Código: CallWindowProc VarPtr(bvCode(0)),byval 0&, byval varptr(lBuffer),byval 0&, byval 0& Y no solo compara que el modulo cargado empiece por 'K'/'k' sino que mida tambien 12 caracteres (UNICODE)(24bytes)... osea que sea "KERNEL32.DLL" saludos! Título: Re: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: LeandroA en 10 Marzo 2010, 16:25 pm Karcrak como aplicaria esto a CallApiByName
Código: Function CallApiByName(ByVal sLib As String, ByVal sMod As String, ParamArray Params()) As Long Saludos. Título: Re: [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} Publicado por: cobein en 10 Marzo 2010, 19:29 pm Lean, eso es para parchar las versiones que usan copymemory, las que estan en clases. Tenes que cambiar el thunk que esta como constante para arreglar el problema con el shellcode del kernel base
|