小编Pol*_*ial的帖子

x86逆转挑战中的打包和加密部分,没有绊倒熵启发式

任务:

我正在构建一组x86汇编逆向工程挑战,其中我已经完成了大约20个左右.他们只是为了娱乐/教育.

当前的挑战是更先进的挑战之一,并且涉及一些技巧,使得它看起来像EP实际上在正常程序中,但它实际上被包装在另一个PE部分中.

继承人的基本流程:

  • 开始就好像它是一个普通的MSVC++应用程序.
  • 向一堆反调试器技巧注入一个偷偷摸摸的电话.
  • 如果它们通过,则内存中的DWORD设置为1.
  • 稍后在程序流程中,它检查该值是否为1,如果它有效,则解密一个小的调用表.如果它失败了,它就会通过疯狂的反调试技巧将它们发送出去,最终只会崩溃.
  • 调用表指向解密实际程序代码段的真实解密例程.
  • 调用解密例程,并使用基本循环xor解密(C ^ k ^ n,其中C是密文,k是32位密钥,n是当前数据偏移)
  • VirtualProtect用于将部分的保护标志从RW切换到RX.
  • 控制流被重定向到OEP,程序运行.

这个想法是因为他们认为他们处于正常的程序流程中,这使得他们错过了反调试和后来的检查.无论如何,一切正常.

问题:

目前的问题是,OllyDbg和其他一些工具会查看打包部分并发现它具有较高的熵,并发出一个警告,说它已经打包了.PE头中的代码段指针是正确设置的,所以它不会从EP外部代码中得到它 - 它纯粹是一个熵分析的东西.

题:

有没有我可以使用的加密方法保留低熵,但仍然很容易在x86 asm中实现?我不想使用普通的xor,因为它太容易了,但我也不希望它像包装一样抓住它并让游戏消失.

我想到了一个类似洗牌器的东西(以某种方式生成一个密钥流并使用它来交换4字节的代码块),但我不确定这是否会起作用,甚至是简单的.

有人有任何想法吗?

windows encryption x86 assembly reverse-engineering

5
推荐指数
1
解决办法
760
查看次数

内联汇编(__asm)块是否可以阻止功能优化?

使用Microsoft Visual C++(不是CLI,只是标准的本机C++)时,内联汇编会导致函数禁用优化吗?

当我使用IDA检查时,块外部的一些功能代码似乎确实发生了变化,但我不确定原因是什么.该函数(相对)简单,包含位操作和一些数学,但没有外部调用.

我能想到的其他可能原因是:

  • 额外配置以启用内联汇编中的调试.
  • 异常处理的改变(虽然看起来不是这样)
  • 由于某些未知的编译器逻辑而导致的其他内容的部分内联.

有任何想法吗?

c++ x86 inline-assembly visual-c++

5
推荐指数
1
解决办法
440
查看次数

一个进程是否有可能在没有管理特权的情况下将代码注入到另一个进程中?

CryptProtectMemoryDPAPI中的API允许您传递该CRYPTPROTECTMEMORY_SAME_PROCESS标志,从而防止其他进程解密内存。解决此问题的一种方法是使用OpenProcessWriteProcessMemoryCreateRemoteThread将代码注入目标进程并进行调用CryptUnprotectMemory,从而解密内存并将其泄漏给另一个进程。

假设两个进程都在Windows Vista或更高版本上的同一受限特权用户(即非管理员)的上下文中运行,这是否仍然可能?我给人的印象是,无论进程ACL是什么,进程内存写操作都被限制的用户拒绝,但我可能是错的。

windows security winapi dpapi cryptoapi

5
推荐指数
1
解决办法
2923
查看次数

我如何知道自上次TFS结账以来我实际更改了哪些文件?

我在VS2010中检查了一堆来自TFS的文件,并对其中几个进行了更改.如何查看实际更改的文件?

tfs visual-studio-2010

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

phonegap的基础知识

我开始使用phonegap为iphone/androids创建一个基于Web的应用程序.

我不明白为什么它有不同的iPhone和Android平台,当我们应该创建一个适合这两个平台的应用程序.此外,Facebook与phonegap的集成根据我正在进行的平台而有所不同.

我的问题是:

  1. 我应该创建两个项目,一个用于iphone,一个用于带有phonegap的android?

  2. 如果是,那么手机的重点是什么?

iphone mobile android cordova

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

PE目录的名称

我正在研究一种PE解剖器,并且遇到了一些非常不寻常的事情.PE格式中目录的名称和顺序似乎根据您的外观而有所不同:

PEReader(perdr):

#define IMAGE_DIRECTORY_ENTRY_EXPORT          0   // Export Directory
#define IMAGE_DIRECTORY_ENTRY_IMPORT          1   // Import Directory
#define IMAGE_DIRECTORY_ENTRY_RESOURCE        2   // Resource Directory
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION       3   // Exception Directory
#define IMAGE_DIRECTORY_ENTRY_SECURITY        4   // Security Directory
#define IMAGE_DIRECTORY_ENTRY_BASERELOC       5   // Base Relocation Table
#define IMAGE_DIRECTORY_ENTRY_DEBUG           6   // Debug Directory
#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE    7   // Architecture Specific Data
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR       8   // RVA of GP
#define IMAGE_DIRECTORY_ENTRY_TLS             9   // TLS Directory
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    10   // Load Configuration Directory
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11   // Bound Import …
Run Code Online (Sandbox Code Playgroud)

windows winapi executable coff portable-executable

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

在PHP中测试高达100MB的随机字符串的有效方法?

出于测试目的,我需要一个这样的函数:

/**
 *  @param int $sizeInBytes
 *
 * @returns string with random data
 */
function randomData($sizeInBytes)
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

任何有效实施的想法?需要速度但不是真正的随机性(更像是一种"lorem ipsum").我最简单的想法是在文件系统中使用真正的大文件并通过流获取所需的大小.但这需要至少100MB的文件.有没有更好的办法?

php random

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

UAC 风格的提升提示

我有兴趣在临时会话中启动一个窗口,例如 UAC 提示的显示方式。有几个人对这个概念感兴趣,所以我想我会在这里问。本质上,我们想要的是一个像 UAC“你确定要<...>”提示的提升窗口,但带有任意窗口。最终目标是防止窗口事件挂钩和密码输入期间可能发生的各种其他问题。

我快速浏览了 UAC API 和其他一些地方,但没有什么特别有用的地方。显然 UAC 提示以某种方式提升到他们自己的桌面会话,所以必须有一种方法来以这种方式创建窗口。

c# windows security winapi uac

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

在C++中,`var << ifstream`与`ifstream >> var`相同吗?

var << ifstream一样的ifstream >> var吗?

据我所知,它们应该完全相同.但现在已经很晚了,我的大脑半睡半醒,所以我想澄清一下.

c++ extraction ifstream insertion

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

$(this).src和document.getElementById().src之间的区别?

在当前的项目中,我正在使用jQuery.我只是想知道为什么会这样,

$('#homeIcon').hover(function(){
    document.getElementById('homeIcon').src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)

但这不会:

$('#homeIcon').hover(function(){
    $(this).src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)

这些方法不应该完全一样吗?

FYI homeIcon<img>.

javascript jquery

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