Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Delphi]Optimizando códigos já compilados


AceStryker
 Compartilhar

Posts Recomendados

Introdução

Olá a todos vocês!Andei um tempo sem aparecer, sabe faculdade e tal...Complicado.Mas enfim, fiz esse tópico porque já da uma iniciada para quem quer aprender a criar debuggers, packers e outros tipos de programas...Este tutorial ensina a você como deixar os códigos de uma aplicação menores, vou lhe mostrar a teoria.

PS:Peguei a função do LostShadow de como mudar o entrypoint e mudei para só ler, então não precisam postar que a função é dele

 

Teoria

Muito raros os compiladores que fazem esse tipo de optimização, por isso se quiser criar seu packer vai fazer sucesso :)

Vou ver se você consegue descobrir sozinho, aqui esta um exemplo desta optimização:

De:

É necessário se cadastrar para acessar o conteúdo.

 

Para:

É necessário se cadastrar para acessar o conteúdo.

 

Se não perceberam deixa eu desenhar aqui kk...Todos sabem que as duas funções zeram EAX, mas o que importa aqui é os bytes, veja que o mov gasta 1 byte para o opcode principal(B8 é o opcode de MOV EAX) e outros 4 com o valor a ser colocado, mas se for zero como é o caso ele vai gastar estes 4 bytes colocando 0's.Já o xor, gasta apenas 2 bytes com tudo isso, logo, se colocarmos o mov, o programa terá 3 bytes a mais do que se colocarmos o xor, pode parecer pouco mas em grande escala tem grande diferença...Outra coisa que faz o xor ser melhor que o mov é que o processador só usa 1 clock cycle no xor e no mov usa 2 ou mais...

 

Outros exemplos(Só por curiosidade) são :

 

De:

É necessário se cadastrar para acessar o conteúdo.

Para:

É necessário se cadastrar para acessar o conteúdo.

 

De:

É necessário se cadastrar para acessar o conteúdo.

Para:

É necessário se cadastrar para acessar o conteúdo.

 

De:

É necessário se cadastrar para acessar o conteúdo.

 

Para:

É necessário se cadastrar para acessar o conteúdo.

 

De:

É necessário se cadastrar para acessar o conteúdo.

Para:

É necessário se cadastrar para acessar o conteúdo.

 

Prática

Mas agora, como fazer com que seu programa troque de um para o outro?Bom, veja este meu exemplo:

 

Primeiro pegamos o EntryPoint real do programa (Base***ress + RVA de Entrada) para sabermos onde a seção começa:

É necessário se cadastrar para acessar o conteúdo.

 

Isso deve resolver, agora precisamos ler todo o resto e procurar os mov's eax, 0 e mudar para xor eax, eax...Vamos ver no que da ;)

 

É necessário se cadastrar para acessar o conteúdo.

Pronto, modificamos uns bytes ai :), agora se quiser diminuir fisicamente o tamanho do arquivo, sugiro que tente mudar os locais das seções depois da .code e depois usar um SetEndOfFile() ;)

 

Vocês que queriam saber como um debugger serve deu para perceber né?Só mexer nos bytes...

 

Abração!

AceStryker

Link para o comentário
Compartilhar em outros sites

