阅读:6055回复:28
NTLDR的源程序有没有?
逆向有人搞过吗 :)
|
|
|
沙发#
发布于:2004-11-23 10:03
小弟也在为此发愁,前几天小弟用bochs的调试器反汇编过,不过小弟的汇编能力实在是太太太太烂,正在恶补纯汇编
|
|
板凳#
发布于:2005-02-24 18:20
今天上网看到在泄露的nt4的原代码中有boot部分,我现在也很想得到,有的朋友能不能发给我一份,发给我boot部分也可以.
zl21_spawn@163.com |
|
地板#
发布于:2005-03-03 09:10
今天上网看到在泄露的nt4的原代码中有boot部分,我现在也很想得到,有的朋友能不能发给我一份,发给我boot部分也可以. 本站有下载 |
|
|
地下室#
发布于:2005-03-03 13:26
呵呵,我不是高会呀
|
|
5楼#
发布于:2005-03-03 13:31
ntldr 反汇编过一些,16位纯汇编,只是前面的一点点,后面就分析不下去了,主要是有些地址不明白存储的是什么东西
|
|
6楼#
发布于:2005-03-14 15:42
国内有高手搞过 ,很好的,看过但是资料丢了
网上搜搜吧 |
|
7楼#
发布于:2005-03-14 18:23
这么多人研究NTLDR
|
|
|
8楼#
发布于:2005-03-15 09:29
paladinii有相关资料吗??
|
|
9楼#
发布于:2005-03-15 09:43
我也正在研究中。。。
|
|
|
10楼#
发布于:2005-03-15 13:05
哦?是吗?不知道已经分析到那里了,我只分析到了计算扩展内存的那里,后面有些地址就是不明白存储的是什么东西,咳,已经搁置好长时间了,我们可以交流一下吗??
|
|
11楼#
发布于:2005-03-15 13:32
现在只整理出来下面这一部分,第一次写东西也是第一次搞反汇编,请见谅:
在这篇分析的文挡中我并没有对ntldr进行全面的分析,只是动态调试的进行了分析。 请看反汇编后的代码: jmp 0x1c6 这是第一句,上来就是一个跳转 mov bx,0x2ac0 shr bx,0x4 mov ax,cs add ax,bx mov ss,ax mov sp,0x1528 push dx mov ds,ax mov es,ax 以上是对SS、DS、ES各段寄存器进行初始化,从中可以看出0x2ac即是代码段的大小,而CS=0x2000,所以SS=DS=ES=0x22ac,注意此时没有对FS段寄存器进行初始化。 movzx edx,ax shl edx,0x4 add edx,0x1dd0 mov [0xcbe],edx xor bp,bp movzx ebp,bp mov esp,sp mov word ptr [0x15bc],ds call 0x1a44 在此跟进 enter 0x1c,0x0 建立堆栈桢 push si mov al,ss[bp+04] bp+04=0x80并不清楚这是什么数据,可能是BIOS留下的。 mov byte ptr [0x15c4],al call 0x22cc 在此跟进 enter 0x14,0x0 sub bx,bx mov es,bx mov bx,0x410 mov [bp-14],bx mov [bp-12],es and byte ptr es:[bx],0xcf byte ptr es:[bx],0x20 注意,在0x00410处存储的是由BIOS建立的“设备编码表“,and和or这两条语句用来打开某个设备。“设备编码表”的资料自行查找,在此不于给出,这段代码的意思即:将初始化显示方式表置为80列表文本方式(认为是彩色/图形适配器) mov [bp-10],0x10 dx call 0x1a44 ebp Size(1c) esp=0x1506 si call 0x22cc ebp ebp=0x1500Size(14)esp=0x14ec 0x301 0x1202 0x10 0x0 0x410 ss ax esp=0x14e8 call 0x272 ebp di si ds es esp=0x14dc mov [bp-0c],0x1202 mov[bp-0a],0x301 lea ax,ss:[bp-10] call 0x272 在此个跟进 enter 0x0,0x0 push di push si push ds push es les di,[bp+04] di=0x14f0指向ss:0x14e8 mov ax,es:[di] ax=0x10 可能是个什么标志 sub ax,0x10 jnb 0x28c 高于或等于跳 shl ax,0x1 (0x28c) cmp ax,0x14 nop jb 0x29c 低于或等于跳 mov bx,ax mov ax,word ptr cs:[bx+030c] ax=0x2e4 push es push di push ax mov ax,es:[di+04] mov bx,es:[di+06] mov cx,es:[di+08] mov dx,es:[di+0a] mov si,es:[di+0c] mov es,es:[di+0e] ret 技术跳转 int10的地址就是0x2e4 int 0x10 对于这个中断调用不是太熟悉,参数不明,可能是用来获取“视频子系统[配置”的信息,如果哪位高手有相关资料请与我联系 jmp 0x2bf pop di pop es pushf 标志进栈 进栈前eflags=0x293 pop word ptr es:[di+02] 将标志出栈 [di+2]=ss:0x14f2 在以上的操作中(除了int10操作不知道以外)并没有对该地址进行读写操作,可能是以前或者有BIOS赋值 出栈后eflags的值没有改变,这段代码的意思不明白,请高手赐教 mov es:[di+04],ax mov es:[di+06],bx mov es:[di+08],cx mov es:[di+0a],dx mov es:[di+0c],si mov es:[di+0e],es pop es pop ds pop si pop di leave ret call 0x272返回:该函数的作用不是太明确,第一,int10功能调用不明,第二,对标志寄存器的操作不明。 ad sp,0x4 mov [bp-10],0x10 mov [bp-0c],0x3 lea ax,[bp-10] push ss push ax call 0x272 在调用int10 的时候,其参数有了改变,所以这一次的功能调用可能是“读取光标的位置” add sp,0x4 mov [bp-10],0x10 mov [bp-0c],0x2000 sub ax,ax mov [bp-0a],ax mov [bp-06],ax lea ax,[bp-10] push ss push ax call 0x272 在这个调用中因为不知道int10 ah=20,所以连猜都猜不出来了 add sp,0x4 mov [bp-10],0x10 mov [bp-0c],0x0a20 mov [bp-0a],0x0 mov [bp-08],0x1 lea ax,[bp-10] push ss push ax call 0x272 在当前光标处写字符?? call 0x2786 在此跟进 enter 0x8,0x0 mov [bp-08],0x0 mov [bp-06],0xB800 mov [bp-02],0x720 07为属性“normal”,2为空格 mov [bp-04],0x7d0 计数器,循环2000次 mov es,[bp-06] mov ax,[bp-02] (0x27a1) mov bx,[bp-08] add word ptr [bp-08],0x2 mov es:[bx],ax es:[bx]显卡内存的起始地址 dec word ptr [bp-04] jne 0x27a1 这段代码是将显卡的内存地址从es:[bx]到es:[0x07d0]全部用0x720填充 sub ax,ax mov word ptr [0x1dc0],ax mov word ptr [0x1dbe],ax mov ax,word ptr [0x1dba] mov dx,[0x1dbc] mov word ptr [0x1db6],ax mov [0x1db8],dx 这几个地址不太清楚(可能是跟user_private_area和UTF-8 format character 有关,瞎蒙的:―) ) leave ret 返回 leave ret 到此call 0x22cc函数返回 总结:该过程调用的功能:该函数的主要功能是对显示设备的操作,包括打开设备编码表中的显示设备、调用了四次call 0x272函数(该函数调用了BIOS中断int 10,每次调用其实现的功能都不一样,不过估计都是对屏幕的初始化具体功能不清楚,int10 参数不常见)、最后call 0x2786(该函数的主要功能是初始化屏幕,为显示窗口打基础,即Pop-up windows functions。其寸取了几个内存地址,意义不明) 请老大给点意见先,谢谢赐教. |
|
12楼#
发布于:2005-03-16 19:04
强啊,兄弟。我觉得反向太麻烦所以直接研究源代码。经验谈不上,还是在分析中。我用Bochs装Win2k总出问题。
|
|
|
13楼#
发布于:2005-03-17 08:22
呵呵,我的bochs也是老出问题,根本就装不完全,所以就这么将就这用呢,到后面调用系统内核部分我就完蛋了,刚好ntldr能完整运行.
这是我第一次搞反汇编,有很多地方请各位高手多多指教. 现在我也在找nt4的原码,希望看到ntldr的代码,反汇编分析太累了,再说分析到后面,有些地址你根本就不知道那什么鬼东西. 昨天有位朋友愿意把nt4 src给我,不过需要一个空间上传,不知有没有. |
|
14楼#
发布于:2005-03-17 08:54
如何编译原代码里的NTLDR??
|
|
|
15楼#
发布于:2005-03-17 09:51
不知道,昨天我还在想这个问题,就算我有完整的ntldr源代码,我怎样编译出来??我希望高手能给予解释.
|
|
16楼#
发布于:2005-03-17 09:59
需要用masm386和cl16.exe,设置好source编译,还有目录最好是C:\\nt
|
|
|
17楼#
发布于:2005-03-17 10:04
还有一点忘了说了先用DDK对SDKTools目录下的文件进行编译生成masm386等工具。
|
|
|
18楼#
发布于:2005-03-17 14:39
masm386是什么是MASM5.0吗??
|
|
|
19楼#
发布于:2005-03-17 15:44
masm386是什么是MASM5.0吗?? 我刚更新的masm32v8中的masm是6.14版的,masm386是什么 我没有nt4的src,我只有个win2k的,win2k src中没有ntldr,不知能不能这样编译点别的东东出来。 reegees说“昨天有位朋友愿意把nt4 src给我,不过需要一个空间上传,不知有没有”,借znsoft的宝地再用用, ftp://soft:mysoft@www.zndev.com |
|
|
上一页
下一页