能力值:
( LV3,RANK:20 )
|
-
-
2 楼
动态获取地址就行了,病毒经常这样写的~
ShellStart:
pushad ; 外壳入口点
call next0
next0:
pop ebp
sub ebp,5
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
楼上的朋友,麻烦你写详细点,我没有看懂,谢谢
|
能力值:
( LV9,RANK:180 )
|
-
-
4 楼
push 0
push 80
push 2
push 0
push 2
push 40000000
call $F
UNICODE "c:/log.dat"
@@: call dword ptr [<&KERNEL32.CreateFile>]
ret
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
call $F
UNICODE "c:/log.dat"
先谢谢楼上的各位朋友,这两条是什么意思?怎么我用OD写 call $F 提示“未认可的操作数”,麻烦各位写详细点,我笨呀我,
|
能力值:
( LV9,RANK:180 )
|
-
-
6 楼
call 401020
UNICODE "c:/log.dat" <- 你自己写的文件名
401020:
call dword ptr [<&KERNEL32.CreateFile>]
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
sessiondiy大牛,请问
UNICODE "c:/log.dat"
这句是什么意思?没见过。。。
call $F
这句不是已经跳过了UNICODE "c:/log.dat吗?
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
call 401020
应该类似Jmp的效果了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
上楼的哥们,可能加壳程序会把UNICODE "c:/log.dat这句代码放到它指定的位置。这样写可能是遵循一种规定吧!因为楼主说: 准备给一个EXE文件添加一个在c:\创建LOG.dat文件的功能,我是这样实现的,有C32Asm在文件的空白处写一段UNICODE字符串“c:\log.dat",然后用OD在EXE里以下这段子程序并调用他,就能在创建文件了。但是现在有个问题就是这个EXE不能加壳了,因加了壳字符串地址就变化了,所以也就不能创建文件了,请问应该怎么写这段代码加壳后也能正常运行。
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
这就已经动态定位了你要createfile的文件名~
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
请问哥们,这是一种动态定位的格式吗?有相关的资料吗?谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
010073D3 push 0
010073D5 push 740061
010073DA push 64002E
010073DF push 67006F
010073E4 push 6C005C
010073E9 push 3A0043
010073EE mov ebx, esp
010073F0 push 0
010073F2 push 80
010073F7 push 2
010073F9 push 0
010073FB push 2
010073FD push 4000000
01007402 push ebx ;字符串在堆栈中
01007403 call dword ptr [<&KERNEL32.CreateFileW>]
01007408 add esp, 18 ; 将压入的字符串弹出 6 个 DWORD
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
虽然对汇编不太了解,不过两位大牛的意思我大概明白了,就是给创建文件的指令或是文件名所在的位置前加上标号,就像BAT和BASIC里的GOTO xx一个意思,这样虽然地址变了,标号的名字是不会变的,就可以找到了,楼主明白了吗
|
能力值:
( LV2,RANK:140 )
|
-
-
14 楼
将字符串压入到堆栈中
参考shellcode的编写
|
能力值:
( LV9,RANK:310 )
|
-
-
15 楼
注意call的作用,它会先将下条指令进栈,实际这里不是指令了,就是字符串c:/log.dat的起始地址
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
不好意思,最近没来论坛,感谢各位大牛的解答,
|
|
|