Kysymys:
Mitkä ovat tekniikat ja työkalut hämmentämään Python-ohjelmia?
perror
2013-04-28 01:06:57 UTC
view on stackexchange narkive permalink

Tämä kysymys liittyy tähän toiseen. Mietin vain, mitä tekniikoita voidaan soveltaa ja mitä todellisessa maailmassa löytyy Python-ohjelman hämärtämiseksi (vastaavia kysymyksiä löytyy pinoverflowista täällä ja täällä). p>

mikeazo mainitsi sen, että hänen ohjelmalleen toimitettiin mukautettu Python-tulkki, mutta mitkä ovat muut tekniikat ja kuinka tehokkaita ne ovat?

Viisi vastused:
mikeazo
2013-05-01 17:14:59 UTC
view on stackexchange narkive permalink

Tässä on temppuja, joita voit käyttää pakatessasi python-sovelluksesi mukautetulla tulkilla.

  1. Muuta tulkin opkoodit uudelleen
  2. Salaa pyc-tiedostot (mukautettu tulkki) purkaa salauksen purkamisen ennen tuontia)
  3. Poista tulkki co_code-käyttöoikeus (poista viite co_code-koodiin tulkin code_memberlist-taulukko-ilmoituksessa tulkin codeobject.c-tiedostossa)
  4. Hämmentää / suojaa python-tulkki
  5. Älä niputa moduuleita, kuten dis , mikä auttaisi käänteisessä suunnittelussa (pohjimmiltaan suunnittele paljastamaton python-ohjelma, huomioi kaikki hyödylliset moduulit / tekniikat ja poista ne omasta tulkki)
  6. Muokkaa tulkkia siten, että se voi tuoda vain pyc-tiedostoja (voidaan tehdä poistamalla kääntömoduulit tai suodattamalla tulkkissa)
  7. pyREtic ihmiset antavat muutaman tavanomaisen tekniikan tullakseen mukautettuun tulkkiin. Näiden kokeileminen sovelluksessasi ja näiden käyttömenetelmien poistaminen käytöstä vaikeuttaisi käänteisinsinööriä.
  8. Poista tulkitoiminnot, joihin rekisteröijä voi soittaa auttaakseen häntä, kuten PyRunString () . Muussa tapauksessa he voivat liittää virheenkorjauksen avulla ja suorittaa mielivaltaisen python-koodin.

Viitteet

Voisi myös saada tulkin vaatimaan kaiken koodin allekirjoittamisen niin kauan kuin olet tällä reitillä.
Katso myös Katso (pudota) -ruudusta, koska se on kaupallisesti pakattu Python-sovellus. https://www.usenix.org/system/files/conference/woot13/woot13-kholia.pdf
Antimony
2013-04-28 09:30:43 UTC
view on stackexchange narkive permalink

En tiedä mitään erityisiä Python-hämärtystyökaluja (luultavasti siksi, että sellaiset ihmiset, jotka haluavat kirjoittaa hämärtynyttä koodia, eivät tee sitä Pythonissa, paitsi huvi / koulutus).

Jos minun tarvitsi kuitenkin hämmentää Python-koodia, käytän todennäköisesti samoja tekniikoita kuin mitä käytit ohjelmassa millä tahansa kielellä. Työkalujen puute tarkoittaa, että sinun on kirjoitettava oma hämärtimesi, mutta se ei ole liian vaikeaa.

