| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1569 人关注过本帖
标题:int 3 我会爱死你的
只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
已结贴  问题点数:20 回复次数:15 
int 3 我会爱死你的
不知道干什么的  请查资料赛
软件调试的 出错信息都是 更改这个 int3的 值 进入RONG0的
搜索更多相关主题的帖子: 资料 干什么 
2012-11-25 07:25
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
嘿嘿  进入0环貌似没那么简单的

DO IT YOURSELF !
2012-11-25 07:29
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
int 3这个中断 是可以让编程从rong3进入rong0的么
IDA 对printf  的反汇编里 找到的,初步网上查到的
这个int 3  的地址是int 3的 地址怎么拿到啊
保护模式下放中断的位置还是从地址0开始的把
如果用use16进行汇编的话  不是要将地址值 3*8啊
还是必须调用中断选择子 对应的描述符的 方式来用啊

我要成为嘿嘿的黑客,替天行道
2012-11-25 07:33
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
int 3机器码0cch,是无数人的最爱,你不见VC++不管是链接还是初始化,都用这个 0CCh来填,你不见所有运行在ring3的debug都使用这个0cc来插入你想中断调试的位置,以至在不去掉断点的情况下写盘,在你的代码中会发现这个莫名其妙的0CCh。
int 3不过是一个软件断点中断,你自己就可以任意修改这个中断,在anti-debug中,你可以通过修改这个中断给调试者带来巨大的惊喜,如果你能更深入一步的了解int 3的机制,你甚至可以指挥deubg运行,即别人调试你的程序,单步往前走,你可以让他按一个单步执行键后倒退几步,哈哈(这些都是善意的,千万不要学将那个倒退的指令改成将别人硬盘的启动分区给删除了,将别人的文件分配表给删除了,或将人家硬盘给硬格式化了)。
int 3只不过是一个软件调试中断,通过他,你可以进入ring0,那个许多人都想进入的神秘世界。
int 3只不过是一个简单的中断,利用他,你可以完成你许多过去不敢想象的事,只要你敢去尝试。



 

 

int3是留给调试工具使用的中断,调试工具运行后会替换int3的向量,使得中断方式后执行自己的代码。在单步(例如Debug中的命令p)调试程序时,调试工具会将要执行代码的下一条指令改成int 3,这样执行完当前这行代码后就会执行调试工具的代码,而不会继续执行,从而实现单步调试。一些软件为了阻碍被人破解其程序,会估计使用int3,这样一来,利用int3的调试工具就无法正常调试他们的程序了。

 

嵌入断点中断INT3
VC中嵌入断点中断的HelloWorld程序:

#include <iostream>

int main(INT argc,char*argv[])

{

     _asm INT 3; //调用断点中断

   cout << "Hello world!" << endl;

}

 

我要成为嘿嘿的黑客,替天行道
2012-11-25 07:34
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这个是网上说的呀
而且 这个main()函数在初始话的时候  在初始化的时候 会放入10H 16个 cccccccc这样的字符的 这个 CC 是代表的什么啊
push    ebp
mov     ebp, esp
sub     esp, 40h
push    ebx
push    esi
push    edi
lea     edi, [ebp+var_40]
mov     ecx, 10h
mov     eax, 0CCCCCCCCh

我要成为嘿嘿的黑客,替天行道
2012-11-25 07:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
00401000      CC            db      CC
00401001      CC            int3
00401002      CC            int3
00401003      CC            int3
00401004      CC            int3
00401005  /$  E9 06000000   jmp     main
0040100A  |   CC            int3
0040100B  |   CC            int3
0040100C  |   CC            int3
0040100D  |   CC            int3
0040100E  |   CC            int3
0040100F  |   CC            int3
00401010 >|>  55            push    ebp
00401011  |.  8BEC          mov     ebp, esp
00401013  |.  83EC 40       sub     esp, 40
00401016  |.  53            push    ebx
00401017  |.  56            push    esi
00401018  |.  57            push    edi
00401019  |.  8D7D C0       lea     edi, dword ptr [ebp-40]
0040101C  |.  B9 10000000   mov     ecx, 10
00401021  |.  B8 CCCCCCCC   mov     eax, CCCCCCCC
00401026  |.  F3:AB         rep     stos dword ptr es:[edi]
00401028  |.  CC            int3
00401029  |.  68 1C204200   push    0042201C                         ; /format = "Hello world!"
0040102E  |.  E8 2D000000   call    printf                           ; \printf
00401033  |.  83C4 04       add     esp, 4
00401036  |.  33C0          xor     eax, eax
00401038  |.  5F            pop     edi
00401039  |.  5E            pop     esi
0040103A  |.  5B            pop     ebx
0040103B  |.  83C4 40       add     esp, 40
0040103E  |.  3BEC          cmp     ebp, esp
00401040  |.  E8 9B000000   call    _chkesp
00401045  |.  8BE5          mov     esp, ebp
00401047  |.  5D            pop     ebp
00401048  \.  C3            retn


DO IT YOURSELF !
2012-11-25 07:48
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 6楼 wp231957
问你个问题
xor ecx,ecx  -----》ecx置0
test ecx,ecx  -----》这个会把 zf置1
jnz       这个是什么意思 他会有机会执行么

我要成为嘿嘿的黑客,替天行道
2012-11-25 07:55
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
你用的什么反汇编的 ,我用的IDA  这么 和你那个差距那么大

我要成为嘿嘿的黑客,替天行道
2012-11-25 07:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我用的od
代码也不一样
我把c++代码修改为c代码 printf("hello word");

[ 本帖最后由 wp231957 于 2012-11-25 08:00 编辑 ]

DO IT YOURSELF !
2012-11-25 07:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
中间插了一个int3  调试状态可以运行  exe状态 无法运行

DO IT YOURSELF !
2012-11-25 08:01
快速回复:int 3 我会爱死你的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053631 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved