能力值:
( LV3,RANK:20 )
|
-
-
2 楼
第一个PUSH EAX和下面的POP EDX是对应的,存放的都是申请的空间,
因为解压过程会破坏EAX的内容,所以先入栈保存,然后再恢复.
把代码解压到那以后,跳过去执行.
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
谢谢!
也就是说
push eax
push ebx
在call _aP_depack_asm 中释放了?
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
那是_aP_depack_asm的2个参数,_aP_depack_asm是自平衡堆栈的
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
fuapfdw_isNT:
mov eax, [eax+0ch]
mov eax, [eax+0ch] ;指向InLoadOrderModuleList处
mov dword ptr [eax+20h], 1000h ;可是这句是什么作用?
jmp fuapfdw_finished
附录:
struct _PEB_LDR_DATA
。。。
+0x00c InLoadOrderModuleList : struct _LIST_ENTRY, 2 elements, 0x8 bytes
。。。
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
typedef struct _LDR_MODULE
{
LIST_ENTRY InLoadOrderModuleList; // +0x00
LIST_ENTRY InMemoryOrderModuleList; // +0x08
LIST_ENTRY InInitializationOrderModuleList; // +0x10
PVOID BaseAddress; // +0x18
PVOID EntryPoint; // +0x1c
ULONG SizeOfImage; // +0x20 //注意这个.
UNICODE_STRING FullDllName; // +0x24
UNICODE_STRING BaseDllName; // +0x2c
ULONG Flags; // +0x34
SHORT LoadCount; // +0x38
SHORT TlsIndex; // +0x3a
LIST_ENTRY HashTableEntry; // +0x3c
ULONG TimeDateStamp; // +0x44
// +0x48
} LDR_MODULE, *PLDR_MODULE;
详细资料看这
http://www.nsfocus.net/index.php?act=magazine&do=view&mid=2002
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
;*******压缩
mov eax,ShellSize_NoPack
mov edx, 9 ;下面几句的原理是什么?即为何是9 ,3,16等数字
mul edx
shr eax,3
add eax,16
mov MEMSize,eax ;计算需要占用的内存空间
invoke VirtualAlloc, NULL, eax, MEM_COMMIT, PAGE_READWRITE
mov MEM, eax
invoke aP_pack,ShellBufferMap,MEM,ShellSize_NoPack,lpPackBuffer,0
谢谢
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
这几个数字应该和APLIB压缩后文件存储的格式有关,具体不是很清楚。这段计算实际上APLIB库里已经提供了一个函数进行类似的处理。
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
希望有人能够解答
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
希望有人能够帮忙看看
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
请帮忙找一下我的错误在哪里
|
|
|