Ajattele pohjimmiltaan mitä tahansa, mitä tekisit ohjelman muokkaamiseksi ja muuntamiseksi sen tekemiseksi.

  • Tee invarianteistasi monimutkainen. Muunna ohjelman invariantit sellaisiksi kuin `(x ** y)% p == 457 'tai" tämä tietorakenne edustaa achordaalista kaaviota ". Staattinen tai dynaaminen analyysityökalu ei todennäköisesti arvaa tällaisia ​​invarianteja, ja niiden selvittäminen vie iät.

  • Sekoita eri menetelmien logiikka. Ota jokainen hyvä suunnittelutapa ja tee päinvastoin. Sisällytä menetelmien osat satunnaisesti muihin menetelmiin ja järjestä koodi uudelleen. Kopioi osia CFG: stä ja lisää hyppyjä satunnaisesti molempien versioiden vastaavien pisteiden väliin, ja sitten mutatoi ne, jotta ne eivät selvästi ole päällekkäisiä.

  • Lisää pakkaaja. Bonusosoittimet, jos purat koodin osat vain silloin, kun sinun on tosiasiallisesti suoritettava ne, ja saat tulokset riippumaan ohjelman tilasta, joten avainten määrittäminen etukäteen on vaikeaa. Yritä varmistaa, että alkuperäinen ohjelma ei tule koskaan muistiin kerralla.

Hämärtymisen tärkeimmät haasteet ovat se, että se vaatii ohjelman ymmärtämistä ja yleensä vahingoittaa suorituskykyä. Äärimmäisimmät hämärtymät ovat käytettävissä vain tapauksissa, joissa suorituskyvyllä ei ole merkitystä ja intensiivisen valvonnan kestäminen on tärkeää (eli haittaohjelma).

Koodin hämärtämisen lisäksi ongelma syntyy, kun yritetään panna täytäntöön sovellusten lisensointi ja vanhentuminen. Siinä tapauksessa ehdotan sovelluksen kriittisen osan siirtämistä alkuperäiseen binaariin (kirjoita se C-kirjaimeen) ja tee siellä lisenssitarkistus. Tietysti se C-jaettu kirjasto / dll voidaan sitten suojata "tavallisella" tavalla.
Jacques de Hooge
2015-06-16 21:54:06 UTC
view on stackexchange narkive permalink

Tämä ilmainen työkalu hämmentää monimoduulisen Python-lähdekoodin säilyttäen kolmannen osapuolen kirjastoista tuotavat tunnisteet. Myös muut tunnisteet voidaan vapauttaa hämärtymisestä. Tein sen omaan käyttöön monivuotisessa projektissa, mutta päätin, että myös muut hyötyvät siitä.

"SyntaxError: koodauksen ilmoitus Unicode-merkkijonossa" yritettäessä suorittaa hämärtää koodi. Se myös "tuo järjestelmiä", jotka voivat olla estettyjä joissakin ympäristöissä. Tällaisen työkalun ei pitäisi lisätä riippuvuuksia.
jbowss
2017-03-19 06:11:51 UTC
view on stackexchange narkive permalink

Sinulla on joitain vaihtoehtoja.

Voit luoda oman hämärtämismenetelmän, joka koostuu olemassa olevista salaustyökaluista ... ts. openssl. Mutta varokaa, todennäköisesti vie paljon aikaa tämän tyyppisen projektin suorittamiseen.

Se vaatii sinua kartoittamaan, kuinka aiot sulkea "salasanat / salasanat" hämärtyneeseen koodiin siten, että kukaan muu kuin sinä ei pääse siihen. On parempi, jos sinäkään et pääse siihen.

Sitten sinun on lisättävä logiikkaa, joka saa komentosarjan suojautumaan uteliailta käyttäjiltä, ​​jotka saattavat yrittää erottaa sen toisistaan. Yhtä tärkeätä, mitä menetelmää keksit, ei saa lisätä merkittävästi komentosarjan suoritusaikaa.

Tämä saattaa kuulostaa mahdottomalta, mutta mielestäni se on toteutettavissa. Sinun täytyy vain olla motivoitunut ja sinulla on tarpeeksi aikaa käsissäsi.

Tai jos haluat pikakuvakkeen, voit yrittää liittää unix-pohjaisen python-komentosarjan tälle sivustolle ja nähdä, voitko rikkoa heidän koodinsa ja paljastaa piilotetun koodi.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...