{"id":66,"date":"2022-12-11T20:52:14","date_gmt":"2022-12-11T23:52:14","guid":{"rendered":"https:\/\/criptografarphp.com.br\/site\/ofuscacao-de-codigo-js\/"},"modified":"2023-03-30T16:37:47","modified_gmt":"2023-03-30T19:37:47","slug":"ofuscacao-de-codigo-js","status":"publish","type":"post","link":"https:\/\/www.criptografarphp.com.br\/site\/ofuscacao-de-codigo-js\/","title":{"rendered":"Ofusca\u00e7\u00e3o de c\u00f3digo JS"},"content":{"rendered":"\n<p>Quando deve ser usado? Quando realmente n\u00e3o queremos que outros roubem ou usem nosso c\u00f3digo. Quando n\u00e3o&#8230;<br \/>\n<iframe src=\"https:\/\/www.youtube.com\/embed\/MMqQEyktGRs\" width=\"580\" height=\"385\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><br \/>\n00:13:05<br \/>\nQuando deve ser usado? Quando realmente n\u00e3o queremos que outros roubem ou usem nosso c\u00f3digo. Quando n\u00e3o&#8230;<\/p>\n<p>Ol\u00e1 amigos de lerdos eu sou eric hoje cedo vamos apresentar uma maneira muito f\u00e1cil de procurar o c\u00f3digo em javascript que coisa vamos usar vamos usar um terminal do sistema um navegador web com suas ferramentas do google um editor de c\u00f3digo ou a sua vida de prefer\u00eancia e ter not e \u00e9 instalado para ser capaz de trabalhar com ele este procedimento apresenta vantagens e desvantagens vai depender do que precisamos especificamente e devemos estar cientes do que envolve o uso desta t\u00e9cnica quando voc\u00ea deve us\u00e1-lo quando voc\u00ea realmente n\u00e3o quer roubar ou usar o nosso c\u00f3digo tamb\u00e9m quando n\u00e3o queremos que ele seja descoberto de forma que ele funciona no mesmo ou quando a seguran\u00e7a do nosso aplicativo \u00e9 prioridade mesmo sobre o desempenho do mesmo aplicativo para esta demonstra\u00e7\u00e3o vamos usar a biblioteca js chamada leva escrito assinante que est\u00e1 dispon\u00edvel em &#8216; Y e com na descri\u00e7\u00e3o do v\u00eddeo eu vou estar deixando os links vamos para ele aqui temos o navegador eu vou para o in\u00edcio da p\u00e1gina aqui est\u00e1 n\u00f3s vemos que est\u00e1 dispon\u00edvel tanto para ela como para n PM vamos instalar ent\u00e3o vamos para o terminal vamos instal\u00e1-lo com n PM instala vou coloc\u00e1-lo com o argumento g para que ele esteja em um n\u00edvel global e possa invoc\u00e1-lo como um comando e pronto enter para procurar as depend\u00eancias e vamos instal\u00e1-lo em nosso dispositivo demonstrando segundo e pronto j\u00e1 o temos instalado vamos ver o que acontece se a chave vamos no terminal, pois n\u00e3o sai a ajuda os par\u00e2metros ou op\u00e7\u00f5es que podem ser passados como argumentos, bem como o que \u00e9 cada um depende do que queremos fazer podemos usar alguns ou a combina\u00e7\u00e3o de v\u00e1rios ok vamos ver como isso funciona vou correr nosso servidor de prefer\u00eancia o simple exit e seu servidor e titus server que vimos em exemplos anteriores funciona muito bem \u00e9 muito leve e at\u00e9 j\u00e1 vem habilitado o protocolo https vamos ao navegador aqui J\u00e1 tenho localhost na porta 5000 que \u00e9 o que levanta por default vamos abri-lo e pronto temos um exemplo simples que preparamos at\u00e9 mesmo o usamos em um v\u00eddeo anterior \u00e9 a sucess\u00e3o de fibonacci javascript nos imprime os primeiros 10 d\u00edgitos ou os primeiros 10 n\u00fameros desta associa\u00e7\u00e3o em nossas ferramentas o navegador podemos ver o arquivo que estamos usando se Bonacci js e podemos ver no c\u00f3digo que nos permite obter esta Esta s\u00e9rie num\u00e9rica que \u00e9 o que vamos fazer agora e vamos correr a partir da linha de comando o JavaScript ofuscado com alguns de seus par\u00e2metros para ver o que \u00e9 o que vai fazer ao nosso c\u00f3digo agora podemos v\u00ea-lo leg\u00edvel poder\u00edamos at\u00e9 mesmo divulg\u00e1-lo se eu colocasse aqui um corpo jmg e recarregou o site aqui eu tenho eu posso ir vendo passo a passo como ele vai funcionar eu poderia at\u00e9 tomar este c\u00f3digo us\u00e1-lo como refer\u00eancia etcetera n\u00e3o o que vamos ver agora \u00e9 esta t\u00e9cnica que se algu\u00e9m n\u00e3o tem o nosso c\u00f3digo fonte que \u00e9 muito complicado n\u00e3o devemos levar em conta algo muito importante deve saber que esta opera\u00e7\u00e3o \u00e9 quase imposs\u00edvel de reverter por isso \u00e9 super importante para manter uma c\u00f3pia do c\u00f3digo fonte original e disse o acima vimos para o nosso terminal eu tenho o servidor onseb vamos limp\u00e1-lo e vamos cham\u00e1-lo em sua sintaxe \u00e9 e voc\u00ea v\u00ea que subscrito e, em seguida, devemos colocar o nosso arquivo de entrada neste caso \u00e9 chamado fibonacci js nos pede para colocar as op\u00e7\u00f5es que podemos o nome da sa\u00edda que queremos colocar e eu ligue t\u00e3o bom ponto efe skate ponto tai shen lan\u00e7\u00e1-lo e pronto n\u00e3o nos diz que ela \u00e9 o arquivo criado vamos lan\u00e7\u00e1-lo novamente, mas desta vez vamos passar-lhe um par\u00e2metro que \u00e9 amor para ver o que ele faz n\u00e3o, em seguida, j\u00e1 nos d\u00e1 mais informa\u00e7\u00f5es no terminal onde podemos ver as op\u00e7\u00f5es por padr\u00e3o que j\u00e1 est\u00e3o inclu\u00eddos quando mandamos cham\u00e1-los diretamente com nada mais um arquivo de entrada e bem aqui \u00e9 que dever\u00edamos ter tido como resultado o arquivo Simonazzi efe js vamos ao nosso v\u00eddeo para ver se isso \u00e9 verdade aqui apreciar n\u00f3s substituiu o nosso c\u00f3digo original ou essas sequ\u00eancias um pouco estranhas \u00e9 muito dif\u00edcil de ler aqui vamos passar o navegador eu tenho que iniciar novamente o mediador onseb eu vou fechar esta parte no arquivo no index e.html estou re nomeando o arquivo js para que possamos carregado para a vers\u00e3o ou fiscal e bem aqui j\u00e1 temos o fibonacci ponto F js aqui v\u00e1rias ferramentas dos navegadores atuais trazem inclu\u00eddo um uma op\u00e7\u00e3o para tornar mais leg\u00edvel o c\u00f3digo unificado de tal forma que podemos ver aqui como este como foi o resultado da opera\u00e7\u00e3o que fizemos \u00e9 dif\u00edcil de ler, mas ainda assim poder\u00edamos de governo para ver o que est\u00e1 acontecendo podemos ver algumas instru\u00e7\u00f5es-chave por exemplo aqui lidar com o do como como o que \u00e9 o leitor com um pouco de paci\u00eancia poder\u00edamos extrair a sua funcionalidade at\u00e9 mesmo injetar alguns elementos para mudar o seu funcionamento e reutiliz\u00e1 &#8211; lo em um projeto diferente vamos agora explorar algumas das outras op\u00e7\u00f5es que eles t\u00eam para que possamos ver que tamb\u00e9m podemos torn\u00e1-lo totalmente ileg\u00edvel e n\u00e3o s\u00f3 isso tamb\u00e9m poder\u00edamos torn\u00e1-lo que n\u00e3o podemos usar o navegador do Google algumas fun\u00e7\u00f5es que podemos encontrar na documenta\u00e7\u00e3o aqui podemos ver que estamos mandando chamar que nos imprime o log que o compacte que habilite a rota\u00e7\u00e3o de cadeias o renomeamento das propriedades a separa\u00e7\u00e3o das cadeias o manuseio de matrizes de cadeias e isto \u00e9 muito importante estamos pedindo que todos os streams n\u00e3o os codifique usando rc4 isto vai ser que j\u00e1 n\u00e3o possamos encontrar strings claras como vimos o documento que \u00e9 eleitor etcetera e vamos desabilitar a sa\u00edda do terminal isto vai ser que n\u00e3o possamos ver as chamadas ou as sa\u00eddas dos con solo com software com apenas erro que estamos usando de tal forma que quem est\u00e1 navegando e quer realizar o que \u00e9 esse c\u00f3digo tem menos faixas e bom nosso arquivo vai ser chamado assim como vamos execut\u00e1-lo terminou esta fun\u00e7\u00e3o \u00e9 super r\u00e1pido vamos agora \u00e9 o nosso navegador em nosso servidor e vamos para o navegador ok vamos recarregar [M\u00fasica] a p\u00e1gina como podemos ver o funcionamento ainda est\u00e1 correto o resultado \u00e9 o mesmo mas agora eu vou dar igual melhorar a vis\u00e3o para o formato podemos ver que \u00e9 ainda mais complicado ler \u00e9 n\u00e3o \u00e9 super dif\u00edcil levaria v\u00e1rios dias apenas para ter uma id\u00e9ia do que ele faz e como voc\u00ea pode ver o c\u00f3digo original j\u00e1 muito simples imagine com algo muito maior e complicado isso j\u00e1 \u00e9 quase imposs\u00edvel reverter agora o que vamos fazer para terminar de proteger nosso c\u00f3digo de forma otimizada vamos para o nosso terminal eu vou ter o servidor e vamos adicionar uma op\u00e7\u00e3o que \u00e9 chamada hoje vamos rever o s\u00e3o chamados de prote\u00e7\u00e3o coruja vamos habilitar o controle de prote\u00e7\u00e3o vamos gerar novamente para o servidor e vamos para o navegador guia e colocar a aten\u00e7\u00e3o embora algo algo n\u00e3o correu muito bem n\u00e3o \u00e9 o resultado esperado vamos voltar para o terminal e ver o que escrevemos errado que podemos ver aqui est\u00e1 e colocar um errado isso n\u00f3s escrevemos onde n\u00e3o estava pronto agora sim estamos colocando que a nossa s\u00e9rie n\u00e3o importa o mesmo arquivo assinatura Chip ponto F js mas com a e prote\u00e7\u00e3o anti estreia de nova conta corremos nosso servidor passamos para o navegador recarregamos e pronto como podemos ver o fluxo ou a execu\u00e7\u00e3o de nosso aplicativo est\u00e1 parado de tal forma que se eu quiser continuar Loki ele est\u00e1 se enchendo aqui de guias e nenhum deles me permite ver o c\u00f3digo-fonte desta forma j\u00e1 temos em nosso c\u00f3digo protegido de uma forma bastante forte n\u00e3o se esque\u00e7a que isso \u00e9 muito bom para o desempenho e espero que seja \u00fatil Isso \u00e9 algo que nos perguntam de forma recorrente e voc\u00ea pode ter as vantagens que j\u00e1 mencionamos, mas n\u00e3o se esque\u00e7a de todas as implica\u00e7\u00f5es que tem nos vemos na pr\u00f3xima [M\u00fasica]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando deve ser usado? Quando realmente n\u00e3o queremos que outros roubem ou usem nosso c\u00f3digo. Quando n\u00e3o&#8230; 00:13:05 Quando deve ser usado? Quando realmente&#8230;<\/p>\n","protected":false},"author":1,"featured_media":67,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,2],"tags":[47,74,65,64,63],"acf":[],"_links":{"self":[{"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/posts\/66"}],"collection":[{"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":2,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"predecessor-version":[{"id":303,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/posts\/66\/revisions\/303"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/media\/67"}],"wp:attachment":[{"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.criptografarphp.com.br\/site\/wp-json\/wp\/v2\/tags?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}