首页
社区
课程
招聘
非常有意思的问题
发表于: 2010-5-2 01:35 6558

非常有意思的问题

2010-5-2 01:35
6558
跟到了】如下的汇编代码,他有3个参数 其中有个参数我怀疑是一个结构体
这个时候我怎么去重建这个结构体呢。怎么分析呢有没有什么分析辅助软件。
00491B00     6A FF            push -1
00491B02     68 98B77000      push King.0070B798
00491B07     64:A1 00000000   mov eax,dword ptr fs:[0]
00491B0D     50               push eax

。。。。。。。。。。。。。。。。。。。

00491D43     59               pop ecx
00491D44     5F               pop edi
00491D45     5E               pop esi
00491D46     5D               pop ebp
00491D47     5B               pop ebx
00491D48     83C4 20          add esp,20
00491D4B     C2 0C00          retn 0C

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 360
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rol
2
听说IDA有,OD不知道有没有这个功能
2010-5-2 07:38
0
雪    币: 40
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
fs:[0]指向TEB结构吧
2010-5-2 09:20
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
fs:[0]就是SEH链的指针入口
2010-5-2 10:48
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不得哦,兄弟们偶还是不懂哦
我查了  SEH 是结构化异常处理,而这个 fs:[0]  是指向的异常处理程序啊

而不是什么 这个CALL 的参数的结构体啊。  还望指教啊!
另外 IDA 我看了下 没有分析单一函数的。 如果这个软件加了壳  IDA就没用了
所以IDA又时候使用范围大大有限制,有没有就粘贴一个函数的汇编代码,然后
通过一些设置就帮助分析结构体的这种软件啊
2010-5-2 14:11
0
雪    币: 2513
活跃值: (605)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
你把工具想的太智能了……
单独分析……
那它内部调用的CALL和API怎么确定……

东西是死的,人是活的,工具是辅助,分析还在人……
2010-5-2 14:18
0
雪    币: 64
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也不太懂,看大牛们的回复。。。。
2010-5-2 17:19
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩恩,我也想过这个问题,看来确实没有  哈哈
但是,一个参数是结构体的话 需要怎么来确定他的长度 和他 的变量集合呢?

希望能给点参考!!谢谢  
2010-5-2 19:54
0
雪    币: 2513
活跃值: (605)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
结构体只在概念上存在,内存的表现就是连续的buffer所存储的变量
所以你说结构体是单独的N个数据也可以,说N个语义上毫无关系的变量合成一个结构体也可以
2010-5-2 20:16
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
  但是我要调用这个函数啊 比如call  xxx  如果他有一个参数然后这个参数就是一个结构体的首地址
然后我调用的话 就也需要知道这个结构体的具体结构啊,不然我传什么进去啊!!如果传的这个结构体
不对就可能引起内存出错啊。
  但是跟的话确实比较麻烦,我跟了下他这个结构体的内容很大很复杂。而且涉及到好几层的调用。
所以我请教一下你们的做法
2010-5-2 20:31
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
其实 有时候想下也只有硬跟,不然就不知道他的数据结构了  但是硬跟的话 可能会出错,工作量也大
知识有限,投石问路。看看论坛兄弟们好的方法了
2010-5-2 20:34
0
雪    币: 2513
活跃值: (605)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
struct Obj
{
int a;
char b;
long c;
}

假如你要逆向的函数传入一个obj类型的对象指针,且函数内部仅对obj中的a域进行了操作,而没有任何关于b和c域的操作,你如何判定b,c域的存在?
2010-5-2 22:47
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哈哈  这个确实似乎很难哈。既然这个都难。不过我坚信这个是有法解决的
不然搞破解的大牛要调用这个函数,他们怎么办。不可能就因为这个而报废了社

  不过想想 你说得也很有道理,这种时候咋办呢??想办法得到它的长度
然后只设置自己需要设置的变量吗?
比如这个 Obj 结构体  如果只操作了a 域  就给他传个包含a域的结构吗,
struct Obj
{
    int a;
};
如果知道长度还好点  可以设置为
struct  Obj
{
   int a;
   BYTE  unK[5];
};  
呵呵  你是不是这个意思啊  估计也只有这个样子了哈
2010-5-2 23:49
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
知道长度的可能不会出错  不过也难说
不知道长度的似乎会有潜在的出错可能啊
2010-5-2 23:51
0
雪    币: 207
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
我是来看大牛的解答的
2010-5-4 21:01
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看不懂 继续顶
2010-5-5 03:54
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我是来看大牛的解答的
2010-5-5 07:00
0
雪    币: 656
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
mark this
2010-5-5 11:07
0
雪    币: 296
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
顶顶顶~~~~~~~~~~~~~~~
2010-5-5 14:35
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我是围观的群众
2010-5-6 09:09
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
    都顶  没大牛了么  我要踢馆了哈
2010-5-7 23:28
0
雪    币: 355
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
等待大牛回复
2010-5-8 12:56
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
果然是很有意思
2010-5-9 11:47
0
游客
登录 | 注册 方可回帖
返回
//