标签: reverse-engineering

您是否曾使用代码虚拟器或vmprotect来防止逆向工程?

我知道没有办法完全保护我们的代码.我也知道,如果用户想要破解我们的应用程序,那么他或她不是购买我们的应用程序的用户.我也知道改善我们的应用程序更好..而不是害怕防裂技术.我也知道没有商业工具可以保护我们的应用....我也知道....

好.足够.我听到了一切.我真的认为增加一点保护不会受到伤害.

所以....你曾经使用过来自oreans或vmprotect的代码virtulizer吗?我听说他们有时被某些杀毒软件检测为病毒.

在购买之前我应该​​注意的任何经验.我知道它会创建一些虚拟机并对代码进行模糊处理,以便更难找到注册例程的弱点.

有什么警告我应该知道吗?

谢谢.任何意见,将不胜感激.

乱切

cracking reverse-engineering

16
推荐指数
2
解决办法
1万
查看次数

我如何对加密算法进行逆向工程?

我写了一个以这种方式加密文本的应用程序:

  1. 获取输入文本

  2. 翻译文字

  3. 转换为十六进制

  4. 与钥匙的XOR

  5. Base64编码

现在,我自己没有进行大量的加密/编码,所以我的问题可能听起来很愚蠢,但是,我说我得到的文件中包含上述算法的内容而且我不知道这个算法.如何开始"打破"文本,是否有任何指导方针,原则,规则可以遵循?

我的问题与这5个步骤无关,这是一个纯粹的例子.

作为另一个例子,取文字:A751CD9E1F99.我该如何开始调查这可能意味着什么?

encryption encoding reverse-engineering

16
推荐指数
4
解决办法
3万
查看次数

如何反向设计REST-Web服务

我目前正在尝试对一个缺乏文档的私有REST-Web服务进行逆向工程.我唯一知道的是,它是用PHP编写的,使用ZendFramework.是否有任何简单的方法可以找出,允许哪些操作以及我必须提供哪些参数才能使服务正常工作?

招呼,罗布

php rest reverse-engineering

16
推荐指数
2
解决办法
1242
查看次数

用于C++的UML免费逆向工程工具(.h/.cpp ==>类图)

有哪些工具可用于从一组.h-或.cpp文件创建UML 图?

我在寻找......

  • 免费的
  • Windows上开箱即用
  • 不需要任何特定的IDE
  • 理想情况下提供GUI

c++ uml class-diagram reverse-engineering

16
推荐指数
2
解决办法
5万
查看次数

为什么这段代码能让我检测调试器?

为什么以下汇编代码是反调试工具?

l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
Run Code Online (Sandbox Code Playgroud)

我知道C3hRETN,我知道根据偏移量stobs将值al作为操作码写入,edi并且ecx因为时间而完成rep.

我也知道的事实,stobsstosw会如果他们是基于英特尔架构的预取为原来的形式进行.

如果我们以调试模式运行程序,预取是无关紧要的,并且l2标签将运行(因为它是单步)否则如果没有调试器它将在l1和l3之间打乒乓我对吗?

windows debugging x86 assembly reverse-engineering

16
推荐指数
1
解决办法
672
查看次数

逆向工程.pyd文件有多难?

阅读后如何保护Python代码?,我决定在Windows上尝试一个非常简单的扩展模块.我之前在Linux上编译了自己的扩展模块,但这是我第一次在Windows上编译它.我期待得到一个.dll文件,但相反,我得到了一个.pyd文件.Docs说他们有点相同,但它必须有一个init[insert-module-name]()功能.

假设它是安全的,像dll文件一样难以对它们进行反向工程.如果没有,那么从.pyc文件到.dll文件的规模进行逆向工程的硬度是多少?

python reverse-engineering pyd pyc

16
推荐指数
1
解决办法
3万
查看次数

逆向工程iWork '13格式

Apple的iWork套件的早期版本使用了非常简单的文档格式:

  • 文件是捆绑资源(文件夹,拉链或不压缩)
  • bundle包含一个index.apxl[z]文件,用于描述专有但相当容易理解的模式中的文档结构

iWork '13完全重做了格式.文件仍然包,但什么是索引XML文件中现在在一组用型号后缀二进制文件编码.iwa打包成Index.zip.

例如,在Keynote中,有以下iwa文件:

AnnotationAuthorStorage.iwa
CalculationEngine.iwa
Document.iwa
DocumentStylesheet.iwa
MasterSlide-{n}.iwa
Metadata.iwa
Slide{m}.iwa
ThemeStylesheet.iwa
ViewState.iwa
Tables/DataList.iwa
Run Code Online (Sandbox Code Playgroud)

对于MasterSlides 1 ... nSlides 1 ... m

从命名的角度来看,每个目的都非常明确.这些文件甚至看起来都是未压缩的,基本上所有内容文本都直接在二进制blob中作为字符串显示(尽管在可读的ASCII字符中有一些像RTF/NSAttributedString /类似相关的垃圾).

