[ chaplja @ 02.06.2011. 22:30 ] @
Pozdrav,

ovo je alpha verzija mog "code obfuscatora" koji ce u konacnosti raditi na principu Themide, VMProtecta, CodeVirtualizera, itd. - znači u C/C++ kodu (ili drugom programskom jeziku koji podržava inline assembler) se označe dijelovi koda koji ce se ili "mutirati" ili virtualizirati. Kod mutacije se instrukcije zamijenjuju nizom instrukcija koje daju isti rezultat i ubacuje se "junk" instrukcije koje ne znače ništa, ali otežavaju reversanje.

Kao što rekoh, ovo je alpha verzija i puno toga nedostaje ili je privremeno, tj. kompleksnost generirane (zaštićene) verzije aplikacije ce biti mnogo veća u finalnoj verziji. Za više detalja pročitati readme:

Code:
# ChapljaVM Code Obfuscator readme

ChapljaVM Code Obfuscator is a tool used for protection of PE executable
files. It is currently in alpha stage and is thus far from finished.
Many instructions are not supported yet or may be improperly mutated
which can result in the protection application not functioning correctly
(e.g. crashing).

Notes: The input executable must be compiled with image randomization
disabled and no relocation sections or it will crash when loaded at non
default base address. This means you must disable the above mentioned
features in your compiler for your EXE files as well. Only 32bit files
are supported at this stage and instructions in the marked code blocks
must not have any prefixes (e.g. lock, repne, etc). Also, certain
instructions are currently supported only in certain forms, for example:
"xor register, register" may be supported, but "xor [mem], imm" not.

More instructions will be supported soon, but you may report an
instruction used by your program if it's not supported and it will take
priority over other instructions. Contact details are on the bottom of
this file.

The code produced at this stage is a bit too large (100 bytes of code
becomes around 1600 bytes of code, but that will be optimized soon) and
not all instructions are mutated, some are simply copied in its original
form. Remember, this is an alpha version! Many things are temporary and
the obfuscation complexity will be much more complex in future versions.

The protection options are not customizable at this stage, the options
block will be enabled at a later point.

How to use: Include the "ChapljaVM_SDK.h" in your C/C++ project and use
CVM_BEGIN and CVM_END macros to mark the start and the end of a code
block you wish to protect.

Please report all bugs to chaplja@gmail.com - this includes unsupported
instructions as well as any other kind of bug (e.g. the generated exe
file is crashing or producing wrong results).

# Credits for used libraries
* PeLib - www.pelib.com
Copyright 2004 by Sebastian Porst
Original license in PELIB_LICENSE.txt

* libudis86 - http://udis86.sourceforge.net
Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 
Original license in UDIS86_LICENSE.txt

* AsmJit - http://code.google.com/p/asmjit/
Copyright (c) 2008-2010, Petr Kobalicek 
Original license in ASMJIT_COPYING.txt

# www.chaplja.net | www.valsimot.com | chaplja.blogspot.com
# chaplja@gmail.com


Download: http://chaplja.net/ChapljaVM.zip
Moj blog: http://chaplja.blogspot.com/ (tu ce biti postavljene nove verzije)

Screenshot programa:



Primjer aplikacije:
Code:
#include "../CVM/ChapljaVM_SDK.h"

#include <stdio.h>

int main(int argc, char *argv[])
{
    CVM_BEGIN

    printf("Program %s sa %d argumenata.\n", argv[0], argc);

    CVM_END

    return 0;
}


Originalan kod:


Mali dio "mutiranog" kod:
[ jorganwd @ 02.06.2011. 23:01 ] @
Odlicna ideja ali ne dopadaju mi se dvije stvari: nema otvorenog koda i zavisnost od platforme.
[ chaplja @ 02.06.2011. 23:11 ] @
Zasto bi ovakva aplikacija imala otvoreni kod?
[ jorganwd @ 03.06.2011. 08:19 ] @
Ne uliva dovoljno povjerenja za nesto ozbiljnije, chaplja.
[ chaplja @ 03.06.2011. 11:45 ] @
U redu, ne slažem se sa tvojim mišljenjem, ali ne želim dalje o tome, svatko gleda na ove stvari na svoj način.
[ EArthquake @ 15.06.2011. 13:54 ] @
jako lepo , bas cu da se poigram

@jorganwd , nista cudno za protector da nema dostupan source

nemas source ni themida-e , pa ljudi koriste itekako...


EDIT: wow, 10ak dana topik ovde ...
retko zalazim u Security Coding , zapostaljen forum skroz , steta ...
[ jorganwd @ 15.06.2011. 14:33 ] @
Ako nije dostupan source, onda mora biti 'from trusted source'. To znaci da ga nije napisao neki haker koji se krije iza pseudonima, vec osoba sa imenom i prezimenom, firma, patent, copyright, stagod. Rekao sam da je ideja odlicna, ali kad se radi o ozbiljnim stvarima (licno obfuskaciju smatram ozbiljnom temom) onda treba povesti malo vise racuna o tome.

Mozda sam genralno malo vise paranoican, ali nisam jedini na svijetu.

poz,
Muris
[ chaplja @ 15.06.2011. 14:51 ] @
Bez brige kaj se toga tiče :) Sve u svoje vrijeme..
[ EArthquake @ 15.06.2011. 18:36 ] @
upravo tako

bitno da se radi nesto interesantno

tako je i ap0x imao svoj rlpack , a vidi ga sad...
[ Aleksandar Đokić @ 17.06.2011. 03:11 ] @
sta radi ap0x sada?
[ EArthquake @ 17.06.2011. 08:37 ] @
http://reversinglabs.com/
[ Impaler @ 01.07.2011. 09:04 ] @
Citat:
jorganwd: Ako nije dostupan source, onda mora biti 'from trusted source'. To znaci da ga nije napisao neki haker koji se krije iza pseudonima, vec osoba sa imenom i prezimenom, firma, patent, copyright, stagod. Rekao sam da je ideja odlicna, ali kad se radi o ozbiljnim stvarima (licno obfuskaciju smatram ozbiljnom temom) onda treba povesti malo vise racuna o tome.

Mozda sam genralno malo vise paranoican, ali nisam jedini na svijetu.

poz,
Muris
err, ne
procitaj si ovo: http://cm.bell-labs.com/who/ken/trust.html

ukratko , nema alternative binary analizi. dakle nema veze jeli dostupan source ili nije.