|
[求助]外设禁止问题 (过滤 驱动)
[QUOTE=skypismire;782818] 不太懂,应该可行吧,不过感觉这个思路太底层了,涉及到PDO了,涉及硬件相关的咚咚就头疼,资料难找阿[/QUOTE] 呵呵,谢谢啊 |
|
[求助]外设禁止问题 (过滤 驱动)
X64机器呢? |
|
[求助]外设禁止问题 (过滤 驱动)
只是实现禁止。。。不知道这个思路可能否实现? |
|
|
|
[求助]如何windows 编程 以禁掉 蓝牙、红外设备
你好,先谢谢你。我是想用编程的方法禁止。就是说,禁止蓝牙、红牙,是我程序的一个功能,我该怎么实现它? |
|
[求助]如何windows 编程 以禁掉 蓝牙、红外设备
先谢谢了,我看看. |
|
[求助]任务管理器操作
望大侠能再详细一些,最好有点代码,谢谢啊!! |
|
[讨论]有趣的C程序,欢迎踊跃讨论
整数类型,短到长,无符号进行无符号扩展;有符号的进行有符号扩展; void main( void ) { unsigned char a=0x80 ; if (a == 0x80)//输出T printf ("T\n") ; else printf ("F\n") ; if (a == (char) 0x80)//输出F printf ("T\n") ; else printf ("F\n") ; if (a == (unsigned char) 0x80)//输出T printf ("T\n") ; else printf ("F\n") ; } 10: if (a == 0x80) 0040104C 8B 45 FC mov eax,dword ptr [ebp-4] 0040104F 25 FF 00 00 00 and eax,0FFh 00401054 3D 80 00 00 00 cmp eax,80h 00401059 75 0F jne main+3Ah (0040106a) 11: printf ("T\n") ; 0040105B 68 20 F0 42 00 push offset string "T\n" (0042f020) 00401060 E8 7B 71 00 00 call printf (004081e0) 00401065 83 C4 04 add esp,4 12: else 00401068 EB 0D jmp main+47h (00401077) 13: printf ("F\n") ; 0040106A 68 1C F0 42 00 push offset string "F\n" (0042f01c) 0040106F E8 6C 71 00 00 call printf (004081e0) 00401074 83 C4 04 add esp,4 14: 15: 16: if (a == (char) 0x80) 00401077 8B 4D FC mov ecx,dword ptr [ebp-4] 0040107A 81 E1 FF 00 00 00 and ecx,0FFh 00401080 83 F9 80 cmp ecx,80h 00401083 75 0F jne main+64h (00401094) 17: printf ("T\n") ; 00401085 68 20 F0 42 00 push offset string "T\n" (0042f020) 0040108A E8 51 71 00 00 call printf (004081e0) 0040108F 83 C4 04 add esp,4 18: else 00401092 EB 0D jmp main+71h (004010a1) 19: printf ("F\n") ; 00401094 68 1C F0 42 00 push offset string "F\n" (0042f01c) 00401099 E8 42 71 00 00 call printf (004081e0) 0040109E 83 C4 04 add esp,4 22: if (a == (unsigned char) 0x80) 004010A1 8B 55 FC mov edx,dword ptr [ebp-4] 004010A4 81 E2 FF 00 00 00 and edx,0FFh 004010AA 81 FA 80 00 00 00 cmp edx,80h 004010B0 75 0F jne main+91h (004010c1) 23: printf ("T\n") ; 004010B2 68 20 F0 42 00 push offset string "T\n" (0042f020) 004010B7 E8 24 71 00 00 call printf (004081e0) 004010BC 83 C4 04 add esp,4 24: else 004010BF EB 0D jmp main+9Eh (004010ce) 25: printf ("F\n") ; 004010C1 68 1C F0 42 00 push offset string "F\n" (0042f01c) 004010C6 E8 15 71 00 00 call printf (004081e0) 004010CB 83 C4 04 add esp,4 注意以上三句加红的: (1)if (a == 0x80):机器码3D 80000000 //用eax可省去寄存器 00401054 3D 80 00 00 00 cmp eax,80h (2)if (a == (char) 0x80):机器码83 F9 80 //F9=ecx 00401080 83 F9 80 cmp ecx,80h (3)if (a == (unsigned char) 0x80):机器码81 FA 80000000 //FA=edx 004010AA 81 FA 80 00 00 00 cmp edx,80h 再参考: IA-32 Intel Architecture Software Developer’s Manual, Volume 2;p3-76表:CMP—Compare Two Operands Opcode Instruction Description 3C ib CMP AL, imm8 Compare imm8 with AL 3D iw CMP AX, imm16 Compare imm16 with AX 3D id CMP EAX, imm32 Compare imm32 with EAX 80 /7 ib CMP r/m8, imm8 Compare imm8 with r/m8 81 /7 iw CMP r/m16, imm16 Compare imm16 with r/m16 81 /7 id CMP r/m32,imm32 Compare imm32 with r/m32 83 /7 ib CMP r/m16,imm8 Compare imm8 with r/m16 83 /7 ib CMP r/m32,imm8 Compare imm8 with r/m32 38 /r CMP r/m8,r8 Compare r8 with r/m8 39 /r CMP r/m16,r16 Compare r16 with r/m16 39 /r CMP r/m32,r32 Compare r32 with r/m32 3A /r CMP r8,r/m8 Compare r/m8 with r8 3B /r CMP r16,r/m16 Compare r/m16 with r16 3B /r CMP r32,r/m32 Compare r/m32 with r32 段落:Description ..........When an immediate value is used as an operand, it is signextended to the length of the first operand...... 第一个if用的机器码为3D 同时操作数为四字节的80000000 (4字节)=(00000080H) 第二个if用的机器码为83,寄存器 F9,操作数是 80(1字节),此处,由于上面的那句话,可见,此1字节的80会被有符号扩展为32位长度(因为寄存器(操作数1)是32位的) =80FFFFFF(即FFFFFF80H); 第三个if用的机器码为81,寄存器 FA,操作数 80000000(4字节)=(00000080H) 所以,第一、三个if比较是相等的因为:易见寄存器中的值都是00000080;同时立即数是4字节长的00000080H; 而第二个if由于要进行有符号扩展,所以比较结果不等; 注意,第一、三个机器码(3D、81)只接受16/32bit的立即数;而第二个机器码83只接受8bit立即数; 鄙人拙见,不妥之处,望讨论;谢谢关注; |
|
[求助]dll重载函数情况
呵呵。。谢谢啊。。我回头再试试。。 |
|
[求助]dll重载函数情况
[QUOTE=exile;704483]看图 [/QUOTE] 先谢谢你了,这个贴子看的人不少,目前就你一人回复。是不是我问的太弱的。。呵呵。。 问题: 但od中只显示了两个"add" 为什么,用dependendcy看了一下,就是“?add@@YAHHH@Z”这样的符号,这个符号看起来像是编译器处理时的那些符号,而像其它DLL里面函数名字都挺好看的:WriteFile 是不是因为,dllexport导出的是默认符号,而“好看”的那些是用.def导出的? 呵呵。。 还有,若用GetProcAddress调用add函数,如果是上面那个符号的话,是用“?add@@YAHHH@Z”和“?add@@YAMMM@Z”呢? 还是,"add"? 若是add,是不是又面临分辨重载函数的困境。。 望再赐教。。谢谢。。 |
|
|
|
[求助]拦截进程启动的一点疑问
呵呵,先谢谢支持。不过,能否再给些提示。。 |
|
|
|
[求助]拦截进程启动的一点疑问
呵呵,多谢!!若是再多些汉字会更好 |
|
[求助]拦截进程启动的一点疑问
我也有类似感觉,但由于是新手不太肯定,也见过一些程序是用此函数拦的。 《深入解析windows操作系统第4版》潘爱民译,这本书第6章(P304)有讲进程创建,其中阶段2就是调用NtCreateProcess()来创建一个进程对像。P300页还第二段还提到了CreateProcess(还有CreateProcessAsUser,CreateProcessWithTokenW,CreateProcessWithLogon等)函数,加上304页提到的NtCreateProcess()很是疑惑。 《Windows NT 2000 Native API Reference》中有一句关于ZwCreateProcess()的:The process created does not contain any threads.说明此函数真只是创建了进程内核对象。 还有一句是:Related Win32 Functions: CreateProcess, CreateProcessAsUser.说明,CreateProcess 函数确实跟 ZwCreateProcess()(NtCreateProcess())有关啊。如果,这两本书都是正确的话,那前面老外的话。。。 呵呵。。还请大家指教。。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值