|
[原创]利用shellCode跨进程调用函数x86
/* * 定义调用函数的代码 * push ebp * mov ebp,esp * sub esp,0x3c * push arg15 * push arg14 * push arg13 * push arg12 * push arg11 * push arg10 * push arg9 * push arg8 * push arg7 * push arg6 * push arg5 * push arg4 * push arg3 * push arg2 * push arg1 * call pCallFun * mov dword [resEax],eax * add esp,0x3c * mov esp,ebp * pop ebp * ret */ /* * 定义callFunCode 这个是调用call的代码 00000000 55 push ebp 00000001 89E5 mov ebp, esp 00000003 C9 leave 00000004 58 pop eax 00000005 870424 xchg eax, [esp] 00000008 FFE0 jmp eax 0000000A 89EC mov esp, ebp 0000000C 5D pop ebp 0000000D C3 ret */ 你这两段汇编能正常工作吗,在你这里jmp eax=jmp arg1,我看你的runRemoteFunc(hProcess, pGetModuleHandleA, (int)pDllName)这些里面arg1并不是一个函数地址啊 |
|
|
|
[讨论] 十万个为什么之 敲代码的时候听音乐效率会提升吗?
lost rivers,很好听,一边听一边写代码,能一口气一千行代码0警告0错误
最后于 2021-5-18 11:00
被htpidk编辑
,原因:
|
|
|
|
[原创]三个反汇编库的简单介绍和使用
反向 汇编转机器码 用什么 |
|
|
|
[求助]关于CreateMutex,CloseHandle的调用问题?
releasemutext,不是CloseHandle |
|
《C与指针》指针部分个人学习笔记
4.int *(*f)( );这个声明有两对括号,每对含义不同,第二个是函数调用操作符,第一个起到聚组的作用。它使得间接访问在函数调用之前进行,使得f成为一个函数指针,它所指向的函数都返回一个整数值。 6.int *(*f)( );它与前一个声明基本相同,f也是一个函数指针,只是所指向的函数返回值是一个整形指针,必须对其进行间接访问操作才能得到整数值。 这两个一样的,4应该是int (*f)( ) |
|
[分享]这段时间学习驱动开发的相关的一些笔记
mark收藏一下 |
|
|
|
R3下HOOK CreateThread怎么会崩溃?
風輕澐淡 你的NewCreateThread是这样写的, HANDLE WINAPI NewCreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId) { return Original_EndCreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId); } 为什么生成的代码是 push ebp mov ebp,esp pop ebp jmp CreateThreadAddr+5 是哪个版本的编译器生成的这个代码,还是NewCreateThread里的代码是你自己__asm内联写的而不是return Original_EndCreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId); 如果是你内联写的NewCreateThread,你试试 push ebp mov ebp,esp jmp CreateThreadAddr+5 去掉 pop ebp |
|
|
|
R3下HOOK CreateThread怎么会崩溃?
你的NewCreateThread里可没有 push ebp mov ebp,esp pop ebp jmp啊,你的是CALL Original_EndCreateThread |
|
R3下HOOK CreateThread怎么会崩溃?
你的NewCreateThread里调用了Original_EndCreateThread,而Original_EndCreateThread=(EndCreateThread)(CreateThreadAddr+5),(EndCreateThread)(CreateThreadAddr+5)并不是函数开始的地方,你要在NewCreateThread里先恢复CreateThreadAddr的前5个字节然后再call CreateThreadAddr |