|
|
|
[招聘]瑞得天成招聘C++
我们公司是做互联网媒体的,C++岗位工作内容在上面,有意向可以电话或者邮件联系。 |
|
某公司笔试题目 求助
利用宏实现是最简单的,print在main上面,就可以把main定义为任何宏所定义内容 void print() { printf("hello world\n"); #define main main(){print();} void null } void main() { } 宏解开后为下面代码: ----------------------------------------- void print() { printf("hello world\n"); } void main(){print();} void null() { } |
|
[求助]如何获取一个过程的Size
我写的一个基于 ade32反汇编引擎的一个计算函数长度的一个函数 //计算函数大小,自己写的,绝对可靠,可识别VC编译出来的死循环,没有RET的函数 ULONG SizeOfFunction(PVOID lpFun) { ULONG Length; ULONG Result = 0; PBYTE pCode=(PBYTE)lpFun; disasm_struct diza; UINT max_len=0; //通过跳转指令偏移已知的最后指令位置 do { Length = ade32_disasm(pCode,diza); if ( Length==5 && diza.disasm_opcode == 0xE9 ) { long offset=*(LONG *)&pCode[1]; //TRACE("max_len:%d Result:%d Length:%d opcode %08X offset:%d\n",max_len, Result, Length, diza.disasm_opcode, offset); //死循环函数处理,如果向后跳,正常方法 if (offset>0) { if (max_len<Result+Length+offset) { max_len=Result+Length+offset+1; } }else{ //如果向后跳,且现当前指令执行完后的代码长度大于max_len,则认为后面没有其他代码了 if (Result+Length+1>max_len) { //print_opcode(pCode,Length); Result += Length; break; } if (max_len<Result+Length+offset) { max_len=Result+Length+offset+1; } } } if ( Length==2 && diza.disasm_opcode == 0xEB ) { char offset=(char)pCode[1]; //TRACE("max_len:%d Result:%d Length:%d opcode %08X offset:%d\n",max_len, Result, Length, diza.disasm_opcode, offset); //死循环函数处理,如果向后跳,正常方法 if (offset>0) { if (max_len<Result+Length+offset) { max_len=Result+Length+offset+1; } }else{ //如果向后跳,且现当前指令执行完后的代码长度大于max_len,则认为后面没有其他代码了 if (Result+Length+1>max_len) { //print_opcode(pCode,Length); Result += Length; break; } if (max_len<Result+Length+offset) { max_len=Result+Length+offset+1; } } } if ((Length == 2) && (diza.disasm_opcode >= 0x70 && diza.disasm_opcode <= 0x7F)) { if (max_len<Result+Length+(char)pCode[1]) { max_len=Result+Length+(char)pCode[1]+1; } //TRACE("offset:%d max_len:%d \n", (char)pCode[1], max_len); } //print_opcode(pCode,Length); Result += Length; if ((Length == 1) && (diza.disasm_opcode == 0xC3) && Result>=max_len) { //TRACE("0xC3 %d %d %d\n", max_len, Result, Result>=max_len); break; } if ((Length == 3) && (diza.disasm_opcode == 0xC2) && Result>=max_len) { //TRACE("0xC2 %d %d %d\n", max_len, Result, Result>=max_len); break; } pCode +=Length; //TRACE("Result-Len:%d", Result); } while (Length); //TRACE("Result-Len:%d", Result); return Result; } |
|
如何过360修改Hosts文件
你在IE内可以做动作,360有个urlproc.dll在IE加载时会 CreateFile("...\Hosts") 文件,使用这个句柄操作应该不会提示什么 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值