Beispiel #1
0
bool
BlackList::is_black_listed(uint32_t pid)
{
	char buffer[2048];
	sprintf(buffer, "/proc/%u/cmdline", pid);

	if (!file_exists(buffer))
	{
		return true;
	}

	string contents;
	FILE *in = fopen(buffer, "r");
	if (in == NULL)
	{
		return true;
	}
	*buffer = 0;
	if (NULL == fgets(buffer, sizeof (buffer), in))
	{
		fclose(in);
		return true;
	}
	fclose(in);
	contents = buffer;
	replace_all(contents, "\n", "");
	return is_black_listed(contents.c_str());
}
Beispiel #2
0
 void find_bridges() {
   walk::methods(*m_scope,
                [&](DexMethod* m) {
                  if (has_bridgelike_access(m)) {
                    auto bridgee = find_bridgee(m);
                    if (!bridgee || is_black_listed(bridgee)) return;
                    m_bridges_to_bridgees.emplace(m, bridgee);
                    TRACE(BRIDGE,
                          5,
                          "Bridge:%p:%s\nBridgee:%p:%s\n",
                          m,
                          SHOW(m),
                          bridgee,
                          SHOW(bridgee));
                  }
                });
 }