Articles of 代码注入

如何使用ptrace(2)来改变syscalls的行为?

有没有任何指南或例子(尤其是ARM的)或使用ptrace库来影响其他进程的执行? 例如,为了使它相信一些数据出现在文件描述符上(即释放select/轮询一些结果和“回答”下面的内核之前读取系统调用)。 期待涉及PTRACE_SYSEMU的事情。 可以用便携的方式来完成吗? 我想要像libc重写LD_PRELOAD技巧,但可以在运行时附加。 可以用一些gdb命令来完成吗? 理想的变种是,如果有一些库可以方便地挂载到系统调用中,并在实际调用(或模拟它们)之前进行编辑,就像使用LD_PRELOAD进行调用一样。 @link 使用PTRACE_SYSEMU的任何好的指南?

mysql注入损害?

我只是注意到,我的mysql_real_escape_string函数不是在我的一些PHP脚本中的一个“”,它很容易被注入,像sleep(30)在我的生产网站上执行的东西。 我正在进行PDO路线,并在阅读了大量阅读之后执行准备好的陈述。 但是这还没有实施。 几乎没有问题,我在我的日志中看到很多在线人员进行注射,但是我看不到任何损害。 该网站运行的用户执行sql查询具有update/select/delete/insert只update/select/delete/insert权限。 但是我担心sleep(30)事情sleep(30) ,什么不行,如果他们做了什么损害,我没有看到? 你能告诉我在哪里检查损害赔偿金还是我至less承担了重大损失? 他们可以改变隐藏的MySQL设置或系统设置? 顺便说一下,我试图在centos 6+ linux和php上运行最新的更新。 谢谢 编辑:只是为了澄清,数据库几乎是空的,我并不担心数据在那里,密码散列sh512。 所以里面的数据并不重要,因为这是我写的一个新的应用程序。 但是我担心如果他们改变了系统上的任何东西,或者我应该担心的数据库。 我看到的一些注入有Java等,但日志是巨大的,它需要时间去超过它。 我也看到注射中的一些模式string。 现在的问题是他们可以读我的模式信息或修改它们? 为什么像睡眠这样的function在工作,如果它是一个受限制的用户? 他们还能运行什么其他function? 注意我在同一个MySQL中有其他的数据库。 我应该为这些担心吗? 我的意思是:select * from dbname where id = scaped_string我应该把它放在引号中

在两个进程(C,Windows)之间共享内存

由于我没有find一个问题的答案在这里以前问我在尝试一种不同的方法。 有什么办法可以在两个进程之间共享内存? 第二个进程从注入获取信息,因为这是一个传统程序,它不再被支持。 我的想法是在那里注入一些代码,在我传递给注入的程序的结构中,将地址(或其他)传递给共享内存,我需要运行的数据位于该共享内存中。 一旦我得到的数据,我将在注入的线程中填充我自己的variables。 这可能吗? 怎么样? 代码表示赞赏。 编辑: 我认为这不清楚,所以我会澄清。 我知道如何注入。 我已经在做了。 这里的问题是将dynamic数据传递给注入。

我如何防止DLL注入

所以有一天,我看到这个: http://www.edgeofnowhere.cc/viewtopic.php?p=2483118 它通过三种不同的DLL注入方法。 我将如何防止这些过程? 或者至less,我如何防止第一个? 我想也许是一个Ring 0驱动程序也许是唯一的方法来阻止所有这三个,但我想看看社区的想法。

如何使用SetWindowsHookEx和WH_KEYBOARD钩住外部进程

我想挂钩例如记事本没有成功。 做一个全局钩子似乎工作正常。 在XP SP2上testing。 编辑:修正的代码现在工作。 MyDLL代码 #include <windows.h> #include <iostream> #include <stdio.h> HINSTANCE hinst; #pragma data_seg(".shared") HHOOK hhk; #pragma data_seg() //#pragma comment(linker, "/SECTION:.shared,RWS") compiler error in VC++ 2008 express LRESULT CALLBACK wireKeyboardProc(int code, WPARAM wParam,LPARAM lParam) { if (code < 0) { return CallNextHookEx(0, code, wParam, lParam); } Beep(1000, 20); return CallNextHookEx(hhk, code, wParam, lParam); […]

如何获得一个DLL加载过程句柄

我试图得到从DLL加载DLL的过程的句柄。 我的方法是:在DLL_PROCESS_ATTACH我调用EnumWindows(EnumWindowsProc,NULL); 我的EnumWindowsProc实现如下: BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) { if(GetCurrentProcessId() == GetWindowThreadProcessId(hWnd,NULL)){ MessageBox(hWnd,L"I loaded your dll!",L"it's me",MB_OK); return TRUE; } return FALSE; } 问题是,GetCurrentProcessId()== GetWindowThreadProcessId(hWnd,NULL)从来没有真正的(如果我放置在if块的一切工作,但它被调用每个列出的窗口之外的messagebox调用)。 有没有其他方法可以说明问题? 这种做法是完全错误的还是我错过了一些东西? 提前感谢