在我的 Haskell 应用程序中,我实现了以下机制来将敏感信息传递到二进制文件(不诉诸 CLI 参数):
TemplateHaskell
在编译时读取环境变量的机制:{-# LANGUAGE TemplateHaskell #-}
...
import Language.Haskell.TH.Env
...
myPrecious :: String
myPrecious = fromMaybe "" $$(envQ "MY_PRECIOUS")
...
Run Code Online (Sandbox Code Playgroud)
MY_PRECIOUS=<secret> stack build
然后它绑定到myPrecious
Haskell 端MY_PRECIOUS
看不到它ps aux
问题是,我现在可以在文本编辑器中打开该二进制文件或创建内存转储(例如使用 GDB),并通过一点决心挖掘秘密,特别是如果我知道它正在使用的上下文 - 我假设某些恶意行为者可能已经获得了源代码的访问权限。所以我一直想知道,是否有任何方法可以强制 GHC 生成更加混乱/乱码的二进制文件,其中这些值不容易可见。我知道没有这样的保护方案可以是万无一失的,但我正在寻找一种方法来使入侵者的任务变得更加困难。
编译的所有exes都可以反编译(但有一些困难),但delphi应用程序表单保存为exe内部的dfms,可以很容易地看到(使用reshacker)(soooo很容易)我可以克服这些问题,首先我想到将dfm数据复制到oncreate程序,所以我可以隐藏我的表格信息.
告诉我一个很好的解决方案,
我不喜欢使用压缩机
而我的应用程序有点大,所以我不能将一个接一个端口重新连接到一个DLL.我需要一个有效的解决方案
我尝试打开.exe的东西(我认为是视觉基本语言)
恩.
Private Class JtoJyfwFywdp0oMhf7T82oYvUAlifLO1N3P64NAlifLO1N3P64NAT9q3iTiG85jA
Private YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0 As String()
Private hnpXEECHeSKX2l6BD3S1H70sRAl6BD3S1H70sRAObgZQEm4Lcg3A2YKefpb5kBYA As XNamespace()
Private 2YKefpb5kBYM3tOXycdgIwnyAAyLV2mDpIfM9uAyLV2mDpIfM9uACCAOK0G5Sxe0 As List(Of XAttribute)
<EditorBrowsable(EditorBrowsableState.Never)>
Friend Sub New(inScopePrefixes As String(), inScopeNs As XNamespace(), attributes As List(Of XAttribute))
Me.YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0 = inScopePrefixes
Me.hnpXEECHeSKX2l6BD3S1H70sRAl6BD3S1H70sRAObgZQEm4Lcg3A2YKefpb5kBYA = inScopeNs
Me.2YKefpb5kBYM3tOXycdgIwnyAAyLV2mDpIfM9uAyLV2mDpIfM9uACCAOK0G5Sxe0 = attributes
End Sub
Run Code Online (Sandbox Code Playgroud)
....有理解它的方法吗?
Private YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0
Me.YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0
Run Code Online (Sandbox Code Playgroud)
我知道它的变量,但我想知道一个真正的变量
预计
Private YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0 = Private model1 As String()
Me.YWWmY1YGZHRJ1YWWmY1YGZHRJAcyz5jqj3lGWaAXJ0BrSt4pTmrAXJ0BrSt4pTm0 = me.model1
Run Code Online (Sandbox Code Playgroud) 由于项目需要,需要对C#程序集进行反编译。根据同事的推荐使用 Relector 下面是一个示例:
internal class WebTreeDialogPage : WebXmlHttp2Page
{
public WebTreeDialogPage()
{
this.Source = new EasySearch2DataSet();
base.Style = PageStyle.Custom;
base.Operation = "TreeExpand";
}
protected override void DoPost()
{
base.DoPost();
this.GetXsltFile();
base.Response.ContentEncoding = Encoding.UTF8;
string content = this.Transform.TransformContent(base.IsIe);
if (AppSettings.Current.Debug)
{
FileUtil.SaveFile(AppSettings.Current.XmlPath + "EasySearch.html", content);
}
base.Response.Write(content);
}
}
Run Code Online (Sandbox Code Playgroud)
Decompiled code base.Response.ContentEncoding = Encoding.UTF8
Why is there an error in Encoding.UTF8, suggesting that "string" does not contain the definition of "UTF8".
And there are "Cannot find extension method 'UTF8' that accepts …
我一直在使用反射器来反编译几个简单的c#应用程序,但我注意到虽然代码被反编译,但我仍然看不到它们写在VS上的东西.我认为这就是编译器用机器代码替换人类指令的方式.但是我想我会尝试一下并在这里问一下.也许有一个反编译器可以反编译并显示与原始代码几乎完全相同的编码.
作为某个时间点的项目,我想制作自己的Java反编译器,将字节码转换回纯文本.
我为谷歌做了一些API,让我这样做,但我找不到.
所以我的问题是:我如何反编译类文件?
如果有API并且我错过了,请告诉我.
我知道书籍问题是不受欢迎的,但你认为Godfrey Nolan的编译Java语言是一个好的开始吗?