20楼#
发布于:2005-02-13 13:18
用IDA的16位模式分析吧
seg000:0000 ; Segment type: Pure code seg000:0000 seg000 segment byte public 'CODE' use16 seg000:0000 assume cs:seg000 seg000:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing seg000:0000 jmp loc_1C6 seg000:0000 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0003 aRSh db 'RSh',0 seg000:0007 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0007 seg000:0007 loc_7: ; CODE XREF: seg000:FFDEj seg000:0007 pusha seg000:0008 pop es seg000:0009 xor bx, bx seg000:000B mov cx, [si+3] ; DATA XREF: seg000:450Cr seg000:000B ; seg000:BE43r seg000:000E mov word ptr [di+0Ah], 0 seg000:0013 mov [di+8], cx seg000:0016 mov ax, [si+0Bh] seg000:0019 cmp ax, 80h ; ' |
|
21楼#
发布于:2005-02-13 13:20
loc_1C6: ; CODE XREF: seg000:0000j
seg000:01C6 ; seg000:005Fj seg000:01C6 mov bx, 2F20h seg000:01C9 shr bx, 4 seg000:01CC mov ax, cs seg000:01CE add ax, bx seg000:01D0 mov ss, ax seg000:01D2 assume ss:nothing seg000:01D2 mov sp, 1528h seg000:01D5 push dx seg000:01D6 mov ds, ax seg000:01D8 assume ds:nothing seg000:01D8 mov es, ax seg000:01DA assume es:nothing seg000:01DA movzx edx, ax seg000:01DE shl edx, 4 seg000:01E2 add edx, 1D80h seg000:01E9 mov ds:0CBEh, edx seg000:01EE xor bp, bp seg000:01F0 movzx ebp, bp seg000:01F4 movzx esp, sp seg000:01F8 mov word ptr ds:15BCh, ds seg000:01FC call loc_1900 seg000:01FF seg000:01FF ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹? seg000:01FF seg000:01FF seg000:01FF sub_1FF proc far ; CODE XREF: seg000:0648p seg000:01FF ; seg000:071Fp ... seg000:01FF push large 0 seg000:0205 popfd seg000:0207 mov bx, sp seg000:0209 mov dx, [bx+2] seg000:020C xor ax, ax seg000:020E mov gs, ax seg000:0210 assume gs:seg000 seg000:0210 mov es, ax seg000:0212 assume es:seg000 seg000:0212 push 30h ; '0' seg000:0214 pop fs seg000:0216 assume fs:nothing seg000:0216 cli seg000:0217 lgdt qword ptr ds:15A8h seg000:021C lidt qword ptr ds:15B0h seg000:0221 mov si, 1D6Ch seg000:0224 mov word ptr [si+2], 68h ; 'h' seg000:0229 mov si, 1D68h seg000:022C mov word ptr [si+2], 68h ; 'h' seg000:0231 mov eax, cr0 seg000:0234 or dx, dx seg000:0236 jz loc_247 seg000:023A or eax, 80000001h seg000:0240 mov cr0, eax seg000:0243 nop seg000:0244 jmp short loc_253 seg000:0244 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0246 db 90h ; ? seg000:0247 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0247 seg000:0247 loc_247: ; CODE XREF: sub_1FF+37j seg000:0247 or eax, 1 seg000:024B mov cr0, eax seg000:024E xchg bx, bx seg000:0250 jmp short loc_253 seg000:0250 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0252 db 90h ; ? seg000:0253 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:0253 seg000:0253 loc_253: ; CODE XREF: sub_1FF+45j seg000:0253 ; sub_1FF+51j seg000:0253 push 58h ; 'X' seg000:0255 push 259h seg000:0258 retf seg000:0259 mov ax, 60h ; '`' seg000:025C mov ds, ax seg000:025E assume ds:nothing seg000:025E mov ss, ax seg000:0260 assume ss:nothing seg000:0260 xor bx, bx seg000:0262 lldt bx seg000:0265 or dx, dx seg000:0267 jnz locret_271 seg000:026B mov bx, 28h ; '(' seg000:026E ltr bx seg000:0271 seg000:0271 locret_271: ; CODE XREF: sub_1FF+68j seg000:0271 retn seg000:0271 sub_1FF endp seg000:0271 seg000:0272 seg000:0272 ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹? seg000:0272 seg000:0272 ; Attributes: bp-based frame seg000:0272 seg000:0272 sub_272 proc near ; CODE XREF: sub_24DE+34p seg000:0272 ; sub_24DE+4Bp ... seg000:0272 seg000:0272 arg_0= dword ptr 4 seg000:0272 seg000:0272 enter 0, 0 seg000:0276 push di seg000:0277 push si seg000:0278 push ds seg000:0279 push es seg000:027A les di, [bp+arg_0] seg000:027D assume es:nothing seg000:027D mov ax, es:[di] seg000:0280 sub ax, 10h seg000:0283 jnb short loc_28C seg000:0285 mov word ptr es:[di], 0FFFFh seg000:028A jmp short loc_2DE seg000:028C ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:028C seg000:028C loc_28C: ; CODE XREF: sub_272+11j seg000:028C shl ax, 1 seg000:028E cmp ax, 14h seg000:0291 nop seg000:0292 jb short loc_29C seg000:0294 mov word ptr es:[di+4], 0FFFFh seg000:029A jmp short loc_2DE seg000:029C ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:029C seg000:029C loc_29C: ; CODE XREF: sub_272+20j seg000:029C mov bx, ax seg000:029E mov ax, cs:[bx+30Ch] seg000:02A3 push es seg000:02A4 push di seg000:02A5 push ax seg000:02A6 mov ax, es:[di+4] seg000:02AA mov bx, es:[di+6] seg000:02AE mov cx, es:[di+8] seg000:02B2 mov dx, es:[di+0Ah] seg000:02B6 mov si, es:[di+0Ch] seg000:02BA mov es, word ptr es:[di+0Eh] seg000:02BE retn |
|
22楼#
发布于:2007-02-20 11:13
1. Open CMD
2.Goto C: ....>C: ...>cd \ c:> 3.open the ntld use debug c:\debug ntldr - 4. UnAsm -u .... .... 一直u下去就能得到全部代码了。 __________________________________________________________________________ ????????????????????????????????????????????????????????? 很有意思。为什么不更改boot.ini文件呢?不是比改ntldr要好,要不用实模式的asm |
|
23楼#
发布于:2007-03-27 17:29
我看见过反汇编加分析的文章,但是现在找不到了
|
|
24楼#
发布于:2007-06-24 19:17
NTLDR里面好像一半代码是16位的,一半是32位的.
|
|
25楼#
发布于:2007-06-24 20:20
ntldr一共两部分,用winhex打开,搜索 mz ,把mz之前的保存为.com文件,后面的保存为.exe文件,然后反汇编,(如果有兴趣的话你可以看看nt的源代码阿〉)
|
|
26楼#
发布于:2007-09-30 00:55
关注中.....................
|
|
27楼#
发布于:2007-10-13 13:09
不懂这些东西,路过
|
|
28楼#
发布于:2008-02-18 22:22
NTLDR不是PE格式的,NTLDR前面是含有引导代码的,所以前部分是用汇编写的,而且是处于实模式,而且它是由第0扇区里的代码来加载的,第0扇区又不认识PE
|
|
29楼#
发布于:2008-02-27 14:23
引用楼主walkonthesky于2004-05-19 16:27发表的 这里有谁分析过NTLDR?好像不是PE格式的文件,无法反汇编。 : 你要把起动菜单修改成什么? 修改成图片么? bochs是可以跟踪调试,我试过,应当用bochs 装nt4, 2k要有命的人估计才等得装完 |
|
30楼#
发布于:2008-09-24 14:30
昨天睡觉前刚看了~
网上有 你找一下 利用NTLDR进入RING0相关 就可以找到 |
|
上一页
下一页