Jump to content

Pimptech

Members
  • Posts

    65
  • Joined

  • Last visited

  • Days Won

    18

Pimptech last won the day on May 20 2022

Pimptech had the most liked content!

1 Follower

Recent Profile Visitors

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

Pimptech's Achievements

39

Reputation

  1. Olá, Brenda. Td bem ? Você chegou a rodar o código que eu enviei no post anterior ? Esse trecho aqui: for(int o=0;o<quantidadeMaximaBolo;o++){ if(strcmp(bolos[o].nome, nomedobolo)){ printf("\n-------Encontrado-------\nSeu bolo.. foi encontrado. posição %i. %s \n\n", o, bolos[o].nome); //bolos[0].nome e etc... break; } } Faz uma iteração pelo vector de bolos. Se você remover o if você vai conseguir iterar por todos os bolos cadastrados. E para receber código é a mesma coisa. Acertar os lugares que você grava isso na estrutura e depois alterar essa parte. // bolos[posicaoBolo].nome printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0: ", nomedobolo); scanf(" %s[^\n]", nomedobolo); Essa parte recebe o código.. e pode usar o if de cima para compara com o código e não com o nome. Eu acho que esse exemplo que eu te enviei tem a maneira como você pode fazer tudo. ?
  2. Compilou com GCC normal, nenhuma flag especial ? Achei uma string bem peculiar nele.. "ZN6Loader" E outras junções com esse "sufixo"..
  3. Tu packou com alguma coisa ? Usou algum programa terceiro para obfuscar ? Coisa do tipo ?
  4. Pimptech

    Vetor em C

    @LauraC Existe duas coisas que você pode fazer nesse caso, levando em consideração esse código mais simples. Pelo enunciado tá faltando coisa. Ele pede pra você pedir as notas ao usuário enquanto ele não digitar um número negativo. Nesse caso pode usar o do-while. pra ficar repetindo enquanto o valor digitado é positivo. Faltou no seu código iterar com um loop-for as notas. Você pode utilizar uma variavel de controle nesse caso, um CHAR resolve. Veja se entende o exemplo abaixo, qualquer coisa pode perguntar. float valor; char controle = 'f'; do { scanf(valor); controle = 'f'; for (int i=0; i<20; i++){ if(nota[i]==valor){ printf("existe"); controle = 'v'; break; } } if (controle=='f'){ printf("não existe"); } } while(valor > 0);
  5. Olá, Brenda. Tudo bem ? Bom, pelo que eu entendi, você quer pesquisar seu bolo pelo código, certo ? Como não especificou qual tipo de código então entendo que ele é somente string, ainda mais pelo tipo que você colocou na struct. Portanto só tem uma maneira de fazer isso que é iterar pelo seu vetor de bolos. Bolo_t bolos[quantidadeMaximaBolo]; Tem várias maneiras de fazer isso. Eu faria uma inicialização do vetor de Bolo_t. Assim vc poderia iterar e checar essa opção. Ou você pode manter desse jeito ai mesmo e só checar se o .nome é vazio. E para isso você pode adicionar a header. <string.h>, fica mais fácil de mexer nas strings com as funções respectivas. Eu fiz algumas modificações no seu código. mas no geral seria isso. Primeiro limpo o nomebolo para buscar por ele, depois comparo com as funções de string para ver se não tá vazio ou é 0. Depois faço um loop-for para iterar pelo seu vector de Bolo_t. O nome sendo igual ao digitado eu paro o loop-for e mostro o resultado. //cleaning nomedobolo nomedobolo[0] = '\0'; do { // bolos[posicaoBolo].nome printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0: ", nomedobolo); scanf(" %s[^\n]", nomedobolo); if(strcmp(nomedobolo, "0") == 0 || strlen(nomedobolo) <= 0){ printf("skipping. %s", nomedobolo); break; } for(int o=0;o<quantidadeMaximaBolo;o++){ if(strcmp(bolos[o].nome, nomedobolo)){ printf("\n-------Encontrado-------\nSeu bolo.. foi encontrado. posição %i. %s \n\n", o, bolos[o].nome); //bolos[0].nome e etc... break; } } } while (1); Caso alguma coisa não tenha ficado clara só falar. Abs!
  6. Olá nobres colegas! Como estão ? Eu estou tendo uma certa dificuldade e nooberismo na tentativa de achar como solucionar esse infortúnio problema. Estou "modernizando" um programa (projeto) que foi inicialmente feito em VC6. Não precisei fazer MUITAS modificações para conseguir compilar com VS2019, mas fiz algumas. Consegui compilar e tudo mais. Porém, tem alguns poréns. Tem algumas LIBs que não possuo source code. Assim como sua respectiva DLL. De fato linkage é uma coisa bem chata. ? Se alguém tiver alguma indicação de documento bem explicado sobre como o VC++ linka .LIB x .DLL, e qual o principal motivo de ter que ser a mesma .DLL dá .LIB. Fiz alguns testes com esse programa e ele simplesmente não funciona sem algumas DLLs (outdated-antigas do VC6). Por exemplo não funciona com msvcirt.dll versão do Windows 10. Não fiz uma análise muito aprofundada ainda, meu foco incial é fazer ele rodar totalmente para depois ir mexendo, atualizando e reescrevendo códigos. O programa dá erro de HEAP CORRUPTION, porém só em modo normal Windows10. Em compatibilidade com Windows 8, ou seja usando SysWOW64, ele funciona normalmente (até onde eu testei, sem heap corruption). Aqui ele tá dando corruption (ALETORIAMENTE) em "::operator new" e até MALLOC. Estava tentando debugar pra ver onde o erro ocorre. Tive problemas em debugar via x64dbg, mesmo conseguindo reverter, ainda sim é bem chato na hora de debugar multithreading. O erro acontece no RtlEnterCriticalSection, não sei ainda o motivo. Não consegui chegar em uma conclusão definitiva. Não achei documentação dessa "API", para entender todos os trâmites envolvidos no HeapAlloc e seus derivados (principalmente ntdll), para resolver esse problema em específico. Aceito fontes, dicas e sugestões. :] Em Windows 10 o heap corruption não acontece nas primeiras vezes, depois de 2 - 5 vezes ele começa a dar corruption com mais consistência. O programa tem muito código. Muito mesmo. Então não sei se pode ser lixo de memória que ficou para trás (deletes mal feitos ou não feitos), mas isso quer dizer que o windows usaria o mesmo espaço de memória para fazer o LOAD do PE, o que não me parece algo que ele faça (mas támbém não sou PRO, então não posso afirmar), se alguém souber me dá um help aê :]. Claro que isso é um dos problemas que estou tento com esse programa. Contudo fiquei bem confuso em entender por qual motivo esse problema acontece, e qual motivo ele não acontece na compatibilidade Windows 8, afinal foi compilado no Windows 10 usando VS2019. Na hora de entrar no malloc ele usa ucrtbased.dll.. Ou seja, tá tudo atualizado. Não é uma coisa complexa, é um HeapAlloc... E o erro acontece na inicialização dele e de suas variáveis de ambiente, criando coisas, não é um problema que acontece depois de um tempo rodando. Edit ------------------------ Aproveitar o tópico. Se alguém souber o que pode fazer o mouse e keyboard ficar lento durante o debugging. Esse programa usa Direct Input. Quando começo a debugar via Visual Studio e fico clicando fora da criação do Window, ele funciona normal. Se eu inicio o debug e espero ele criar a janela e HITAR o breakpoint o mouse ficar travando, assim como o keyboard. Bom se alguém for bom em vc++ e puder me ajudar, ficarei grato. Abs!
  7. É uma situação complicado, mas que com certeza precisa ser revista. Antes que a moda pegue hehe.
  8. É uma situação complicado, mas que com certeza precisa ser revista. Antes que a moda pegue hehe.
  9. É uma situação complicada mesmo. Github é uma ferramenta MUITO mão na roda. As possibilidade de coisa que pode ser usado é grande. Acho que deviam começar bloqueando .exe... ou pelo menos não sendo baixado via comando, assim o usuário teria que ir ao site e digitar um captcha, por exemplo. Acho que isso já evitaria um monte de coisa hahaa... Enfim, realmente é um desafio grande. Saber programar é uma coisa muito boa, tem gente que usa pro bem e tem os zémané. Fico com dó da galera que não tem esse conhecimento para navegar com segurança. Não que nós estejamos, né hahah. Pq por mais seguro que queremos estar sempre tem um mini-einstein programando pro mal. Vamos ajudando como podemos, né. Abs!
  10. É uma situação complicada mesmo. Github é uma ferramenta MUITO mão na roda. As possibilidade de coisa que pode ser usado é grande. Acho que deviam começar bloqueando .exe... ou pelo menos não sendo baixado via comando, assim o usuário teria que ir ao site e digitar um captcha, por exemplo. Acho que isso já evitaria um monte de coisa hahaa... Enfim, realmente é um desafio grande. Saber programar é uma coisa muito boa, tem gente que usa pro bem e tem os zémané. Fico com dó da galera que não tem esse conhecimento para navegar com segurança. Não que nós estejamos, né hahah. Pq por mais seguro que queremos estar sempre tem um mini-einstein programando pro mal. Vamos ajudando como podemos, né. Abs!
  11. Realmente, muito subjetivo mesmo, não tem bem como medir haha.. Valeu! Vou lançar mais alguns em breve, tentar adicionar coisas novas em cada novo crackme. Tentar trazer a galera pra fazer CTF, Abraço!
  12. Mais um crackme! Esse não tá simples, mas também não tá difícil. Coloquei level x, pois não sei bem qual o "level" hahah... Se acharem difícil, vou dosando os demais crackmes. Tá na mesma pegada do level 0. Foi compilado com o GCC(by MinGW) ainda.. Então lembre-se que o código em si começa sempre de um determinado address, mesma coisa do level0. O objetivo é achar a FLAG. flag{... Quando alguém quebrar eu posto o source. crackme_levelx.exe
×
×
  • Create New...