Leandro Fróes Posted August 25, 2017 at 01:20 PM Share Posted August 25, 2017 at 01:20 PM Bom dia galera! Um tempo atrás fiz o curso Reversing From Scratch[1] (proporcionado pela própria Mente Binária) e fui apresentado ao Formato PE. Eu não fazia a mínima ideia do quanto esse bagulho era importante e grande (se bobear ainda não sei). De cara comecei a estudar e descobri que me faltava muita coisa da base, a partir dai reforcei ela e tento sempre reforçar até hoje, afinal, ela não é básica :). Essa semana, estudando sobre endereço virtual cai no formato PE e pensei “vou retomar meus estudos, manter em paralelo com a base” pois PRECISO estudar isso para entender outras coisas. Ambiente: Todas as definições feitas serão seguidas de um exemplo prático O ambiente usado é um Windows XP 32 bits Usarei o dumper hex “010 Editor”[2], mas fique à vontade quanto ao uso de qualquer editor. No meu caso estou usando na versão 8.0 Todo exemplo de código será feito em C (linguagem compilada) e usarei o gcc como compilador na versão 4.9.2. Vou assumir que você possui um entendimento básico de structs, ponteiros etc (caso não tenha manda bala que a gente ti responde) Algumas considerações: O reforço da base é essencial para melhor entendimento de todo material(dicas/correções/sugestões serão sempre bem-vindas). Todas as estruturas apresentadas são da própria Microsoft[3] (vai por mim elas ajudam muito) A documentação oficial do pecoff também está aberta aos curiosos[4] Pra ser sincero minhas 2 inspirações pra esse tipo de estudo foi o trabalho excelente do software livre PEV e do treinamento do nosso querido Fernando Mercês[5] e uma senhora que eu sinto em não conhecer, mas pelo que li dos seus artigos parece ser uma pessoa excelente com uma capacidade enorme, ela é conhecida como Vovó Vick[6]. Deixo como referência o material de ambos, obrigado pessoal Queria deixar claro que eu sou apenas um estudante, qualquer gafe por favor me corrijam Qual a necessidade de aprender isso? Bom, necessidade mesmo não tem, isso vai muito do seu objetivo e/ou curiosidade. Algumas vantagens que vejo no entendimento de como os executáveis rodam em seu sistema são: Reforçar e/ou aprender melhor sobre conceitos fundamentais da computação como: sistema de numeração, memória virtual, alinhamento de memória etc Enfrentar um novo desafio É um conceito importante para a Engenharia Reversa Acho que o mais legal aqui é quanta coisa você pode tirar de uma. Acho muito difícil qualquer um que não lide com o assunto faz tempo consiga ler toda a documentação do PE como um romance. Exige sair daqui e ler vários outros tópicos para só depois voltar e ter um entendimento mais claro. Se isso tudo soa interessante para você, bora estudar juntos Algumas definições adotadas: Byte = 8 bits WORD = 2 bytes DWORD = 4 bytes QWORD = 8 bytes Sem mais delongas, estou abrindo aqui um resumão de tudo que estudo/estudarei sobre o Formato PE. Vou tentar fazer da forma mais enxuta possível. Lembrem-se que qualquer feedback é bem-vindo. Vou postar de acordo com meus estudos e aplicabilidade dos mesmos. O que é o Formato PE? Já se perguntou por que diabos quando você clica em algo a mágica acontece? Como aquilo faz algo com “apenas” dois clicks? Bom, isso tudo acontece porque o Windows possui um padrão, um formato para guardar “cada coisa no seu lugar” de modo que o sistema possa achar quando necessário, já pensou em quanta coisa diferente executamos? O coitado do software precisa entender tudo o mais rápido possível se não o hardware leva um chute. O que são essas coisas? Dados!! Ta, o que são dados? Bytes (hehe), alguns conhecem como fileira (ou tripa) de bytes. Temos que reforçar que tudo acaba em zeros e uns, não importa o programa ou a linguagem e este formato que estamos tratando fala especificamente dos executáveis Windows. Vamos vê-los de cima para baixo. O formato do PE segue da seguinte forma: Cabeçalho MZ do DOS Fragmento (stub) do DOS Cabeçalho do Arquivo Cabeçalho Opcional Diretório de Dados Cabeçalhos das Seções Seção 1 Seção 2 ... Seção n Bom, mãos à obra!! Primeiramente vamos criar um programinha simples em C e salvar como teste.c. Para compilar, como estou em um Windows e usando a IDE Dev-C++ o processo de compilação e execução foi simplesmente clicar em Build and Run. O CodeBlocks, por exemplo, funciona da mesma forma. #include <stdio.h> int main(void){ printf(“Mente Binaria eh foda! =)\n”); return 0; } Temos como resultado da compilação e linkedição um arquivo .o e um .exe, arquivo objeto e executável, respectivamente. Este simples programa “não faz nada” além de imprimir uma frase na tela, mas que tal vermos os bytes do binário? Arraste o .exe para o Editor Hexa de sua preferência (perdão o termo “arrastar” para os adoradores de linha de comando ). Logo de cara vemos todos os bytes dessa coisa linda: MZ-Signature: Estão vendo esta WORD(2 bytes) logo de cara ? 4D 5A? Eles possuem a representação em ASCII “MZ” e este é chamado DOS-Signature que fica dentro da IMAGE_DOS_HEADER. Se pra você esses números na tela não fazem sentido algum recomendo dar uma lida sobre o hexdump. Agora deem uma olhada no offset 0018h: Temos uma DWORD com o valor 0x40000000. Aqui temos que fazer a seguinte consideração: na arquitetura Intel os bytes são endereçados de forma inversa, mais conhecido como Little Endian. Invertendo estes bytes temos o valor 0x00000040, este é o deslocamento para DOS-Stub. e_lfanew Na localização 0x3c, o stub possui o deslocamento do arquivo para a assinatura PE. Esta informação permite que o Windows execute corretamente o arquivo de imagem, mesmo que tenha um stub do MS-DOS. Este deslocamento de arquivo é colocado na localização 0x3c durante a ligação. Invertendo os bytes temos o valor 0x00000080, e adivinha o que acontece se andarmos até lá? DOS-Stub: Estamos agora na estrutura IMAGE_DOS_STUB. Aqui encontramos nosso um fragmento (stub) executável MS-DOS. O stub MS-DOS é um aplicativo válido que é executado em MS-DOS. É colocado na frente da imagem EXE. O linker coloca um stub padrão aqui, que imprime a mensagem "Este programa não pode ser executado no modo DOS" quando a imagem é executada no MS-DOS. Signature Seguindo o nosso ponteiro e_lfanew chegamos aqui: Caímos na estrutura IMAGE_NT_HEADERS e na DWORD Signature: typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER OptionalHeader; } IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS; Nossa assinatura PE é exatamente isso, a representação em ASCII das letras P e E seguidos de dois bytes nulos, ‘\0’ e‘\0’ As coisas parecem meio soltas, meio sem sentido, mas vamos melhorando isso aos poucos, certo?! A partir de agora as coisas começam a ficar mais interessantes, vamos encontrar estruturas dentro de estruturas, campos com máscaras de bits, tabelas e ponteiros pra dar e vender e por ai vai. Ainda há MUITA coisa dentro desse binário e pretendo passar para cá sempre que puder. De começo foram apenas algumas definições simples e introdução, mas pra quem não conhecia sobre o assunto se bobear ajudou em algo(espero). As referências aqui apresentadas possuem um material incrível de tudo que veremos, vale conferir. Fico por aqui e qualquer dúvida, sugestão etc etc estarei por aqui, obrigado [1] https://www.mentebinaria.com.br/topic/38-engenharia-reversa-i/ [2] https://www.sweetscape.com/010editor/ [3] https://msdn.microsoft.com/en-us/library/windows/desktop/ms680198(v=vs.85).aspx [4] https://www.microsoft.com/en-us/download/details.aspx?id=19509 [5] https://github.com/merces/pev [6] http://www.numaboa.com.br/ Link to comment Share on other sites More sharing options...
Eduardo Bittencourt Posted August 25, 2017 at 02:14 PM Share Posted August 25, 2017 at 02:14 PM Legal seu post! Link to comment Share on other sites More sharing options...
Leandro Fróes Posted August 26, 2017 at 03:01 AM Author Share Posted August 26, 2017 at 03:01 AM Obrigado mano! Link to comment Share on other sites More sharing options...
Leandro Fróes Posted August 26, 2017 at 03:23 PM Author Share Posted August 26, 2017 at 03:23 PM Para quem não entendeu o motivo de tudo isso dei uma editada colocando as vantagens que vejo em relação a esse aprendizado Link to comment Share on other sites More sharing options...
Danilo Capelo de Castro Posted October 11, 2017 at 03:23 PM Share Posted October 11, 2017 at 03:23 PM Brother esta eu fazendo algumas pesquisas de PE e encontrei uma referencia que axei mtu legal, segue o link http://www.openrce.org/reference_library/files/reference/PE Format.pdf Link to comment Share on other sites More sharing options...
gzn Posted January 29, 2018 at 09:15 PM Share Posted January 29, 2018 at 09:15 PM @Leandro Fróes que tal o Sr. transferir esse(s) artigo(s) para o wikilivros? O Mercês começou a produzir um livro sobre ER lá e a plataforma é ideal para colaboração. Acho que se você colocar lá vai motivar mais o Mercês e outros camaradas a trabalhar colaborativamente (o que pode ser benéfico a outros e prazeroso para o nosso meio de aprendizagem em ER). Link to comment Share on other sites More sharing options...
gzn Posted January 29, 2018 at 09:52 PM Share Posted January 29, 2018 at 09:52 PM Curiosidade @Leandro Fróes, eu to começando ER e não entendo muito os termos usados nessa área, mas existe mesmo "tripa de bytes"? Eu pesquisei no Google e achei pouquíssimos resultados com essa expressão. Aproximadamente 11 resultados (excluindo repetições). Será que esse termo não veio de "tuple of bytes"? Em python por exemplo tupla é uma sequencia de objetos imutáveis. $$('._Rm').forEach(function(i){console.log(i.firstChild)}); VM2067:1 "www.numaboa.com.br › Informática › Oráculo de Referências › Formatos Padrão" VM2067:1 "www.numaboa.net.br/informatica/oraculo/230-formatos/1096-formato-pe" VM2067:1 "https://acrecom.files.wordpress.com/2013/06/engenharia-reversa.doc" VM2067:1 "https://www.passeidireto.com/arquivo/1914647/engenharia-reversa/2" VM2067:1 "https://www.mentebinaria.com.br/forums/topic/97-formato-pe/?do=embed" VM2067:1 "www.forum-invaders.com.br › Fórum › ¤ Segurança da Informação ¤ › Segurança" VM2067:1 "caloni.com.br/como-ofuscar-strings/" VM2067:1 "www.ebah.com.br/content/ABAAAf2CEAJ/50-apostilas-hacker-engenharia-reversa" VM2067:1 "forum.guiadohacker.com.br › ... › Área Hacker › Matérias/Tutoriais/Dicas" VM2067:1 "www.desenvolvedoresdaruma.com.br/sddn/ddn/ddn005_61.html" VM2067:1 "https://docgo.net/embed/o-formato-pe" Só esses sites acima ai. Link to comment Share on other sites More sharing options...
gzn Posted January 29, 2018 at 10:18 PM Share Posted January 29, 2018 at 10:18 PM Sobre o uso de editores, quem estiver usando cygwin (ou mesmo direto na plataforma Linux, WSL, etc.) já tem uma ferramenta que dá pra quebrar o galho. É o od (ferramenta do coreutils). $ dd if=hello.exe of=saida skip=128 ibs=1 2>/dev/null;echo -e '\t0 1 2 3 4 5 6 7 8 9 A B C D E F';od -A x -t x1z -v saida|head 0 1 2 3 4 5 6 7 8 9 A B C D E F 000000 50 45 00 00 64 86 10 00 09 76 6e 5a 00 26 02 00 >PE..d....vnZ.&..< 000010 8d 02 00 00 f0 00 27 00 0b 02 02 1d 00 08 00 00 >......'.........< 000020 00 1e 00 00 00 02 00 00 00 10 00 00 00 10 00 00 >................< 000030 00 00 40 00 01 00 00 00 00 10 00 00 00 02 00 00 >..@.............< 000040 04 00 00 00 00 00 00 00 05 00 02 00 00 00 00 00 >................< 000050 00 e0 02 00 00 06 00 00 8b 8d 02 00 03 00 00 80 >................< 000060 00 00 20 00 00 00 00 00 00 10 00 00 00 00 00 00 >.. .............< 000070 00 00 10 00 00 00 00 00 00 10 00 00 00 00 00 00 >................< 000080 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 >................< 000090 00 80 00 00 84 02 00 00 00 90 00 00 e8 04 00 00 >................< Link to comment Share on other sites More sharing options...
Leandro Fróes Posted January 30, 2018 at 01:39 AM Author Share Posted January 30, 2018 at 01:39 AM 4 horas atrás, gzn disse: @Leandro Fróes que tal o Sr. transferir esse(s) artigo(s) para o wikilivros? O Mercês começou a produzir um livro sobre ER lá e a plataforma é ideal para colaboração. Acho que se você colocar lá vai motivar mais o Mercês e outros camaradas a trabalhar colaborativamente (o que pode ser benéfico a outros e prazeroso para o nosso meio de aprendizagem em ER). Bacana a ideia, vou falar com ele sim, obrigado!! 3 horas atrás, gzn disse: Curiosidade @Leandro Fróes, eu to começando ER e não entendo muito os termos usados nessa área, mas existe mesmo "tripa de bytes"? Eu pesquisei no Google e achei pouquíssimos resultados com essa expressão. Aproximadamente 11 resultados (excluindo repetições). Será que esse termo não veio de "tuple of bytes"? Em python por exemplo tupla é uma sequencia de objetos imutáveis. $$('._Rm').forEach(function(i){console.log(i.firstChild)}); VM2067:1 "www.numaboa.com.br › Informática › Oráculo de Referências › Formatos Padrão" VM2067:1 "www.numaboa.net.br/informatica/oraculo/230-formatos/1096-formato-pe" VM2067:1 "https://acrecom.files.wordpress.com/2013/06/engenharia-reversa.doc" VM2067:1 "https://www.passeidireto.com/arquivo/1914647/engenharia-reversa/2" VM2067:1 "https://www.mentebinaria.com.br/forums/topic/97-formato-pe/?do=embed" VM2067:1 "www.forum-invaders.com.br › Fórum › ¤ Segurança da Informação ¤ › Segurança" VM2067:1 "caloni.com.br/como-ofuscar-strings/" VM2067:1 "www.ebah.com.br/content/ABAAAf2CEAJ/50-apostilas-hacker-engenharia-reversa" VM2067:1 "forum.guiadohacker.com.br › ... › Área Hacker › Matérias/Tutoriais/Dicas" VM2067:1 "www.desenvolvedoresdaruma.com.br/sddn/ddn/ddn005_61.html" VM2067:1 "https://docgo.net/embed/o-formato-pe" Só esses sites acima ai. Então... até onde eu sei isso não é de fato um "termo de RE" e sim um simples termo para dizer "cadeia de bytes" ou "sequência de bytes". Não se prenda nos termos, se você pegou a ideia já está ótimo. Abraços Link to comment Share on other sites More sharing options...
Fernando Mercês Posted February 7, 2018 at 02:53 AM Share Posted February 7, 2018 at 02:53 AM @gzn no Windows você pode usar o hdump também, pra não precisar Cygwin. Link to comment Share on other sites More sharing options...
gzn Posted February 7, 2018 at 01:39 PM Share Posted February 7, 2018 at 01:39 PM Obrigado @Fernando Mercês, não conhecia essa ferramenta. Link to comment Share on other sites More sharing options...
Fernando Mercês Posted February 7, 2018 at 02:07 PM Share Posted February 7, 2018 at 02:07 PM Eu acho que a melhor parte de tê-la feito é o código ser limpo, claro de ser entendido. Lembro que na época eu tentei entender o código do hexdump, od, etc mas falhei miseravelmente. rs Abraço! Link to comment Share on other sites More sharing options...
gzn Posted February 8, 2018 at 03:28 PM Share Posted February 8, 2018 at 03:28 PM Nossa que beleza rapaz! Nem vi que vc era o autor. Tá de parabéns! Até eu que não sei muito de c consegui entender o código (diferente de outros projetos que combinam alguns recursos da linguagem e o deixa ininteligível). Tá aí o sensei Mercês ensinando como se escreve um hex dump Link to comment Share on other sites More sharing options...
dudsdev Posted April 26, 2018 at 11:39 AM Share Posted April 26, 2018 at 11:39 AM Em 26/08/2017 em 00:01, Leandro Fróes disse: Obrigado mano! Massa Leandro.. Esse conhecimento de base, que você citou no início do post dizendo sempre está estudando, quais são os conteúdos que sempre temos que reforçar? Abraço! Link to comment Share on other sites More sharing options...
Leandro Fróes Posted April 27, 2018 at 06:55 PM Author Share Posted April 27, 2018 at 06:55 PM Em 26/04/2018 em 08:39, dudsdev disse: Massa Leandro.. Esse conhecimento de base, que você citou no início do post dizendo sempre está estudando, quais são os conteúdos que sempre temos que reforçar? Abraço! Opa, tudo bem mano? Então.. falar de forma específica ´é meio complicado, mas eu resumiria (de forma geral) em: Sistemas Operacionais (mais de um mesmo), programação, redes e arquitetura de computadores. Tem um artigo bem legal falando sobre como iniciar na área aqui no portal e ele fala também várias referências, este aqui. É bem difícil conciliar tudo isso, pois é MUITA coisa e você nunca para, mas se você organizar certinho e fazer uma linha você vai aprender MUITO ? Qualquer dúvida só falar, abs! Link to comment Share on other sites More sharing options...
3mm4 Posted May 4, 2018 at 02:01 PM Share Posted May 4, 2018 at 02:01 PM Esse gif da Malware Unicorn ajuda a entender legal o PE. https://securedorg.github.io/RE101/images/PEHeader.gif Link to comment Share on other sites More sharing options...
Naelson Goncalves Saraiva Posted May 5, 2018 at 07:34 PM Share Posted May 5, 2018 at 07:34 PM Isso que iria pergunta agora, eu acompanhei o projeto de uma gringa fera no eng rv, e ela fazia esse HEX de trás para frente, me ajudou muito, ela falava sobre PE format também , great content, ainda vou descobrir como ela encontrava no Hex Editor enable de funcionalidade x do game .exe Link to comment Share on other sites More sharing options...
Leandro Fróes Posted May 5, 2018 at 07:44 PM Author Share Posted May 5, 2018 at 07:44 PM 9 minutos atrás, Naelson Goncalves Saraiva disse: Isso que iria pergunta agora, eu acompanhei o projeto de uma gringa fera no eng rv, e ela fazia esse HEX de trás para frente, me ajudou muito, ela falava sobre PE format também , great content, ainda vou descobrir como ela encontrava no Hex Editor enable de funcionalidade x do game .exe Boa tarde! Não sei se entendi, ela achava no editor como habilitar certa funcionalidade de um jogo? Link to comment Share on other sites More sharing options...
Naelson Goncalves Saraiva Posted May 5, 2018 at 07:53 PM Share Posted May 5, 2018 at 07:53 PM Sim Link to comment Share on other sites More sharing options...
Naelson Goncalves Saraiva Posted May 5, 2018 at 08:01 PM Share Posted May 5, 2018 at 08:01 PM To estudando assembly para entender o que são estas coisas que ela faz. Para entender como ela pega esses endereços testa ou o que os endereços faz. Por que como vai da breakpoint em um executável de rpg acho que não é possível ne? Usa os ganços acho que seria de menos problema é entender como funciona os endereços, BYTE etc... if (Config::Instance()->fixes->territoryWarPetFix) { WriteInstructionCall(0x8D1470, reinterpret_cast<UINT32>(GetUserOrMaster), 0x8D1476); WriteMemoryBYTES(0x8D1476, "\x4C\x39\xE8", 3); WriteMemoryBYTES(0x8D147B, "\x44\x8B\x45\x18\x8B\x40\x18\x44" "\x89\x44\x24\x30\x89\x44\x24\x20" "\x48\x8B\x85\x90\x0A\x00\x00\x8B" "\x90\x84\x0B\x00\x00\x89\x54\x24" "\x28", 33); } WriteInstructionCall(0x443F58 + 0x11D, reinterpret_cast<UINT32>(SendSaveCharacterInfoWrapper)); Link to comment Share on other sites More sharing options...
Naelson Goncalves Saraiva Posted May 5, 2018 at 08:14 PM Share Posted May 5, 2018 at 08:14 PM Tipo usando esse Cheat Engine da de descobrir onde fica endereço de certa coisa como moeda de um jogo etc.. Mas como descobrir algo que não da uma referencia? Acho que me empolguei um pouco e acabei poluído o poste kkk Link to comment Share on other sites More sharing options...
Leandro Fróes Posted May 5, 2018 at 08:52 PM Author Share Posted May 5, 2018 at 08:52 PM Interessante, ta ai uma coisa que eu quero tentar um dia, engenharia reversa em jogos, mas no momento eu realmente não sei sobre ? Seguindo mais ou menos o que você mostrou: ela não ta mexendo nos endereços e sim diretamente nas instruções. Eu realmente não sei como ela acha tal funcionalidade em tal parte do código(você disse que não rola bp, né?!), mas se achar ela pode mudar tanto em um debugger quanto em um editor hexa (tomando cuidado com o número de bytes que ela tem pra cada instrução etc). Tenha em mente que todas as seções estão em disco, ou seja, estão no arquivo e quando o programa é executado o Loader as mapeia em memória. Todas as intruções do código executável (da seção .text, por exemplo) estão no arquivo e podem sim ser vistas por um editor hexa, basta saber procurar hehe. Se você não entendeu bulhufas do que falei manda uma msg lá no discord qqc que a gente troca uma ideia, mas também aconselho a ver o curso de engenharia reversa do CERO. Sobre descobrir o que os opcodes fazem, da uma olhadinha aqui qqc http://ref.x86asm.net/ Abraço!! Link to comment Share on other sites More sharing options...
Naelson Goncalves Saraiva Posted May 5, 2018 at 09:06 PM Share Posted May 5, 2018 at 09:06 PM 3 horas atrás, Leandro Fróes disse: Interessante, ta ai uma coisa que eu quero tentar um dia, engenharia reversa em jogos, mas no momento eu realmente não sei sobre ? Seguindo mais ou menos o que você mostrou: ela não ta mexendo nos endereços e sim diretamente nas instruções. Eu realmente não sei como ela acha tal funcionalidade em tal parte do código(você disse que não rola bp, né?!), mas se achar ela pode mudar tanto em um debugger quanto em um editor hexa (tomando cuidado com o número de bytes que ela tem pra cada instrução etc). Tenha em mente que todas as seções estão em disco, ou seja, estão no arquivo e quando o programa é executado o Loader as mapeia em memória. Todas as intruções do código executável (da seção .text, por exemplo) estão no arquivo e podem sim ser vistas por um editor hexa, basta saber procurar hehe. Se você não entendeu bulhufas do que falei manda uma msg lá no discord qqc que a gente troca uma ideia, mas também aconselho a ver o curso de engenharia reversa do CERO. Sobre descobrir o que os opcodes fazem, da uma olhadinha aqui qqc http://ref.x86asm.net/ Abraço!! Blz, deixa eu entender esse assembly e logo entro no radio, tenho conhecimento de c/c++ mas nem da de ter uma conversa a nível com vocês, Ta osso pra crl. Frederico Pissarra ainda brinca na apostila dele que isto não é difícil aprender. Link to comment Share on other sites More sharing options...
Leandro Fróes Posted May 5, 2018 at 09:52 PM Author Share Posted May 5, 2018 at 09:52 PM 45 minutos atrás, Naelson Goncalves Saraiva disse: Blz, deixa eu entender esse assembly e logo entro no radio, tenho conhecimento de c/c++ mas nem da de ter uma conversa a nível com vocês, Ta osso pra crl. Frederico Pissarra ainda brinca na apostila dele que isto não é difícil aprender. Que isso rapaz, com ctz você é capaz de conversar com todos, assim como qualquer um é. Não se menospreza não, o mais importante é sua vontade de aprender. Manda um salve lá sem medo ? Link to comment Share on other sites More sharing options...
HelderPereira Posted August 22, 2019 at 02:51 PM Share Posted August 22, 2019 at 02:51 PM Bom dia, li seu post e me gerou uma dúvida. Se eu executar esse código em plataforma nativa DOS, o Loader executará o fragmento (stub) para informar que a aplicação não pode rodar em DOS e encerra a aplicação, no entanto não compreendi como o Loader consegue fazer essa distinção. Ao abrir um executável via um editor hexadecimal como identifico essa distinção dentro do código? Outra dúvida, no caso do... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.