我正在研究应用程序的许可证密钥的最佳加密,有人说有人可以轻松地反编译应用程序,然后只是跳过许可证密钥的测试.
实际上,有人会如何做到这一点?所以他们有我的.dll,他们必须以某种方式反编译,然后注释掉函数调用以检查许可证,然后重新编译它?反编译器必须非常好,以便代码仍然可以编译!
我和一些朋友正在讨论这个问题,我们开始怀疑这一点.有人可以在购买应用后获得对实际objective-c代码中包含的URL或其他值的访问权限吗?
我们最初的感觉是否定的,但我想知道那里的人是否有某种确切的知识?
我知道.plist文件随时可用.
例子可能是这样的:
-URL值保存在字符串中
-API密钥和秘密值
我有一个java jar,我已经使用原始开发人员的许可进行了反编译,我们将使用它直到他们可以获得源代码的副本.我遇到了类似于以下内容的成员:
Classname.access$002(Param1, Param2);
Run Code Online (Sandbox Code Playgroud)
类名是正确的,但访问$ 002看起来不正确(除了名称访问$ 204并且末尾附加了其他数字之外,还有其他几个这样的),我想知道这是否意味着Java中的任何内容或者是否是因为反编译操作不完整.
我正在使用JD-GUI来反编译类.
还值得一提的是,没有与访问$ 002方法具有相同签名的方法,至少在类Classname中.
首先,我创建了一个测试程序集HelloWorld.dll,我想调试它并使用发布配置构建它.
namespace HelloWorld
{
public class HelloClass
{
public string SayHello(string name)
{
return "Hi " + name + "!";
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了标准的ASP.NET MVC项目并:
HelloWorld.dll装配修改了HomeController的About方法
public ActionResult About()
{
var testingClass = new HelloClass();
ViewBag.Message = testingClass.SayHello("John");
return View();
}
Run Code Online (Sandbox Code Playgroud)通过.NET Reflector对象浏览器反编译HelloWorld程序集
~/Home/About页面中运行调试结果:Brekpoint从未被击中.
当我去Debug -> Windows -> Modules它时似乎HelloWorld.dll加载了汇编的符号:

那么,我做错了什么?
编辑:我正在使用Visual Studio 2015 Update 1和RedGate Reflector 8.5
我有几个非常老的基于MSDos的绘画程序.它们适用于调色板索引图像缓冲区.它们具有许多壮观的形状绘制工具,画笔和效果,在任何现代绘画程序中都不存在 - 特别是在保持在低调色板索引图像的"边界"内时.我想在现代程序中重现许多这些奇妙的工具,或许让我们再次更容易访问自己和普通大众,而无需启动像dosbox这样的模拟器.但我有一个问题.
虽然很多这些画笔和工具都有明显的功能,但其实现应该相当简单.但是使用其他工具,他们的操作原则并不那么明显.我将无法确定一个正确或忠实的算法来实现这些.
如果你是我,你会采取什么方法?是否有现成的反编译器/反汇编器可以处理这样的旧程序?或者你会采取一些不同的方法,例如有条不紊地测试不同输入的算法,以推断潜在的功能?不同技术的某种组合?对于这些程序的一行,这些(商业)程序的原作者是已知的,现在是狂热的开源倡导者.我应该尝试直接与他们联系并询问吗?我对逆向工程并不是特别有经验,所以我不知道从哪里开始.
编辑:似乎"问,你们应该接受"真的有效.
编辑2:查看http://animatorpro.org获取我获取源代码的程序的源代码.豪华油漆也不错,但丹席尔瓦似乎已经从地球上消失了.
嘿,我正在使用Enumerable.Sum()LINQ 的扩展方法来计算哈希码,并且OverflowExceptions在代码变大时遇到问题.我尝试将电话放在一个unchecked区块中,但这似乎没有帮助.
该方法的MSDN文档说,如果值太大,它将抛出,但我检查了反射器,这就是:
public static int Sum(this IEnumerable<int> source) {
if (source == null) {
throw Error.ArgumentNull("source");
}
int num = 0;
foreach (int num2 in source) {
num += num2;
}
return num;
}
Run Code Online (Sandbox Code Playgroud)
根据这个反编译,我希望它可以溢出或不取决于调用代码的上下文.为什么它会溢出,我怎么能让它停止?
我不得不重新编译一些代码,我不知道这个语法是什么?你们可以帮忙,还是指点一下这是什么意思?我用Google搜索并搜索了这个网站,找不到任何东西.
只需一行代码:
Rectangle pageBounds;
// ISSUE: explicit reference operation
// ISSUE: variable of a reference type
Rectangle& local = @pageBounds;
Run Code Online (Sandbox Code Playgroud)
@Rectangle对象类型末尾的符号是什么,变量@之前的符号是什么pageBounds?
这是我需要修复的最后一行代码,以便再次编译这个可执行文件.
这是使用此语法的方法,我可以删除它吗?
protected override void OnPrintPage(PrintPageEventArgs e)
{
Application.DoEvents();
++this._pageNum;
float num1;
if (this.Header != null)
{
num1 = this.Header.CalculateHeight(this, e.Graphics);
this.Header.Draw(this, (float) e.MarginBounds.Top, e.Graphics, e.MarginBounds);
}
else
num1 = 0.0f;
float num2;
if (this.Footer != null)
{
num2 = this.Footer.CalculateHeight(this, e.Graphics);
this.Footer.Draw(this, (float) e.MarginBounds.Bottom - num2, e.Graphics, e.MarginBounds);
}
else
num2 = 0.0f; …Run Code Online (Sandbox Code Playgroud) 我正在努力寻找有助于我的管理层理解对编译的C代码进行逆向工程的难易程度的事实.
之前在这个网站上已经提出了类似的问题(参见例如,是否可以"反编译"Windows .exe?或者至少查看程序集?或者可能反编译用C编写的DLL?),但这些问题的要点是反编译编译的C代码"很难,但并非完全不可能".
为了促进基于事实的答案,我包含了一个神秘函数的编译代码,我建议这个问题的答案通过它们是否可以确定这个函数的作用来衡量所提出技术的成败.这可能是不寻常的,但我认为这是获得这个工程问题的"良好主观"或事实答案的最佳方式.因此,你最好猜测这个功能在做什么,以及如何做?
这是使用gcc在Mac OSX上编译的已编译代码:
_mystery:
Leh_func_begin1:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
movsd LCPI1_0(%rip), %xmm1
subsd %xmm0, %xmm1
pxor %xmm2, %xmm2
ucomisd %xmm1, %xmm2
jbe LBB1_2
xorpd LCPI1_1(%rip), %xmm1
LBB1_2:
ucomisd LCPI1_2(%rip), %xmm1
jb LBB1_8
movsd LCPI1_0(%rip), %xmm1
movsd LCPI1_3(%rip), %xmm2
pxor %xmm3, %xmm3
movsd LCPI1_1(%rip), %xmm4
jmp LBB1_4
.align 4, 0x90
LBB1_5:
ucomisd LCPI1_2(%rip), %xmm1
jb LBB1_9
movapd %xmm5, %xmm1
LBB1_4:
movapd %xmm0, %xmm5
divsd %xmm1, %xmm5
addsd %xmm1, %xmm5
mulsd …Run Code Online (Sandbox Code Playgroud) 我做了很多工作,使用不同的逆向工程工具分析 Android 项目,通常是出于安全目的,看看黑客在获取我的应用程序时可以看到什么。我遇到了一个问题,我找不到任何能够反编译“XAPK”格式(不是简单的 APK)文件的反编译器。我知道,寻求找到工具的方法并不是适合堆栈溢出的问题,但我很确定有很多人有同样的问题,而且我发现它非常相关。我尝试了apk-tool,与androguard工具一起提供的反编译器,在线反编译器,它们都不能使用 XAPK。
我正在尝试对Android游戏进行逆向工程,以找出其计算背后的逻辑.
提取.apk文件后,/ assets/lua文件夹中有lua脚本,所有文件都有.lua扩展名.但是,如果使用Text/HEX编辑器打开,则它们不是人类可读的.
例如:这个文件
所有文件的内容以"droi.lua"签名结尾,让我觉得这不是LUA脚本,而是Android的某种压缩LUA脚本.而且Android有一种压缩文件用于发布的机制.
有谁之前经历过这个吗?有没有办法让这种文件可读?
是否有任何方法/程序可以解压缩从.apk资产中提取的文件(例如png,lua等)?
decompiling ×10
.net ×2
android ×2
c# ×2
apk ×1
assembly ×1
c ×1
compression ×1
debugging ×1
decompiler ×1
disassembly ×1
dos ×1
iis ×1
iphone ×1
java ×1
linq ×1
lua ×1
objective-c ×1
paint ×1
reflector ×1
security ×1
x86 ×1