首页
社区
课程
招聘
[原创]利用压栈不足拦截JIT实现.NET程序动态变化[MASSADA0019]
发表于: 2009-3-12 21:18 9912

[原创]利用压栈不足拦截JIT实现.NET程序动态变化[MASSADA0019]

2009-3-12 21:18
9912
收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加百力,搞得东西还真多。MSIL也搞过?
2009-3-13 11:58
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
3
去年夏天搞过几周,论坛上玩MSIL的会员似乎不多,很快就沉下去了。
2009-3-15 15:27
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
4
下来看看,貌似原理和.net壳的原理差不多了
2009-3-15 15:57
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
5
要想实现加壳或其他高级技术,代码动态变化是一项基础,所以当初就专门研究了一下。
2009-3-15 17:33
0
雪    币: 164
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
1、感觉是不是你的ShowJudge 写的有问题

2、感觉楼主应该把Test独立起来,别放到Main函数中调用。

3、感觉不是压栈不足还是过度的问题,而是JIT是否能成功编译的问题

都是个人感觉,没有实际测试,如有不妥,请见谅
2009-3-19 12:37
0
雪    币: 164
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
其实还有一个感觉,就是lz可能参加过传xiao,
开个玩笑~~
2009-3-19 12:39
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
8
对于第一个点,我看到的返回结果是0。

对于第二个点,没明白您的意思是什么?

对于第三个点,我在文章中打“★”的位置已经说明了。
2009-3-20 09:13
0
雪    币: 164
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
1. VirtualProtect返回true
2. 增加一个函数Test1,里面调用Test;在Main中调用Test1,而不是Test,应该就会明白我说的意思
2009-3-20 14:38
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
10
我是直接从堆栈顶部读取的VirtualProtect的返回值。这样做应该没有问题吧?你是从什么地方读到返回值为true?
2009-3-20 15:23
0
雪    币: 164
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我直接用C#写的,反出来的IL:

    call bool Test.Form1::VirtualProtect(native int, uint32, uint32, uint32&)
    brfalse.s L_0057
    ldstr "VirtualProtect Ok"
显示的是OK,也就是返回true

另外,这个测试做的不完整,你可以做两个测试
一个Test就像你写的,另一个Test里面内容写多一些,也就是针对tiny和fat两种方法体做修改
得出来的结论会比较完整
2009-3-21 18:02
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
12
多谢blackboy!

确实还可以深入研究一下。
2009-3-22 08:57
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
收下了
2009-3-22 22:37
0
游客
登录 | 注册 方可回帖
返回
//