我正在构建一个将敏感数据传输到我的服务器的iOS应用程序,我正在签署我的API请求作为额外措施.我想尽可能地进行逆向工程,并且使用Cycript查找某些真实应用程序的签名密钥,我知道通过附加到流程来找到这些密钥并不困难.我完全清楚,如果有人真的很熟练并且努力尝试,他们最终会利用,但我想尽可能地努力,同时仍然方便自己和用户.
我可以检查越狱状态并采取其他措施,或者我可以执行SSL固定,但通过附加到进程并修改内存,两者仍然很容易绕过.
有没有办法检测是否有某些东西(无论是Cycript,gdb,还是任何可用于破解流程的类似工具)附加到流程中,而不是被App Store拒绝?
编辑:这不是检测iOS应用程序是否在调试器中运行的重复.该问题与输出更相关,它检查输出流以确定是否有输出流附加到记录器,而我的问题与此无关(并且该检查不包括我的条件).
我正在尝试编写一个执行任意 shellcode 的 C# 函数。好像是在工作,只是当创建的线程退出时,整个进程终止。我自己没有想出这个代码,而是主要从这个网站得到它:https : //webstersprodigy.net/2012/08/31/av-evading-meterpreter-shell-from-a-net-service/
这是执行shellcode的函数:
public void ExecuteShellCode(String code)
{
//pipe msfvenom raw to xxd -p -c 999999 (for example)
byte[] shellcode = StringToByteArray(code);
UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length, 0x1000, 0x40);
Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);
IntPtr hThread = IntPtr.Zero;
UInt32 threadId = 0;
hThread = CreateThread(0, 0, funcAddr, IntPtr.Zero, 0, ref threadId);
WaitForSingleObject(hThread, 0xFFFFFFFF);
}
Run Code Online (Sandbox Code Playgroud)
我使用以下示例调用它:
(注意 - 你可能不应该从互联网上随机运行 shellcode,这个例子是无害的,但你不应该相信我的话)
我用 msfvenom 生成了 shellcode - 它只是弹出一个消息框。
rsh.ExecuteShellCode(@"d9eb9bd97424f431d2b27731c9648b71308b760c8b761c8b46088b7e208b36384f1875f35901d1ffe1608b6c24248b453c8b54287801ea8b4a188b5a2001ebe334498b348b01ee31ff31c0fcac84c07407c1cf0d01c7ebf43b7c242875e18b5a2401eb668b0c4b8b5a1c01eb8b048b01e88944241c61c3b20829d489e589c2688e4e0eec52e89fffffff894504bb7ed8e273871c2452e88effffff894508686c6c20416833322e64687573657230db885c240a89e656ff550489c250bba8a24dbc871c2452e85fffffff686f6b582031db885c240289e368732158206869656e64687920467268486f776431c9884c240e89e131d252535152ffd031c050ff5508");
while (true)
{
Thread.Sleep(42);
}
Run Code Online (Sandbox Code Playgroud)
如果您需要将字符串转换为字节的代码,它在这里:
private static byte[] …Run Code Online (Sandbox Code Playgroud)