能力值:
(RANK:330 )
|
-
-
2 楼
我听见脚步声是预料的软皮鞋跟他推开门晚风好冷没有的预征
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
啊啊啊啊 终于板凳了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
晕……差点来迟了,加油!!一起学习,failwest 辛苦了,感激中……
|
能力值:
( LV4,RANK:40 )
|
-
-
5 楼
坐板凳喽,居然还有字数限制,真是麻烦
|
能力值:
( LV9,RANK:210 )
|
-
-
6 楼
呵呵,谢谢老师,盼望已久!
|
能力值:
( LV9,RANK:210 )
|
-
-
7 楼
终于等到了,继续学习......
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
终于坐第一派
|
能力值:
( LV9,RANK:210 )
|
-
-
9 楼
吱——吱——吱
真是越来越精彩了,原来程序还可以有这样玩法!
我现在想到2个问题:
1. 这样处理后,将程序父函数堆栈中的有用的数据破坏得乱七八糟,这种方式下,肯定无法正确返回到原程序流程中来,不知是否有较好的方法能够回到原程序中去。
2. 对于MessageBoxA和ExitProcess之类的API函数地址的地址的确定目前实验还是通过硬编码来确定的。实际中,是否应该通过爆力搜索内存中Kernel模块和LoadLibraryA,及GetProcAddress函数来实现?如果这样的话,ShellCode代码尺寸可能较大,堆栈中缓冲区可能难以容下(不应该破坏父函数堆栈中的数据,以便能够返回原程序)。
|
能力值:
( LV13,RANK:1050 )
|
-
-
10 楼
哈哈,做到第一排了,讲的非常精彩,赞一个。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
见一次顶一次~~~
|
能力值:
( LV8,RANK:130 )
|
-
-
12 楼
这么快就到第二页
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
我晕,看来 在等作者大大更新的人 大有人在啊,我只是出去上了个厕所,就只能站在门外听了```
|
能力值:
( LV13,RANK:330 )
|
-
-
14 楼
听课留名
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
继续继续。。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
深入浅出,谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
我晕第2排了
|
能力值:
( LV9,RANK:490 )
|
-
-
18 楼
接着学习~~~
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
为什么,为什么讲的那么好呢,天天等啊,
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
真不错啊,可是我还不明白说什么strcpy截断那里,
不知道为什么有
68 77 65 73 74 PUSH 74736577
68 66 61 69 6C PUSH 6C696166
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
吱——吱——吱
成功了哈~
|
能力值:
( LV9,RANK:210 )
|
-
-
22 楼
郁闷,还没成功
老师:举手向你提个问题?
1、在第一个用老师自编的程序在user32.dll中的jmp esp指令做为跳板找返回其内存地址(指针值)的程序中是.cpp程序中吧?刚开始我保存为.c时老是找不着关键字try和catch,后来将程序改为.cpp调试则通过了,不过程序找出一大堆(指针值),但是用OD载入时却提示找不着地址,所以无法对照确定是哪一个?
2、新制作的password.txt文件是否还是需要放到第五讲中的例子中执行?
在此先谢了!
|
能力值:
( LV9,RANK:170 )
|
-
-
23 楼
吱——吱——吱
O Yeah!搞定了! 顶起来先
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
找出来的,随便用一个都可以啊~
|
能力值:
( LV9,RANK:210 )
|
-
-
25 楼
谢谢提醒,我还一直以为问题出在这里呢,后来一对照password.txt文件,才知道是自己调用的MessageBoxA地址照抄成老师给的地址了......
问题解决了,又可以大叫三声: 吱--吱--吱
|
|
|