首页
社区
课程
招聘
[原创]我的题目一做法
发表于: 2008-10-4 12:06 18920

[原创]我的题目一做法

2008-10-4 12:06
18920
收藏
免费 7
支持
分享
最新回复 (43)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
26


重定位多了項那个sizeofblock 要加大。
按图片放大
2008-10-4 13:38
0
雪    币: 64
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
aker刚刚的那个我看过的10byte..如果配合上我说的这种方法,应该可以压缩到8byte..好想看下10byte以内的思路..
2008-10-4 13:41
0
雪    币: 268
活跃值: (95)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
28
[QUOTE=vxasm;516382]12字节,将ShellExecuteEx的参数预先放在数据区,直接调用即可。数据区的布局用数组表示为如下:

//sizeof(SHELLEXECUTEINFO)=0x3c,15个DWORD
DWORD ShellEx[] = {
    0x0000003C, //1,cbSize
...[/QUOTE]

我就是这么做的12个字节搞定!
2008-10-4 13:51
0
雪    币: 216
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
29
用过13楼 的方法先在数据区先放函数参数,但是..................

呵呵,第一次用ShellExecuteA 规规矩矩压6个参数,结果25byte
第2次,还是用ShellExecuteA,但先在数据区放6个参数,但我汇编撇,用rep movs 传6次到栈里的,结果弄下来还是21byte ,

最后用WinExec交了个14字节的.........
学习这种:call [eax+xx] ,能省3字节啊,有长见识了

那些用几个字节搞定的牛人们该放答案了哈.......
2008-10-4 14:27
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
30
够我学很长时间了.

谢谢分享~~
2008-10-4 14:29
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
我也是用OD写的。

先补好引入表和导出表(大家的步骤都差不多,就略过了),然后开始写代码


图1 开始写代码

003E10CA >/$  6A 01         push    1                                ; /ShowState = SW_SHOWNORMAL
003E10CC  |.  68 D8104000   push    4010D8                           ; |CmdLine = 004010D8 ???
003E10D1  |.  FF15 14204000 call    dword ptr [402014]               ; \WinExec
003E10D7  \.  C3            retn
003E10D8   .  65 78 70 6C 6>ascii   "explorer http://"
003E10E8   .  77 77 77 2E 7>ascii   "www.pediy.com",0

现在OD里面PEDIY.DLL基址是003E0000
如果用LordPE察看PEDIY.DLL,镜像基址是00400000
写代码的时候要按照00400000写,所以第二个push和call里面的地址是004010D8和00402014,因为

字符串地址=003E10D8(从OD里面看)-003E0000(OD里面DLL基址)+00400000(LordPE里面镜像基址)= 004010D8
同理WinExec的导入表地址=003E2014-003E0000+00400000=00402014

然后看一下需要重定位的地址(在OD里面)是003E10CD和003E10D3,换算成LordPE里面要用到的地址
003E10CD-003E0000+00400000=004010CD
003E10D3-003E0000+00400000=004010D3

关了OD,打开LordPE>Directory>Relocation>HexEdit


图2 编辑前


图3 编辑前2

Offset的计算
004010CD-00401000=0CD
004010D3-00401000=0D3

Type都是3 (IMAGE_REL_BASED_HIGHLOW)

我也是第一次改重定位项,看PE文档上说每一个重定位块都开始于32的倍数,虽然不知道大小怎么办,干脆就用0x30当大小了,反正后面都是0,无所谓。外面在Directories里面也要改大小。


图4 编辑后


图5 编辑后2


图6 编辑后3

重新用OD载入,完工了。


图7 完成
上传的附件:
2008-10-4 15:05
0
雪    币: 407
活跃值: (125)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
32
我也有这个问题,我用的
008B1175   .  68 80308B00   push    008B3080                         ;  执行打开网页的功能
008B117A   .  FF15 18208B00 call    dword ptr [<&SHELL32.ShellExecut>;  SHELL32.ShellExecuteExA
怪了,在自己电脑上,运行乱弹MessageBoxA,有时还出错,换台电脑, 一切ok,搞不明白 ,哪个大牛解释一下
2008-10-4 15:14
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
33
看起来楼上的似乎是 call 函数的地址了,我碰到过类似问题,后来由 call eax 改为 call [eax] 就好了.
2008-10-4 16:45
0
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
34
同样感觉~~
2008-10-4 19:46
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
35
。。。。。。。
2008-10-4 20:18
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
怎样得到地址 ds:ShellExecuteExA ,它不是封装在函数内部吗,要硬编码?
放BIN来学习一下。
2008-10-4 21:22
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
37
改IAT增加一个导入函数,之前我也没有想到ShellExecuteExA,习惯上认为Ex版本的函数会需要更多的参数,结果浪费了一个字节,另外用system也可以得到同样的效果,只是那个函数要等目标进程结束了才返回
2008-10-4 21:29
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
谢谢37楼。
如果写成 call [<&SHELL32.ShellExecutExa> ]就明白了,但这句是6字节
而call ds:ShellExecuteExa 这句是5字节。
2008-10-4 21:41
0
雪    币: 220
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
学习学习,相信这次活动后,我对破解会有更一步的深入
2008-10-4 22:10
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
40
.text:00401005 FF 15 9C 50 40 00         call    ds:ShellExecuteExA

貌似这也是6字节吧.
2008-10-4 22:15
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
刚弄明白,写法不同,
IDA上是这种格式: call    ds:ShellExecuteExA  (6字节)

我看的是OD的格式:
7D611224    E8 6CFCFFFF     call    ShellExecuteExA (5字节)
00401006    FF15 94404000 call    dword ptr [<&SHELL32.ShellExecuteExA>] (6字节)

                                                
                                                                                                菜鸟向vxasm致敬
2008-10-5 10:00
0
雪    币: 130
活跃值: (33)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
42
晕.......大家玩的这么开心,题目在哪里啊

哈哈, 找到了,晕死,从来就没看过置顶贴
2008-10-5 10:31
0
雪    币: 3227
活跃值: (2908)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
好热闹。。也来吹个牛。。。修改注册表。加启动参数。0字节。。 不过估计不合题意了。。。
2008-10-6 11:52
0
雪    币: 233
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
44
学习中,方法看来真的很多,自己当时怎么就想不出来呢
2008-10-6 21:23
0
游客
登录 | 注册 方可回帖
返回
//