|
[招聘](2013.06.09)百度(深圳)安全招聘 - 客户端研发工程师、病毒分析师、windows内核开发工程师
我貌似满足。2和4两点。。。貌似可以试试啊。。。百度还是很有诱惑力的 |
|
111111111111111111111
太伤心了。。。逆向工程师月薪4K到12K。。。 妄我寒窗苦敲代码十余月。。。埋头苦看汇编数万行。。。唉 |
|
[原创]再写手工打造可执行程序
尽管不用现有的16进制字节码编辑工具,“纯手工打造”。。。有些不可取。但是楼主对于PE的各个字段的详细解释。对于新人学习PE结构有很大帮助啊。。。。确实佩服这样的耐心。。。 |
|
[求助][求助][求助]SSDT inlineHOOK 传参问题
你不是要写个hook函数吗? 就是你的jmp跳过去的你的代码,那不是你的函数吗? 你写那个函数的时候,那参数写成跟 NtOpenProcess一模一样。然后在你的这个函数里面直接正常用参数就行了。 我理解的你问的问题是,要在自己的钩子函数里面访问NtOpenProcess函数的参数,所以就用我上面的方法。 原理是因为,若你用汇编写的话,访问参数一般正常是[ebp + 8]. [ebp + C] 这样的,但是这样就依赖于编译器,有时候编译器编译生成的汇编代码,并不用ebp去访问参数,而用esp。然而像上面我说的,你直接写成C语言的话,你访问参数,编译器也会编译成[ebp +8],当然它编译成esp也好,ebp也好,你不用关心,反正访问到了参数。 |
|
[求助]怎么查看进程的 0xC0000000 地址
你在VC写的程序正常情况下都是3环的应用程序,你最大能访问的地址不能超过0x7FFFFFFF windows 32位CPU情况下,虚拟地址为4G,应用程序2G,内核占2G,内核的2G你无权访问。 而0xC0000000明显属于0环地址空间,也就是内核的。 windebug可以直接看。 若是你要写程序读那个地址空间的内容,就要写驱动程序,或者构造中断或者调用门或者异常,进入0环去读写那个内存。。。。 |
|
[讨论]C++嵌入汇编,关于sub esp,4*n的问题,求解答
因为对于32位PC机,内存都是按四字节对齐,尤其是栈,也就是esp的值,32位PC机,push pop指令都是固定的推入和弹出 四个 字节 , 具体我没拉你的代码去调试,不过按理应该是有一种专门检查esp的值的机制,当esp的值不是4的倍数的时候会产生一个异常。。。 64位CPU的话,就会变成8个字节。。。。会变成8的倍数 |
|
[讨论]怎么枚举当前正在运行的进程id
VOID GetProcessInformation(char ( * sOutProcessInformation)[30] ) //获取进程列表 { HANDLE hSnapshot; PROCESSENTRY32 stProcess; BOOL lReturnVaule; int i = 0; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,0); lReturnVaule = Process32First(hSnapshot , &stProcess); while(lReturnVaule) { sprintf(sOutProcessInformation[i++] , "%d:%s--%d" , i,stProcess.szExeFile,stProcess.th32ProcessID); lReturnVaule = Process32Next(hSnapshot ,&stProcess); } } VOID ShowProcess(char (* ShowPrcInf)[30]) //显示进程列表 { for(int i = 0; ShowPrcInf[i][0] != NULL ; i ++ ) { puts(ShowPrcInf[i]); } } DWORD GetProessId(DWORD lpProessNum) //通过标号获取进程ID { HANDLE Snatshot = NULL; DWORD dwProessId = 0;; PROCESSENTRY32 StructProess ; DWORD i = 0; Snatshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS,0); BOOL ReturnValue = Process32First( Snatshot , &StructProess); while(ReturnValue) { if(i == lpProessNum) { dwProessId = StructProess.th32ProcessID ; return dwProessId; } ReturnValue = Process32Next( Snatshot , &StructProess ); i++; } CloseHandle(Snatshot); return FALSE; } 上面三个函数是我从自己曾经写过的一个工程中提取出来的,作用是通过调用API获取进程快照,然后遍历进程,获取信息,然后另外一个函数获取进程ID。 那详细信息里面包含ID。 这是一种方法,另一种方法是你可以写驱动在0环,遍历进程链表,在Eprocess结构体里面有记录进程ID。。。 这种方法比较繁琐一些,不详解了。。。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值