Tua assinatura já diz o que eu penso a respeito do teu tópico aqui (:

 

Bom tópico, vou pegar uns minutos pra fazer tal feito na prática pra entender melhor, embora já entenda que o resultado seja uma aplicação menor

Meus brinquedos em WinAPI:

Calculador

MemoryScanner

Faça parte também da DarkProgramming Team!

Link para o comentário
Compartilhar em outros sites

Cara muito bom tuto....Apesar de nao ''manjar'' muito mexer em debuggers , deu pra intender a maior parte......

 

obs.: eu disso que nao ''manjo'' muito porque,quanto vejo tanto numero e letras misturados doi a cabeça.......kkkkkkkk

Link para o comentário
Compartilhar em outros sites

editar programas?

é irrevogável a grande ignorancia dessa área do fórum.

pessoas estúpidas aqui apenas para ganhar posts.

não dão a minima importância para esse conteúdo,

nem sabem o que o conteúdo faz.

 

Deus me perdoe, estou julgando vocês sim.

Link para o comentário
Compartilhar em outros sites

editar programas?

é irrevogável a grande ignorancia dessa área do fórum.

pessoas estúpidas aqui apenas para ganhar posts.

não dão a minima importância para esse conteúdo,

nem sabem o que o conteúdo faz.

 

Deus me perdoe, estou julgando vocês sim.

 

[H]unTerz, as pessoas dessas zonas constumam ter respeito entre elas.

E estão aqui sempre para ajudar os outros.

Troca de informações e conhecimentos.

 

Infelizmente há algumas pessoas que só pensam em ganhar posts.

Mas a maioria está aqui para trocar conhecimetos.

 

Vou ter que discordar de você. Se você se sente incomodado com essa área, retire-se.

Link para o comentário
Compartilhar em outros sites

me sinto incomodado com os membros futeis que presenciam ela.

nunca vi algum daki fazer algo grandioso e inovador como o ace.

raro é encontrar um tutorial desses, inclusive, com uma grande mentira do

iMelo.

os membros que aqui pairam, são horrorosos.

não trocam conhecimento, todos aqui são lammers, que conhecimento possuem?

conhecimento de roubo?

Link para o comentário
Compartilhar em outros sites

se voce nao gostou vaza cara o tutorial está muito bom sim bem organizado voce ta inveja do cara ? afz '-' , a info zone ja está sofrendo um grande derrubo de membros e os que vem quer zuar para ae ;x

geek.png

Always.

Link para o comentário
Compartilhar em outros sites

Não vá superestimar o Ace.

Acabo de perceber que ele nem informou os créditos do autor e nem se deu ao trabalho de falar "Autor desconhecido" e fez apenas colocar nick dele, apenas ¬¬'

 

Mesclar assembly com o Delphi é algo bem velho.

Link para o comentário
Compartilhar em outros sites

unTerz;6358750']editar programas?

é irrevogável a grande ignorancia dessa área do fórum.

pessoas estúpidas aqui apenas para ganhar posts.

não dão a minima importância para esse conteúdo,

nem sabem o que o conteúdo faz.

 

Deus me perdoe, estou julgando vocês sim.

 

Cara eu não estou querendo Ganhar posts estou aqui desde 2010

se eu quisese post ja teria mais de 3000

eu falei a realidade editando codigos compilados da para

editar programas

e aqui no forum temos respeitos e não ignorancia

obg por ler

flws~

5hTkq8b.png

Link para o comentário
Compartilhar em outros sites

Não vá superestimar o Ace.

Acabo de perceber que ele nem informou os créditos do autor e nem se deu ao trabalho de falar "Autor desconhecido" e fez apenas colocar nick dele, apenas ¬¬'

 

Mesclar assembly com o Delphi é algo bem velho.

 

Não coloquei créditos do autor porque eu fiz esse tópico sozinho, não sou como programadores noobs(você, sim VOCÊ) que pegam tópicos de outros locais e apenas passar para cá, agora se você não acredita em mim, quem se importa?Você é apenas um programador insignificante...Posso até dizer que você não sabe 1/4 do que eu sei...Por favor não acuse.

 

Mesclar assembly e delphi é velho?Você é tão ignorante...Não mesclei nada...O que fiz foi ler os bytes de um arquivo e usei como parâmetro de ensino os mnemonicos...Aposto que você não sabe nem delphi e nem assembly, muito menos a estrutura PE...Algo antigo?Serio, antigo?Me dê uma ideia melhor para alguma função que necessite de controle total do compilador?É por isso que eu parei de ajudar aqui, vocês baratas não merecem a ajuda de ninguem, vá criar seus hacks ctrl c ctrl v e deixe eu e meus tópicos em paz.

Link para o comentário
Compartilhar em outros sites

Não coloquei créditos do autor porque eu fiz esse tópico sozinho, não sou como programadores noobs(você, sim VOCÊ) que pegam tópicos de outros locais e apenas passar para cá, agora se você não acredita em mim, quem se importa?Você é apenas um programador insignificante...Posso até dizer que você não sabe 1/4 do que eu sei...Por favor não acuse.

 

Mesclar assembly e delphi é velho?Você é tão ignorante...Não mesclei nada...O que fiz foi ler os bytes de um arquivo e usei como parâmetro de ensino os mnemonicos...Aposto que você não sabe nem delphi e nem assembly, muito menos a estrutura PE...Algo antigo?Serio, antigo?Me dê uma ideia melhor para alguma função que necessite de controle total do compilador?É por isso que eu parei de ajudar aqui, vocês baratas não merecem a ajuda de ninguem, vá criar seus hacks ctrl c ctrl v e deixe eu e meus tópicos em paz.

 

Eu não lembro de ter dado ctrl+c e ctrl+v de algo que não ajudei.

99% das coisas do Kaao eu ajudei a fazer, seja dando dicas de algum comando ou de como fazer melhor.

Sim, eu sei muito pouco. E nunca disse que sei de tudo. Mas não é por isso que irei reprimir feito um sofista, como você.

 

Quis dizer no sentido de mesclar em usar as mesmas rotinas de um em outro. Desculpe se não consegui expressar direito minhas ideias em um teclado.

E como disse que era antigo, não quer dizer que seja ultrapassado, apenas que não é preciso ficar boquiaberto com isso.

 

Eu realmente concordo que tem gente lammer de mais aqui, que pede fica agindo como "AJUDE AQUI A HACKEAR O FACEBOOK DA MINHA EX-NAMORADA" ou "ME DE UM COMANDO PRONTO PARA AUMENTAR O MEU HP DO RPG", mas, diferente de inúteis como vocês que apenas saem xingando, eu passo a pessoa para o lado certo, conversando ela a agi corretamente.

unTerz;6365070']criticar faz bem pro crescimento.

 

Se for construtiva. Você fez mais decer falando mal do que argumentar.

Link para o comentário
Compartilhar em outros sites

Eu não lembro de ter dado ctrl+c e ctrl+v de algo que não ajudei.

99% das coisas do Kaao eu ajudei a fazer, seja dando dicas de algum comando ou de como fazer melhor.

Sim, eu sei muito pouco. E nunca disse que sei de tudo. Mas não é por isso que irei reprimir feito um sofista, como você.

 

Quis dizer no sentido de mesclar em usar as mesmas rotinas de um em outro. Desculpe se não consegui expressar direito minhas ideias em um teclado.

E como disse que era antigo, não quer dizer que seja ultrapassado, apenas que não é preciso ficar boquiaberto com isso.

 

Eu realmente concordo que tem gente lammer de mais aqui, que pede fica agindo como "AJUDE AQUI A HACKEAR O FACEBOOK DA MINHA EX-NAMORADA" ou "ME DE UM COMANDO PRONTO PARA AUMENTAR O MEU HP DO RPG", mas, diferente de inúteis como vocês que apenas saem xingando, eu passo a pessoa para o lado certo, conversando ela a agi corretamente.

 

 

Se for construtiva. Você fez mais decer falando mal do que argumentar.

"E como disse que era antigo, não quer dizer que seja ultrapassado, apenas que não é preciso ficar boquiaberto com isso."

Vocês sabe do que está falando ? ou está brincando com a minha cara ?

O que esse cara fez foi magnifico, ele usou a tática de modificar operadores para optimizar códigos específicos, e já compilado,

Poucas pessoas sabem elaborar algo tão bem feito assim.

Link para o comentário
Compartilhar em outros sites

Eu não lembro de ter dado ctrl+c e ctrl+v de algo que não ajudei.

99% das coisas do Kaao eu ajudei a fazer, seja dando dicas de algum comando ou de como fazer melhor.

Sim, eu sei muito pouco. E nunca disse que sei de tudo. Mas não é por isso que irei reprimir feito um sofista, como você.

 

Quis dizer no sentido de mesclar em usar as mesmas rotinas de um em outro. Desculpe se não consegui expressar direito minhas ideias em um teclado.

E como disse que era antigo, não quer dizer que seja ultrapassado, apenas que não é preciso ficar boquiaberto com isso.

 

Eu realmente concordo que tem gente lammer de mais aqui, que pede fica agindo como "AJUDE AQUI A HACKEAR O FACEBOOK DA MINHA EX-NAMORADA" ou "ME DE UM COMANDO PRONTO PARA AUMENTAR O MEU HP DO RPG", mas, diferente de inúteis como vocês que apenas saem xingando, eu passo a pessoa para o lado certo, conversando ela a agi corretamente.

 

 

Se for construtiva. Você fez mais decer falando mal do que argumentar.

 

Acho que você deveria parar de vir para a WC e começar a estudar mais filosofia, desde quando sofista significa é quem reprime?Eles ensinavam pessoas a falar em público, principalmente em Atenas onde havia democracia...

Não usei rotinas de ninguém meu caro, acho que deveria rever seus conceitos, ou esta querendo me dizer que eu deveria postar os créditos do windows porque usei funções do mesmo?

Link para o comentário
Compartilhar em outros sites

"E como disse que era antigo, não quer dizer que seja ultrapassado, apenas que não é preciso ficar boquiaberto com isso."

Vocês sabe do que está falando ? ou está brincando com a minha cara ?

O que esse cara fez foi magnifico, ele usou a tática de modificar operadores para optimizar códigos específicos, e já compilado,

Poucas pessoas sabem elaborar algo tão bem feito assim.

 

Não nego que o verdadeiro autor tenha feito foi algo muito bom, mas o que o Ace fez foi algo completamente estúpido

 

Acho que você deveria parar de vir para a WC e começar a estudar mais filosofia, desde quando sofista significa é quem reprime?Eles ensinavam pessoas a falar em público, principalmente em Atenas onde havia democracia...

Não usei rotinas de ninguém meu caro, acho que deveria rever seus conceitos, ou esta querendo me dizer que eu deveria postar os créditos do windows porque usei funções do mesmo?

Me refiro ao solfistas que enganavam os demais ^^

Não me refiro aos créditos óbvios, mas aos do autor do tutorial que você copiou e colou aqui

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.