首页
社区
课程
招聘
[求助]delphi真的不可以写shellcode么
发表于: 2008-1-19 01:26 9075

[求助]delphi真的不可以写shellcode么

2008-1-19 01:26
9075
很迷茫啊.......
想专攻delphi+asm32 想写几个shellcode练练手
但是网上似乎都是VC的资料
delphi甚至连内联asm的资料都很少
真不知道该怎么办
到底是delphi还是vc 这是一个问题
所以只好先学着asm32
静观其变
希望各位能指点迷津

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
内联汇编很普通啊,可以看DELPHI自己带的函数的原代码,大部分都是内联汇编

至于其他的吗,驱动都能写,还有什么不能写的 呢
2008-1-19 08:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
program ShellCodeLoader;

const

ShellCode:Array [0..78] of Byte =
(
  $EB,$0F,$58,$80,$30,$95,$40,$81,$38,$68,$61,$63,$6B,$75,$F4,$EB,$05,$E8,$EC,$FF,
  $FF,$FF,$C0,$1C,$70,$C6,$53,$D0,$69,$F6,$53,$D0,$68,$F8,$53,$D0,$6B,$F1,$53,$D0,
  $6A,$95,$FD,$90,$95,$95,$95,$18,$D0,$69,$C5,$2D,$F8,$86,$13,$E9,$6A,$45,$FD,$94,
  $95,$95,$95,$2D,$4F,$58,$14,$E9,$6A,$45,$6A,$71,$95,$DA,$68,$61,$63,$6B,$CD
);

var
ShellCodeProc: procedure;

begin
ShellCodeProc := @ShellCode;
ShellCodeProc();
end.
2008-1-19 11:02
0
雪    币: 1004
活跃值: (75)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
4
loien已经给出答案了,不过Delphi + asm32略显有点儿单薄,最好能把C也掌握了,会了Delphi学C很容易的。
2008-1-19 12:37
0
雪    币: 1312
活跃值: (5169)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
2008-1-21 09:35
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
各有所长....
2008-1-21 11:06
0
雪    币: 169
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我用了很久的DELPHI了  感觉在SHELLCODE上好像有点乏力...
我用VC和DELPHI 做同一个加区段程序,明显VC问题出得少些...所以有投入C++阵营怀抱的冲动啊...
不过DELPHI有个很大的优点就是类型上比起VC来说方便多了....  也许是比较熟悉的缘故吧....
2008-1-24 10:51
0
雪    币: 1272
活跃值: (746)
能力值: ( LV13,RANK:810 )
在线值:
发帖
回帖
粉丝
8
Delphi写Shellcode。。。
为什么不可以。Delphi些ShellCode比VC方便

Delphi的内联汇编比vc的要强大太多.不但支持众多高级指令...(vc的太普通了)
而且还有db,wd, dd这样的伪指令可以使用...
就着一个优势可以把VC压下去...

其他的没什么可说的了(可惜Delphi没有__declspec(naked)否则写起来会更方便.)
Delphi写ShellCode的时候需要许多注意
Delphi的编译器优化做的和vc有点区别。。。
比如说case。。。尽量不要使用多层选择...会产生不必要的麻烦...
少了看不出来多了就看出来了---实际地址而不是使用偏移地址
Delphi写代码的时候需要注意
放弃使用集合.其他的一时想不出来.
要学会组合...怎么说呢...就是大脑中勾画出代码和数据存储位置和偏移结构.
专门开一贴写吧.

要理解ShellCode的核心...什么是ShellCode。。。
ShellCode其实就是和大家平时用的远程代码注入一样的概念。。。。
甚至代码都可以直接Copy过来使用~
多了一个kernel32地址获取,api搜索.没了...
这个部分用asm完成
其他地方完全可以使用object pascal的语法写。。。
什么都可以写进去。暂时不知道如何写一个Class进去。。这个比较麻烦
Delphi写ShellCode就和写远程线程注入完全一样。。

其实那些大型壳都是用高级语言写的。RLPack那种写壳方式不适合应用在大型软件上(500-600k的asm源代码)
EPE,ASpack,Acpr等等都是Delphi写的。是的壳代码都可以这么写。仅仅需要极少数的asm

LS的说VC写的出错率小。那是因为你不熟悉Delphi的编译器...
现在大家对Delphi编译器了解的都很多了...语言和开发工具很少会出现明显的错误..
基本上是写手的自身的问题
2008-1-25 13:22
0
雪    币: 126
活跃值: (184)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
我一直都用Delphi写ShellCode.自己觉得比C方便.最方便之处在于字符串常量的使用上.
Delphi是吧字符串常量编译到代码段当前函数后面的.太方便了.
看看我的博客
http://blog.csdn.net/wr960204/archive/2007/08/17/1747972.aspx
2008-2-22 17:17
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
10
Delphi的内联汇编比vc的要好用
2008-2-22 19:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
没有你说的那么夸张吧
emit有它自己的优点,你不因该不会用就认为它是缺点。
2008-3-7 20:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
晕了, delphi是全世界唯一一钟不能进行反汇编的语言,因为其他语言在机器执行中都是以补码的形式存在的,但delphi却有原码补码和反码都进行运算,因为大家都知道原码的乘法效率最高,所以 delphi编出的程序效率一般都比较高!
2008-3-14 15:18
0
雪    币: 126
活跃值: (184)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
VC中emit垃圾.
Delphi中DB指令比emit强N*N倍
2008-3-14 16:11
0
雪    币: 1272
活跃值: (746)
能力值: ( LV13,RANK:810 )
在线值:
发帖
回帖
粉丝
14
emit一次只能一个字节吧。。。
delphi下的db和可以想写多少就多少。。。
一个合格的delphi程序员同样也是一个合格的vc 程序员不要以为我们不会vc。。。
LCC是支持~~db的。。byte\.xxxxxxxxxxxxxxx这么写~只有vc。。。。太吐血了~
我一直都是混编的。除了写界面用Delphi其他的我都是使用vc(vc很强大。但是UI设计太令人吐血了。。。)

至于delphi代码优化。那是以前的事情了。。。现在的vc代码优化和intel的编译器旗鼓相当。
《Borland传奇》中所说的高级优化。。。现在已经落伍了。。Delphi优化能力相对来说不行。m$毕竟还是编译器老大
Anders很好很强大~

不过话说回来都是相对了~~优化能力换编译速度,编译速度换优化能力。。。
delphi经常编译出sb代码。。让你超吐血。。。
比如说
Result := xxxxx
if (Result) then
.
.
.

编译出来就是
mov [ebp+4], eax
mov eax, [ebp+4]
test al, al
jnz xxxx

猛吐血~~
2008-3-15 20:55
0
游客
登录 | 注册 方可回帖
返回
//