2011-09-07 75 views
1

是否有您可以創建三塊與代碼中的難題,你可以讓你有一個加密的字符串,專爲字符串,並只爲一個內置功能的任何方式,(串以其解密形式實際上是要執行的代碼/指令)。第三個也是最重要的,最後一部分將是使功能執行成爲可能的上下文,並且該環境狀態必須是不可僞造的。所以要在匹配字符串上執行的函數只有一次,只有一個環境狀態,並在此之後過期。它必須是一個完美的時鐘機制,即使只有一個缺失,使它「不可...可打勾」(不能勾選,因爲在「功能」,當然,因爲每個部分都是至關重要的)。代碼混淆和運行時行爲更改

我在這裏談論的腳本語言,其中存在類似的eval,但它可作爲一個通用的技術。

使用某種基於各種記憶狀態和變量的「多米諾骨牌效應」,隨機或不是,您可以創建類似於「泄漏效應」的東西,讓您的代碼在結構化(但隱藏)的地方,所以最後,使用一個奇怪的工具作爲「代碼漏斗」全部安排在執行流程中。

由於我不知道這樣的事,我的話是製成品,以便能夠給出那麼任何形式的閱讀和理解的形式。

我的問題是關於這個......是否有可能?我能得到什麼幫助嗎?作爲任何想法的地方?因爲我現在找不到任何可以產生這種效果的東西。

當然,你可能會發現沒有任何理由讓我問這樣的事情,你可以說,沒有人有興趣在我的代碼,或者我遭受偏執。但仍然認爲這可能是一個理由。不,這肯定是我想知道這個的原因。

請不要噓,並跳轉到像「它明確規定,這是不是一個討論論壇」,因爲這是我與一個解決方案的一些迫切需要面臨的一個問題的結論。由於我對很多事情很少有經驗,包括嚴重的數學問題和堅實的算法思維,所以我正在呼救。所以我感謝那些會考慮這個問題的人。

回答

1

這基本上是不可能的,在一個非常基礎的層面。

你想給某人一些信息(你的代碼)。你希望他們能夠在一個特定的狀態下執行一次代碼(你沒有很好地定義)。但是您不希望他們能夠檢查該代碼,或者在其他情況下執行該代碼。不可能。

該人員機器上的程序(將執行代碼)必須能夠檢查代碼,以便能夠執行代碼。因此,該機器上的其他程序也將能夠檢查代碼。

您可以對自己的代碼,使任意程序不能檢查它,你重新獲得控制權。但是打算執行代碼的程序仍然需要檢查它,所以您必須以某種方式獲取解密代碼所需的信息。

但是現在你回到了原來的問題:你想給用戶一個特定用途的某些信息(解密密鑰)(僅在你指定的情況下解密和運行你的代碼) ),而不是其他任何人。

更有意思的是,您可以使用從您想要檢查的環境部分派生的散列值對您的代碼進行加密(在不知道要檢查的情況下如何得出密鑰是不可能說的)。然後,如果用戶(或代表他們執行您的代碼的程序)想要檢查代碼,則它必須遵循從具有正確環境的環境派生散列值的相同過程。但用戶可以安排從該環境收集散列值並保留它,以便他們隨時檢查您的代碼。

另外,我不知道你可能檢查實際上保證正確的環境。如果程序在解密自身的祕密部分並運行之前檢查它是否正確運行(沒有修改間諜代碼),那麼間諜可以輕鬆地提取加密的東西,從(未加密)檢查代碼執行什麼計算來檢查環境,然後根據「正確」環境而不是實際存在的環境進行自己的計算。

最後,你所能做的就是讓恢復最高機密代碼的過程變得更加煩人,從而消除煩惱。無論如何,大多數人永遠都不會去看你的代碼。他們只是不在乎。剩下的大多數人會放棄最輕微的阻力(儘管它可能會使用你的軟件將它們關閉)。那些仍在努力追求的人......總有一個機會(如果你的祕密代碼真的很有價值/有趣),那麼就會有足夠的動機來解決你所做的任何事情(除非你永遠不會給任何人你的代碼首先)。所以我的意圖是隻需要一點點簡單的努力來掩蓋你的密碼,而不必擔心達到完美的安全性,因爲這是不可能的。

0

您可以簡單地使用symmetric encryption加密代碼。使用隨機密鑰對其進行加密,將該密鑰存儲在計算機上,然後在加密代碼中包含一部分代碼運行時從內存中刪除該密鑰的部分。當然,在被刪除之前複製密鑰並將其恢復到內存相對容易些,但是你可以把它放在一個不太明顯的地方,我認爲不管你做什麼人都可以將計算機恢復到以前的狀態(使用backup軟件)。

+0

謝謝你的回答。到底你提到的是什麼是我的問題。難道沒有任何方法可以讓情緒不穩定嗎?或者是那些有自動執行的信息,而且它本身就是上下文,就像它結束時不能重新啓動一樣。 – khael

0

@本,有趣的介紹,我相信自從我明白可以做什麼以及不能做什麼的那一刻起,我就在想這件事。我想到你提到的每一種可能的情況,甚至更多,事實上似乎沒有辦法。也許我應該儘量限制自己,儘量讓自己頭疼。這不僅僅是一個超級祕密的代碼,因爲你命名它,但我有另一個隱藏它的意圖,就是這樣,請原諒我缺乏謙虛,它確實是一個有趣的代碼,我真的想過濾這些代碼來看看它,如果它需要一個天才從A到C而不經過B,那麼它必須要另一個人來弄清楚如何。我雖然這是我缺乏經驗,讓我失望無法解決問題。但是,我總是置身於這種看似不可能的情況之前,而且我通常會提起地獄尋找解決辦法,我管理得很好。但現在只是我不能投降。

我可能從一開始就知道答案,無論你嘗試多少都不能做,當然很容易找出原因,因爲它不正常或不正確,必須依靠你的知識和經驗來限制你正在創造的東西。考慮到這一點,很明顯,爲什麼一定有更好的方法,肯定會有人比你更好,勝過你。即使這樣,至少在我的主觀上來說,這是很麻煩的。那麼,我想我會盡我所能減少那些知道我的超級密碼的人。畢竟,上帝是偉大的謎題製造者。

無論如何,我非常感謝您的答案。

P.S.對不起,我遲到了,但因爲我8個小時不能回答我的問題,所以我不得不等待,之後我找不到任何可行的時間。