在模块中,通过查询super_blocks列表,来遍历系统中的所有super_block,但是出现与下面类似的错误:
http://stackoverflow.com/q/5051111/941650
也可以参考他的解决方法,到System.map中去查找真实地址,不过这样不是解决问题的最好方法。
先贴出当前的代码
#include <linux/module.h>
#include <linux/fs.h>
3:
);
5:
6:
const u_char* data)
8: {
if (size == 0)
10: {
return;
12: }
13:
, (u32)data);
long i = 0;
for (i=0;i<16;i++)
17: {
, i);
19: }
);
for (i=0;i<16;i++)
22: {
);
24: }
25:
char lineSummary[17] = {0,};
long pos = 0;
for (i=0;i<size;i++)
29: {
if ((pos = i % 16) == 0)
31: {
if (i != 0)
33: {
, lineSummary);
35: memset(lineSummary, 0, 17);
36: }
else
38: {
);
40: }
41: }
42:
, *(data + i));
44:
if (*(data + i) >= 0x20 && *(data + i) <= 0x7E)
46: {
47: lineSummary[pos] = *(data + i);
48: }
else
50: {
' ';
52: }
53: }
54:
if (size % 16 != 0)
56: {
for (i=0;i<16 - (size%16);i++)
58: {
);
60: }
61: }
62:
, lineSummary);
);
65: }
66:
void AnalyzeSuperBlock()
68: {
struct super_block* item;
struct list_head * super_blocks = 0xc1778bc0;
71:
72: list_for_each_entry(item,super_blocks,s_list)
73: {
, item, item->s_id);
75: }
76: }
77:
int pslist_init()
79: {
);
81: AnalyzeSuperBlock();
return 0;
83: }
84:
void pslist_exit()
86: {
);
88: }
89:
90:
91:
92: module_init(pslist_init);
93: module_exit(pslist_exit);