标签: reverse-engineering

如何绕过IsDebuggerPresent与OllyDbg?

我真的不明白如何绕过IsDebuggerPresent.我想我应该找到用于调试的寄存器,然后将其设置为0来欺骗IsDebuggerPresent,但我不知道该怎么做.我试着搜索谷歌,甚至尝试了一些解决方案,但它并没有真正起作用.有人可以向我解释这应该如何运作以及如何绕过这个?

reverse-engineering ollydbg

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

是否有人反过来设计Apple的iOS Remote应用程序用于控制Apple TV over IP的协议?

我很好奇我是否可以编写可以控制Apple TV的程序,特别是运行tvOS 9.1.1的Apple TV第四代,就像Apple的iOS远程应用程序一样.我想发送命令,用于在四个主要方向导航,在屏幕上选择一个项目,向上导航堆栈 - 基本上是Apple的远程应用程序可以执行的操作.

有没有人对它使用的协议进行逆向工程?到目前为止,Cursory谷歌搜索已经产生了关于早期Apple TV和DAAP协议的过时结果,这些协议看起来与我想要的不同.

reverse-engineering remote-control apple-tv tvos

14
推荐指数
2
解决办法
8561
查看次数

防止 Java 代理在运行时附加

按照 security.stackexchange 的建议在此处重新发布

如何防止 Java 代理在运行时附加到我正在运行的 Java 应用程序?

我可以通过扫描命令行参数来阻止用户在启动时使用 javaagent 启动我的应用程序:

List<String> args = ManagementFactory.getRuntimeMXBean().getInputArguments();
for(String arg : args)
{
    if(arg.contains("-javaagent"))
    {
        System.out.println("Detected Java Agent: " + arg);
        logIncident(0x01);
        Runtime.getRuntime().exit(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这并不能阻止人们在运行时附加visualvm 样式。

我听说您可以使用该-XX:+DisableAttachMechanism标志来禁用它,但是当我尝试使用时,jinfo -flag +DisableAttachMechanism <PID>我收到一个异常,告诉我无法在运行时修改此参数。

我考虑的另一种可能性是修改系统安全管理器以禁止所有 AttachPermission(我认为需要允许 java 代理附加),但我不确定从哪里开始。

非常感谢有关如何实施我已经提出的想法的任何指导,以及对任何新想法的建议。

编辑:我创建了一个自定义安全管理器来拒绝所有 AttachPermissions,但是它似乎不是在附加到的 jar 中触发,而是在代理本身中触发。现在我希望DisableAttachMechanism在运行时启用,但我似乎无法在 OpenJDK 源代码中找到对此的任何引用?

java security reverse-engineering

14
推荐指数
1
解决办法
413
查看次数

如何做好防裂保护?

我将首先说我知道不可能阻止您的软件进行逆向工程.

但是,当我看一下crackmes.de时,有一个难度等级为8和9的裂缝(在1到10的等级上).这些裂缝正在被天才大脑破解,他们写了一篇如何破解它的教程.有时,这样的教程长达13页!
当我试图制作一个crackme时,他们会在10分钟内破解它.接下来是一个长度为20行的"如何破解"教程.

所以问题是:

  • 我怎样才能做出比较好的防裂保护.
  • 我应该使用哪种技术?
  • 我该怎么学习呢?
  • ...

cracking reverse-engineering

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

IDA pro asm指令更改

我只是想知道如何在IDA-view A中更改asm指令:

  1. 如何编辑指令(例如:jnz to jmp)?
  2. 如何插入新指令(调用func1,调用func2插入现有代码)?

我知道如何制作dif文件,我知道如何应用我的DLL上的更改,但我怎么能"有所作为"?如何在IDA中编辑代码?

我学会了如何修改DLL:

  1. 修改代码(如何?)
  2. 生成dif文件.
  3. 使用dif文件和脚本将代码修改应用于DLL.

assembly reverse-engineering ida

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

编译时字符串加密

我不希望逆向工程师在我的应用程序中读取硬编码字符串的纯文本.对此的简单解决方案是使用简单的XOR加密.问题是我需要一个转换器,在我的应用程序中它将如下所示:

//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = XStr( 0x06, 0x15, 0x9D, 0xD5FBF3CC, 0xCDCD83F7, 0xD1C7C4C3, 0xC6DCCEDE, 0xCBC2C0C7, 0x90000000 ).c();
Run Code Online (Sandbox Code Playgroud)

是否有可能通过使用某些结构来维护干净的代码

//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = CRYPT("Helllo Stackoverflow!");
Run Code Online (Sandbox Code Playgroud)

它也适用于很长的字符串(1000个字符?:-)).先感谢您

c++ encryption macros reverse-engineering

13
推荐指数
4
解决办法
1万
查看次数

如何从Visual Studio 2012中编写的C#代码生成UML图表到Visio 2010?

我试图找到一种方法来从我在Visual Studio 2012中编写的C#代码生成UML图(序列图,类图等).

我在http://office.microsoft.com/en-us/visio-help/about-reverse-engineering-code-to-the-uml-HP001208803.aspx上看到了一个链接,我可以将我的Visual Studio项目带入Visio .

但它的第一部分是"在Visual Studio环境中,逆向工程是从项目菜单上的命令激活的".对我不起作用,因为我在项目菜单下找不到逆向工程选项.

如何从Visual Studio 2012中编写的C#代码生成UML图表到Visio 2010?

c# uml visio reverse-engineering visual-studio-2012

13
推荐指数
2
解决办法
4万
查看次数

模糊整个React Native应用程序,包括JavaScript代码

如何模糊我的反应原生JS代码?我在build.gradle文件中设置了以下内容:

release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
 }
Run Code Online (Sandbox Code Playgroud)

这是我的proguard-rules.pro文件(默认):

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify …
Run Code Online (Sandbox Code Playgroud)

android reverse-engineering proguard ios react-native

13
推荐指数
2
解决办法
4557
查看次数

逆向工程-这是便宜的3D距离功能吗?

我从1999年开始对一款游戏进行反向工程,我遇到了一个函数,该函数看起来是要检查播放器是否在触发音频源的3d点范围内。反编译器会破坏代码,但是我想我理解。

// Position Y delta
v1 = * (float * )(this + 16) - LocalPlayerZoneEntry - > y;

// Position X delta
v2 = * (float * )(this + 20) - LocalPlayerZoneEntry - > x;

// Absolute value
if (v1 < 0.0)
    v1 = -v1;

// Absolute value
if (v2 < 0.0)
    v2 = -v2;

// What is going on here?
if (v1 <= v2)
    v1 = v1 * 0.5;
else
    v2 = v2 * 0.5;

// Z position delta …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm math reverse-engineering

13
推荐指数
1
解决办法
169
查看次数

反编译汇编代码有多难(真的)?

我正在努力寻找有助于我的管理层理解对编译的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)

c x86 assembly decompiling reverse-engineering

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