我正在设计Flex中的应用程序,该应用程序连接到某些Web服务以执行一些金融交易.Web服务使用https协议进行保护,并要求在每次请求时登录时创建用户令牌.这用于验证和授权用户.到现在为止还挺好.
诀窍在于,并非所有的Web服务都是粗粒度的.举个例子,我们可以有两种Web服务方法:EnoughFounds和Transfer.因此,只有在方法EnoughFounds回复"true"之后,才会执行Transfer.此逻辑在Flex应用程序代码中编程.
我呈现的场景如下:如果有人下载应用程序并对其进行反编译会怎样.然后修改代码,以便不执行步骤EnougFunds.或者也许写一个全新的客户端甚至可能在其他技术中执行Transfer而不通过EnoughFunds步骤.在执行Transfer时,将在服务器上授权和验证用户; 但由于他正在使用他的真实证书,他将能够执行转移.他跳过的检查属于业务逻辑而不属于安全域.我需要以某种方式确保执行应用程序的代码是未修改的我编写的Flex代码和用户下载的代码.我怎样才能做到这一点?我知道我可以重写服务,以便在服务器上执行序列,
在我看来,必须有一些安全机制来解决这个特殊问题.
请注意,我不是在寻找有关最佳实践的建议.我的要求是不要在服务器端改变任何东西.如何在不更改服务的情况下保护协议级别的序列?
我不知道程序是用什么语言编写的,但是我想找一个可以反编译其源代码并找出它所用语言的反编译器.
如果用pascal,c,bas,vb,qb或者这种方式制作它并解码/保存为可读的.src
像exe2bin或exe2src之类的东西我有一个coupple DOS程序,我认为是用pascal制作的.我需要反编译这些程序,以便我可以使它们成为Win32应用程序.
我需要修复在.NET 4上反编译的C#代码。不幸的是,在我的工作站上仅安装了.NET 3.5,这可能是以下代码无法编译的原因:
ReportPage.<>c__DisplayClass26 <>c__DisplayClass = new ReportPage.<>c__DisplayClass26();
Run Code Online (Sandbox Code Playgroud)
<>构造在这里意味着什么?除此行外,代码中任何地方都没有c__DisplayClass26字符串。这可能意味着该名称是根据反编译过程中丢失的一些元信息构造的。
我只是在Telerik的JustDecompile中浏览我自己的一些代码,并注意到以下代码
switch (data.CurrentSection)
{
case SurveyData.CurrentSectionEnum.Section1:
divSection1.Visible = true;
divSection2.Visible = false;
divSection3.Visible = false;
break;
case SurveyData.CurrentSectionEnum.Section2:
divSection1.Visible = false;
divSection2.Visible = true;
divSection3.Visible = false;
break;
case SurveyData.CurrentSectionEnum.Section3:
divSection1.Visible = false;
divSection2.Visible = false;
divSection3.Visible = true;
break;
}
Run Code Online (Sandbox Code Playgroud)
显示为
switch (data.CurrentSection)
{
case CurrentSectionEnum.Section1:
{
this.divSection1.set_Visible(true);
this.divSection2.set_Visible(false);
this.divSection3.set_Visible(false);
break;
}
case CurrentSectionEnum.Section2:
{
this.divSection1.set_Visible(false);
this.divSection2.set_Visible(true);
this.divSection3.set_Visible(false);
break;
}
case CurrentSectionEnum.Section3:
{
this.divSection1.set_Visible(false);
this.divSection2.set_Visible(false);
this.divSection3.set_Visible(true);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是Telerik反编译器的人工制品还是我的预感是正确的,在框架的某些较低级别部分不存在"使用等号"设置运算符?如果是这样的话,任何人都可以提
对于上下文,我试图将AVM2(ActionScript虚拟机2)字节码/汇编中的反编译器编写为高级ActionScript 3代码.据我所知,这需要我分析程序集并从中生成结果控制流图,以便推导出诸如循环和条件分支(if/else)之类的结构.
鉴于一些组装如下:
0 getlocal0
1 pushscope
2 findpropstrict {, private, }::trace
4 pushstring "one"
6 callproperty {, private, }::trace (1)
9 pop
10 pushbyte 5
12 pushbyte 3
14 ifngt L1
18 findpropstrict {, private, }::trace
20 pushstring "two"
22 callproperty {, private, }::trace (1)
25 pop
L1:
26 findpropstrict {, private, }::trace
28 pushstring "three"
30 callproperty {, private, }::trace (1)
33 coerce_a
34 setlocal1
35 getlocal1
36 returnvalue
37 kill 1
Run Code Online (Sandbox Code Playgroud)
什么是生成控制流图的算法?
assembly computer-science decompiling control-flow control-flow-graph
任何人都可以建议我用什么软件进行逆向工程来反编译exe和dll文件?
我需要了解更多关于这些文件的信息,用什么语言写出来.
我一直在尝试:Olly Debug ExeToC Boomerang
我的公司使用的软件,在它的页脚部分列出了2001 - 2002年.这是否足以让人相信该计划收到的最后一次重大改革或更新将是在2001 - 02年?
如果没有,有没有办法通过反编译软件,它是用VB6编写的?
我最近发现了有关Android Studio的反编译器的信息,由于我目前正在参与一个Android项目,所以出现了一些问题。我只是尝试了一下,并且令人惊讶地生成了接近完美的代码。
如今的Java反编译器有多好?是否有防止反编译的保护机制?有什么安全隐患吗?
最好。
如果在Scala中,这val foo: Int = 0
会被反编译为:
private[this] val foo_: Int = 0
def foo: Int = foo_
Run Code Online (Sandbox Code Playgroud)
那么如何def
评估它们每次被调用但是val
只被评估一次?既然val
反编译成了def
反正呢?
我已经.so
使用retdec反编译了一个文件(来自Android应用程序中的ARM库),并且在代码中可以找到类似的指令:
int32_t a = `some value`;
int32_t b = `another value`;
*(int32_t *)(a + 4) = b;
Run Code Online (Sandbox Code Playgroud)
由于以任何值运行此命令都会在编译时产生警告,并且在运行时出现分段错误,因此我不确定它的实际作用。
decompiling ×10
assembly ×2
c# ×2
decompiler ×2
.net ×1
apache-flex ×1
arm ×1
c ×1
control-flow ×1
flex3 ×1
java ×1
scala ×1
security ×1
updates ×1
vb.net ×1
vb6 ×1
web-services ×1