我在这里发布了Index一个简单示例Keynote文档的解压缩:https://github.com/jrk/iwork-13-format.

但是,整体文件格式对我来说并不明显.Apple长期使用简单的平台标准格式(如plist)来编码大部分文档,但文件开头没有明确的类型标记,对我来说这些iwa文件并不明显.

这些文件会响铃吗?有证据表明他们有一些合理易懂的序列化格式吗?

使用F-Script通过Keynote应用程序运行时和类转储进行翻查,我发现的唯一证据是在序列化类中使用了协议缓冲区,这些类似乎用于iWork,例如:https://github.com/ nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/iWorkImport.framework/TSPArchiverBase.h.

快速管理一些文件通过最后protoc --decode_raw的0 ... 16字节丢失产生任何明显可用的东西.

format macos cocoa serialization reverse-engineering

16
推荐指数
1
解决办法
5154
查看次数

DJ Bernstein的'primegen'计划中10 ^ 15的限制来自哪里?

http://cr.yp.to/primegen.html,您可以找到使用Atkin筛子生成素数的程序源.正如作者所说,回复发送给他的电子邮件可能需要几个月的时间(我明白,他肯定是一个被占领的人!)我发布了这个问题.

该页面指出'primegen可以生成高达1000000000000000的质数'.我试图理解为什么会这样.当然有一个限制,最多2 ^ 64~2*10 ^ 19(长无符号整数的大小),因为这是数字的表示方式.我肯定知道,如果存在巨大的空隙(> 2 ^ 31)那么打印数字就会失败.然而,在这个范围内,我认为没有这样的优势差距.

要么作者高估了界限(实际上它大约是10 ^ 19),要么在源代码中有一个位置,算术运算可以溢出或类似的东西.

有趣的是,你实际上可以为数字> 10 ^ 15运行它:

./primes 10000000000000000 10000000000000100
10000000000000061
10000000000000069
10000000000000079
10000000000000099
Run Code Online (Sandbox Code Playgroud)

如果你相信Wolfram Alpha,这是正确的.

我有一些"逆向工程"的事实:

  1. 数字分批筛选1,920*PRIMEGEN_WORDS = 3,932,160(参见primegen_next.c中的primegen_fill函数)
  2. PRIMEGEN_WORDS控制单个筛选的大小 - 您可以在primegen_impl.h中调整它以适合您的CPU缓存,
  3. 筛子本身的实现是在primegen.c文件中 - 我认为它是正确的; 你得到的是pg-> buf中的素数位掩码(参见primegen_fill函数)
  4. 分析位掩码并将素数存储在pg-> p数组中.

我认为溢出可能发生的地方没有意义.

cryptography reverse-engineering

15
推荐指数
1
解决办法
479
查看次数

良好的软件工程与安全性

安全性和设计准则去大篇幅概述的各种方法,使之更加难以攻击者危及应用内结算的实施.

特别值得注意的是.apk,即使通过Proguard进行模糊处理,对文件进行反向工程也是多么容易.因此,他们甚至建议修改所有示例应用程序代码,尤其是"已知入口点和出口点".

我发现缺少的是在单个方法中包含某些验证方法的任何引用,例如Security.verify()返回的静态boolean:一个好的设计实践(减少代码重复,可重用,更容易调试,自我记录等)但是所有攻击者现在需要做的就是找出那种方法并让它始终返回true......所以无论我使用它多少次,延迟或不延迟,随机或不随意,它都无所谓.

另一方面,Java没有像C/C++那样的宏,它允许减少源代码重复,但没有verify()函数的单个退出点.

所以我的问题:

众所周知的软件工程/编码实践与所谓安全设计之间是否存在内在争用?(至少在Java/Android /安全交易的背景下)

可以采取哪些措施来缓解"安全设计"的副作用,这种副作用似乎是"在脚下拍摄"过度复杂的软件,这些软件本来可以更简单,更易于维护和更容易调试?

你能推荐一些好的资料来进一步研究这个课题吗?

java encryption android decompiling reverse-engineering

15
推荐指数
2
解决办法
759
查看次数

逆向工程校验位算法

我正在尝试对用于生成校验位的算法进行逆向工程.

数字长8位,最后一位是校验位.我有成千上万的有效数字来测试它.

我尝试过标准的Luhn,Verhoeff和modulo-10算法(对所有可能的权重进行强力检查),但找不到答案!

有可能计算出来吗?有任何想法吗?

以下是有效数字的一些示例:

1002784-5
1000514-7
1001602-8
1001255-2
1001707-1
1003355-5
1005579-1
1004535-0
1004273-1
1001695-9
1004565-9
1000541-9
1001291-1
1005866-1
1004352-7
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你们 - 遗憾的是我没有访问代码.该号码是一个税号,我需要能够验证该号码是否输入正确.从我的研究看起来大多数国家都使用非常标准的模10型系统.我可以访问大约6万个号码.

我知道问题可能无法解决,更多的是学术上的关注.

algorithm reverse-engineering check-digit

15
推荐指数
1
解决办法
2406
查看次数