Jump to content

unc4nny

Membros
  • Content Count

    24
  • Joined

  • Last visited

Community Reputation

6 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Putz vdd eu tinha esquecido completamente do tracing!!! Vlw mano vou usar isso aqui! :P Outra coisa, vc sabe se tem como colocar break points em todas as calls no x64dbg? Acho q eu vou fazer isso tamem
  2. Oi. Estou analisando um malware e consegui realizar o unpack do que eu imagino que seja o payload. Nao sei em quantas etapas o malware eh dividido pois esse foi o primeiro payload que eu conesgui extrair do malware ate agora. O payload eh um shellcode que foi copiado para um endereco de memoria que foi alocado utilizando o VirtualAlloc, depois eh somado 0x42b7 ao endereco base, e antes de retornar, esse endereco eh colocado na stack. Para fins de ilustracao: eax = VirtualAlloc() eax = copy(eax, shellcode) eax=eax+0x42b7 push eax ret Entao o endereco de
  3. Oi. Esse dias eu ouvi falar do banker trojan que vai pelo nome de IcedId. Saiu bastante noticias sobre ele na epoca e entao eu peguei uma sample e fui tentar brincar com ela. O malware aparentemente tem 2 stages de unpacking, o primeiro, depois de muito google-fu e leitura, eu consegui passar. Agora o segundo eu to com mais dificuldades. O primeiro estagio do unpacking me devolveu um arquivo PE, entao eu abri ele no PE estudio e um indicators diz o seguinte: 1525,The file contains another file,type: unknown, location: overlay, offset: 0x00019C00,1 Depois, eu fui dar u
  4. @Fernando Mercês usei a parada do message breakpoint, mto massa mano! Vou ver se acho um crackme em GUI pra tentar usar de novo, junto com o tracing :c. Valeuuuu!
  5. Ahhh po, faz sentido, por isso que o debugger tava caindo na user32.dll do nada mesmo dando step over, talvez ele interprete o callback como uma chamada de funcao no mesmo modulo? Dei uma lida aqui na documentacao das funcoes que estao sendo chamadas no inicio do codigo e acho que entendi o que ta acontecendo. Tambem vou dar uma lida nesse link que vc postou, parece bem interessante! Pior que eu cheguei a tentar fazer isso mas nao dava certo, eu acho que eh porque o codigo fica loopando na WinMain ate receber o input? Ou talvez eu estivesse fazendo errado (o mais provavel asuidasuih).
  6. Oi. Estou tentando utilizar um truque que foi mostrado na palestra Debugging Tricks na MBConf v1 (onde o cara mostra como fazer o tracing do programa), no crackme do cruehead utilizado pelo Fernando nas aulas do CERO, porem nao esta dando 100% certo; o que eu estou fazendo: Botao direito -> Trace Record -> Start Run Trace Depois vou em: Trace -> Trace Record -> Trace over into trace record E depois clico em Animate Over. Ele funciona inicialmente, o problema eh quando eu insiro as credenciais que o crackme pede, ao inves de continua
  7. Rapaz eu tava pra conseguir um projeto no NERDS com Magnos mas o coronga acabou com o esquema uiahsuiahsduias... Mas ele ta me ajudando bastante, ele eh brabo mesmo, manja muito e parece que ta sempre disposto a ajudar. Cara... isso seria incrivel!!! Esse semestre eu estaria entrando no setimo periodo (com ainda algumas materias de matematica pra tras kkk), nao sei oq vai acontecer pq a UFES suspendeu ensino a distancia, entao eh provavel que esse semestre va pro ralo. TOPPPP. Se for rolar mesmo eu com certeza estarei la!!! Eu tenho um amigo que esta es
  8. Maycon, eu estava lendo seu blog, e vi que vc falou que seu TCC foi focado em InfoSec. Eu faco C-Comp na UFES tambem e tambem queria que meu TCC fosse nessa area. Eu curto muito a parte de exploracao de binarios e tava pensando que talvez pudesse ser algo sobre isso, eu espero que eu aprenda mto mais coisa ate o final da facul para que eu possa expandir minhas opcoes kkkkk). Vc teria alguma dica mano?
  9. Cara, muito obrigado mil vezes!!! Depois que eu enviei a pergunta eu achei esse inline assembly e nao tava conseguindo fazer funcionar nem a pau. Ops, eh vdd, my bad. Cara mto obrigado!!
  10. Oi. No livro Practical Reverse Engineering, o autor mostra um trecho de codigo asm. Numa parte do codigo, tem a seguinte sequencia de instrucoes: Pesquisando eu vi que o sidt eh uma instrucao que carrega o Interrupt Descriptor Table no endereco especificado, e ele esta comparando para ver se o base address do IDT esta no range especificado no codigo (8003f400h-80047400h). Isso eh uma tecnica para ver se o programa esta rodando em maquina virtual. A duvida vem aqui: Na hora que o cara vai explicar (decompilar o codigo) ele faz da seguinte maneira: typedef struct _ID
  11. Cara, acho que entendi tudo o que voce disse (eu espero haha), explicou muito bem. O que realmente me bugou foi o uso do edi como acesso ao indice do vetor, eh isso mesmo que ta acontecendo? Pq eu achava que o acesso nesses segmentos era feito por SEGMENTO:OFFSET, ai esse [ edi * 4 ] me bugou muito, pq que o asm esta usando essa sintaxe? Na minha cabeca seria assim: ds:[0x100011a + edi * 4] <- isso faz sentido? Eh a primeira vez que eu vejo essa sintaxe. Mto obrigado mano vc eh brabissimo
  12. Oi. Estou lendo o livro practical reverse engineering, e nele, o autor fala sobre otimizacao de switch-case statements usando jump tables. Aqui esta o Assembly e a representacao em Pseudo-C do autor: Eu realmente nao to entendendo muito bem o que esta acontecendo: O que a linha 03 no codigo ASM quer dizer? No sentido em que, eu acho que entendo mais ou menos o que "ds:offset" significa mas nao entendi o motivo/significado desse [edi*4], principalmente comparando com a linha 01. Se nela o codigo compara edi com 5, como que ele esta usando o operador de acesso a me
  13. Faz sentido mano. Deu pra dar uma esclarecida agora, brigadao cara
  14. Opa, foi mal.Minha duvida eh, como que funciona o casting da funcao para uma string? Isso parece meio esoterico, pelo menos na minha cabeca ashduiahsduih
  15. Oi. Me pediram pra formular minha duvida melhor no video que o Fernando fez de CRC. Bixo, eu achava que entendia de C, mas o jeito que esse CRC funciona me bugou um pouquinho. Depois de pensar um pouco eu ate consigo ver oq esta acontecendo, mas eu nao sei se eh isso que esta acontecendo bool checa(char *nome, int serial) { int serial_correto = 0; while (*nome) serial_correto += *nome++; return (serial == serial_correto); } int main(void) { char nome[50]; int serial; uint32_t crc = crc32((unsigned char *)checa, 63); O unico jeito que eu vejo de isso funcionar d
×
×
  • Create New...