能力值:
( LV12,RANK:441 )
2 楼
我这边怎么就能用?Lz确认你配置的没问题?
能力值:
( LV2,RANK:10 )
3 楼
我是在两个系统上,同样的加壳后的一个文件,一个能运行,一个不能运行
反汇编跟踪,在 恢复原输入表中,
if eax==0
push esi
call dword ptr [ebp+(LoadlibraryADDR-ShellStart)]
这个函数的地址错误,不知道为什么
能力值:
( LV2,RANK:10 )
4 楼
接上面的
就是加载DLL动态库函数的时候出错
这个上述的地址是在上面的一个函数call dword ptr [ebp+(GetprocaddressADDR-ShellStart)]
加载的地址
一个用这个函数循环加载了3个函数,
'GetProcAddress',
'GetModuleHandleA',0
'LoadLibraryA',0
不能运行,是因为加载这三个函数地址的时候,就中间一个是正确的,所以导致后面的错无,
不知道什么原因,请高手指教
能力值:
( LV3,RANK:20 )
5 楼
不是很明白你的问题。
FirstFunc DW 0
DB 'GetProcAddress',0
SecondFunc DW 0
DB 'GetModuleHandleA',0
ThirdFunc DW 0
DB 'LoadLibraryA',0
是组成外壳的输入表,并没有主动的去取地址。
能不能说得更详细一点,比如是执行shell.asm的哪段代码出错的。行号是多少。
那台出错的机器是不是装了什么杀毒的或者主动防御的东西?
能力值:
( LV2,RANK:10 )
6 楼
我把杀毒软件退出也是有问题,是PE加载器加载外科输入表的时候,三个函数的地址只有GetModuleHandleA地址是正确的,其他两个的是错误的:
在OLLYICE加载完没有执行代码后,三个地址分别为:7C883FEC 7C80B6A1 7C883F9C
所以导致在执行到
next0:
pop ebp
sub ebp,(ImportTable-ShellStart0)
;////////////////////////////////////////////////以下代码是处理DLL时起作用
mov eax, dword ptr [ebp+(ShellStep-ShellStart0)]
.if eax != 0;dll文件退出时走这里
push ebp
jmp dword ptr [ebp+(ShellBase2-ShellStart0)]
.endif
inc dword ptr [ebp+(ShellStep-ShellStart0)]
mov eax, dword ptr [esp+24h]
mov dword ptr [ebp+(imagebase-ShellStart0)], eax;取当前映像基址,如果是EXE在后面会用Getmulehandle取基址的
;////////////////////////////////////////////////
lea esi,[ebp+(DllName-ShellStart0)]
push esi
call dword ptr [ebp+(AddressSecond-ShellStart0)]
//这里调用GetModuleHandleA函数,地址正确,不会有问题
//ebp+(AddressSecond-ShellStart0) 地址的数值为7C80B6A1
lea esi,[ebp+(Virtualalloc-ShellStart0)]
push esi
push eax
call dword ptr [ebp+(AddressFirst-ShellStart0)]
//这里是调用GetProcAddress,就会出问题了,因为 ebp+(AddressFirst-ShellStart0)]地址的数值为7C883FEC,而这不是GetProcAddress的真实地址,就导致错误了。
很是郁闷,不知道是什么原因
能力值:
( LV3,RANK:20 )
7 楼
你说的好象已经不是外壳编写的问题了。
我也想不出来这个问题的原因是什么。唯一能想到的就是一些主动防御的东西可能HOOK修改了这些东西。