|
|
|
|
|
[求助]有几个关于[]的问题想请教下。
[]是取地址指定存储单元中的内容,但是MASM中这个符号的行为很怪,用的时候要注意一下 |
|
[求助]有几个关于[]的问题想请教下。
段寄存器可加可不加,不加的话会自动指定默认的段寄存器 |
|
[疑问]关于单片机程序
对于这类程序,你当然希望它一直运行而不停下了,所以程序的主体基本都是这样的形式 while (1) { xxxxxx; } 不可能指望它有始有终而能够接受“操作系统”的“管理”的 |
|
|
|
|
|
|
|
汇编问题请教高人。。
MASM有很多让人看不懂的东西, 却一直没有修正过 顺便说说, 如果确实要取某固定地址(例如00400000h)的内容也不难,只需要用 mov eax, DS:[00400000h] 或者 mov eax, DS:00400000h 就可以了 两句编译结果相同 |
|
[求助]堆操作函数的序列化访问机制的疑问
请分清堆(Heap)和栈(Stack,常称为堆栈) |
|
汇编问题请教高人。。
系统总结: (A)在调试器中 mov eax, 00400000h (a) 意思是把00400000h这个立即数送入eax寄存器, 执行后eax存放有数00400000h mov eax, [00400000h] (b) 调试器基本上见不到这种写法,通常是 mov eax, DWORD PTR [00400000h] (c) 因为写法(b)不能体现存储单元的大小 意思为把内存单元00400000h开始的双字送入eax 如果00400000h存有78h,00400001h存有56h,下面两个单元依次存放有34h和12h, 那么eax中最后是12345678h (B)在MASM编译环境中 我们测试3条语句 mov eax, DWORD PTR [00400000h] mov eax, WORD PTR [00400000h] mov eax, 00400000h 的编译结果 结果是: 0040104B |. B8 00004000 mov eax,00400000 00401050 |. B8 00004000 mov eax,00400000 00401055 |. B8 00004000 mov eax,00400000 这个结果非常令人惊异! 令人惊异之处有两点: 1.第2句(mov eax, WORD PTR [00400000h])竟然编译通过?! 2.三句编译结果竟然完全相同!从生成的机器码中可以看出 所以casn朋友的说法是正确的 总结一下, 1.在MASM中, 形如 [立即数] 或者 [地址标号] 的语句, MASM从来都是无视方括号的存在, 直接把它作为立即数看待, 即使加上PTR也如此 2.形如 [数据标号] 的语句, MASM从来也都是无视方括号存在, 但是这一回却总把它编译为取括号中地址的内容, 即使不加方括号, 还是会取地址的内容 3.一旦方括号中有寄存器, 那么方括号就会发挥它应该有的作用, MASM再也不会无视方括号了 规律1的例子: mov eax, [00400000h] loc: mov eax, [loc] 等价于 mov eax, 00400000h (如果loc的地址就是00400000h) 规律2的例子 a dd 5 mov eax, [a] 等价于 mov eax, a 最后eax = 5 规律3的例子 mov eax, [ebx] 和mov eax, ebx 明显是不同的 |
|
|
|
我想学习反汇编有什么书比较好
Secrets of Reverse Engineering |
|
我想学习反汇编有什么书比较好
楼主可以参考下逆向工程的书 |
|
|
|
关于反汇编
楼主可以去看看有关逆向工程的文章 |
|
$CTW0中的Bug?
最初由 lemony 发布 4-F的原始版本中就是这样的,这和C语言中的\n不一致,但是为尊重原作者起见,我没有改动 \: 21h '!' \{ 28h '(' \} 29h ')' \[ 3Ch '<' \] 3Eh '>' \= 22h '"' \- 27h "'" \\ 5Ch '\' \* - - ;; To workaround "CopyFile" -> CopyFileA problem \0 0 zero byte/word \a 7 alert (BEL) \b 8 backspace \t 9 horizontal tabulation \n 0Dh, 0Ah new line \l 0Ah line feed \v 0Bh verticalal tabulation \f 0Ch formfeed \r 0Dh carrige return |
|
哪位朋友有msdn 2005宇宙版?
花$$买吧... |
|
|
|
反汇
******************************************************** 0x4013e6 and esp,0xfffffff0\\为什么要要进行这一步,问了许多人都说不明白??? ******************************************************** 进行这步的目的是要让堆栈按16字节对齐,这可以在编译器中设置 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值