能力值:
( LV2,RANK:10 )
|
-
-
2 楼
程序应该是被加壳了吧,加壳的程序一般都是这样的。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
可是PEiD显示: 什么都没找到 [Overlay] *, 这样不是指没有壳吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
主程序的代码域和dll的代码域都是可以修改的,只是这个线程里的代码改不了
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
这块内存可能是动态申请的(被加壳了?)
1.静态修改代码除非找到这块内存数据的文件原始位置进行修改,
但是可能涉及到解密算法的问题,方案基本不太可行.
2.另一种方式就是动态补丁的方式,程序执行到某个时机,直接修改线程所在的汇编指令即可
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
对于您所说的第1点: 您是指程序在运行的过程中,动态申请了一段内存,然后程序将代码复制到这块内存中。是这个意思吗?不知道我的理解是否有正确?
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
是的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
如果是这样,那么该如何编写CreateThread或者_beginthread调用的函数地址?传动态申请的内存地址的起始地给这两个函数吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
非常感谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
64位系统堆栈段区域默认是不能执行代码的,除非修改段寄存器,
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
请问该具体如何修改呢?我的问题是否有其他的可能?
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
线程的线程起始地址是用户定义的, 你这个应该是子程序有壳或者主程序加载子程序的时候有意隐藏这个模块
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
子程序我也用PEID查过了,其它的dll文件也是,都显示没有壳。请问它是如何隐藏这一模块的(有什么办法可以查看出来?),难道“xhbuming"所说的方法真的不行吗?
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
PEiD的结果仅供参考.
尝试提取内存中子程序线程地址上的特征码, 在物理文件中去搜索, 如果找到, 改之, 没有自校验的话就算完成了.
隐藏模块就是自己从内存中加载
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
您是指: 由父程序将dll载入内存中,然后子程序再从内存中找到该函数吗?但是该如何寻找到多许的函数地址?像PE头分析工具那样分析父程序的输入表,从中找到所需的函数地址吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
我在64位的window8.1中尝试了一下代码:, 发现是可以的, 代码如下:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char *a = new char[4];
a[0] = 106;
a[1] = 1; //6A 01 push 1
a[2] = 88; //58 pop eax
a[3] = 195; //C3 ret
__asm{
call a;
}
return 0;
}
请问是我哪里理解错了吗?希望能够予以解答
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
非常感谢, 可惜给不了分了!
|
|
|