能力值:
( LV2,RANK:10 )
|
-
-
26 楼
不错的说,很适合我们这些初学者,收藏了,谢谢LZ
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
谢谢,收藏了
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
软壳。有收获
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
最初由 haishi 发布 需要慢慢体会。
和你一样,慢慢看
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
牛啊,学习
有些地方不太懂啊
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
写得很详细,谢谢楼主了
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
认真学习中,谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
需要慢慢体会
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
有收获....谢谢,收藏了
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
谢谢,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
按照楼主的办法好象还是运行不起来,未找到↑.dll
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
哈哈,有点意思
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
要好好学一下哟
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
看了,有点一知半解
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
dddddddddddddd
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
我看了你的过程,很好!
很希望你们能在以后的日子里多为我们这些初学者留更多的学习资料!!!
|
能力值:
( LV9,RANK:170 )
|
-
-
42 楼
不错,这才是精华啊,让人知其然并且知其所以然,看了可以学到很多东西.很多大侠的文章,从一开始就按钮快捷键按几下文章就结束了
|
能力值:
( LV4,RANK:50 )
|
-
-
43 楼
仔细看完并手动试验了一下,收获颇丰。不过也发现了原文的几处笔误(也可能是我的误解,还请指正),让我迷惑了好一阵子。希望作者能修改一下以方便后来人:
1、第四部分《抓取内存影像,修改IAT表》第 1 小节“轻松解决IAT表中地址转换的RVA问题”的段尾:
…… 现在却可以轻松解决了,奥妙在那里?往下看:把前面提到的内存中 404000~4040AF的那段数据拷贝如下:
这里的 404000~4040 AF 似乎应该为 404000~4040 9F。因为后面的 4040A0 是后来 IID 表所处的位置。更为重要的是 40409C 是 IAT 表第一个 NULL 值(0x00000000)出现的地方,因此选 40409F 作为 IAT 表的结尾是合理的。若是选 4040AF 则显得没有什么道理。
2、也是在该小节:
现在根本就完全舍去了RVA这个概念。你只须要把前表中的每个值(记住低位减1),去掉那个40,照原样填写在下表相应的位置中,并把7FFFFFFF和FFFFFFFF改为全0,IAT表就改选完成了。即:
00004000 48 41 00 00 58 51 00 00 B6 42 00 00 CA 42 00 00
00004010 00 00 00 00 34 42 00 00 A8 42 00 00 D6 41 00 00
00004020 DE 41 00 00 E6 41 00 00 FC 41 00 00 04 42 00 00
这个地方似乎应该是 00004000 48 41 00 00 58 41 00 00 B6 42 00 00 CA 42 00 00。原因嘛,绝对的笔误。
3、应该还有一小处,很小的一处。不过没留意,发帖的时候找不到了~ 希望以后的同学多多留意。
btw:楼主用的是什么操作系统?怎么 GetProcAddress 的地址 4223F4 会这么低?
|
能力值:
( LV9,RANK:570 )
|
-
-
44 楼
您好,你看得很细致,我的文章中的确经常有笔识,主要是不够细心。有些地方可能
表达也不够准确,使理解上出现偏差。不过,我写出的东西都是经过“实际验证”后总结的,
实验前后可能有好几次“记录”。个别地方可能把前后的数据搞混乱了,给你们造成了不必要
的麻烦,表示欠意。
我的文章,表达了我的“思想”:这就是“重原理”,“重思路”。可能一些细致的
工作我并不特别强调,这留给读者一些思考和变通的余地。
你提到的“这里的 404000~4040AF 似乎应该为 404000~40409F”,你是对的。回忆
起来,当时我可能也没有完全弄清从0040409F以后的“那两行”,即到00404AF止是不是垃圾
代码。所以为了保险把它也拷贝下来了。(忽略了初学者对细节的“追究”)后来有个网友来
信也指出了同样的问题。我再次看了以后,肯定它是“垃圾”。其实那部分代码是没有动它的。
(事实上,一些软件几经修改后,往往会留下一些垃圾,作者也没有必要去清除它们)。
至于GetProcAddress的地址,回忆起来应该是:004223F4是GetProcAddress的调用地址
,也就是说:在[004223F4]中装入的才是GetProcAddress的实际地址。
装载前,[004223F4]内存中的值是:0040408B(随便举例),而0040408B正是IAT表
中指向GetProcAddress字串的地址。windows装载后,[004223F4]内存中的值变了,比如变成
7C803AF4(随便举例),7C803AF4才是GetProcAddress的调用地址。而程序在调用GetProcAddress
时,始终是指向[004223F4]的。这就是我们修复IAT表的最根本的依据。即把装载后的7C803AF4
或加密后的值,还原成0040408B,让它指向GetProcAddress字串。
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
我这里觉得ESP起码还是高效的,HW 13FFC0发现居然使用了LoadLibrary,在下面找OEP看见一个jmp
直接断点那里,按F9发现还要执行硬件断点,删掉硬件断点,一般13FFC0喜欢在到OEP之前乱跳,我习惯了.哈哈,F9到.进看见没有代码的地方.这个地方应该就是,(以前碰到一个发现看见这个地方一般是OEP)哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
我会用心记住的
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
thank you!!
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
附件下载解压错误
|
|
|