本文整理汇总了C++中cs_close函数的典型用法代码示例。如果您正苦于以下问题:C++ cs_close函数的具体用法?C++ cs_close怎么用?C++ cs_close使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cs_close函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: the_end
static int the_end(void *p) {
if (cd) {
cs_close (&cd);
cd = 0;
}
return R_TRUE;
}
开发者ID:CodingFree,项目名称:radare2,代码行数:7,代码来源:asm_sysz.c
示例2: hook_init2
int hook_init2()
{
if(g_capstone != 0) {
cs_close(&g_capstone);
}
cs_opt_mem cs_mem;
cs_mem.malloc = &_cs_malloc;
cs_mem.calloc = &_cs_calloc;
cs_mem.realloc = &_cs_realloc;
cs_mem.free = &_cs_free;
// TODO Is there an alternative besides doing your own implementation?
cs_mem.vsnprintf = &vsnprintf;
cs_option(0, CS_OPT_MEM, (size_t) (uintptr_t) &cs_mem);
_capstone_init();
// Memory for function stubs of all the hooks.
slab_init(&g_function_stubs, 64, 128, PAGE_EXECUTE_READWRITE);
// TODO At the moment this only works on Vista+, not on Windows XP. As
// shown by Brad Spengler it's fairly trivial to achieve the same on
// Windows XP but for now.. it's fine.
register_dll_notification(&_ldr_dll_notification, NULL);
return 0;
}
开发者ID:Axi0m-S,项目名称:CuckooMon---Calling-address,代码行数:27,代码来源:hooking.c
示例3: analop
static int analop(RAnal *a, RAnalOp *op, ut64 addr, const ut8 *buf, int len) {
csh handle;
cs_insn *insn;
int mode, n, ret;
mode = CS_MODE_BIG_ENDIAN;
if (!strcmp (a->cpu, "v9"))
mode |= CS_MODE_V9;
ret = cs_open (CS_ARCH_XCORE, mode, &handle);
op->type = R_ANAL_OP_TYPE_NULL;
op->size = 0;
op->delay = 0;
r_strbuf_init (&op->esil);
if (ret == CS_ERR_OK) {
cs_option (handle, CS_OPT_DETAIL, CS_OPT_ON);
// capstone-next
n = cs_disasm (handle, (const ut8*)buf, len, addr, 1, &insn);
if (n<1) {
op->type = R_ANAL_OP_TYPE_ILL;
} else {
op->size = insn->size;
switch (insn->id) {
case XCORE_INS_DRET:
case XCORE_INS_KRET:
case XCORE_INS_RETSP:
op->type = R_ANAL_OP_TYPE_RET;
break;
case XCORE_INS_DCALL:
case XCORE_INS_KCALL:
case XCORE_INS_ECALLF:
case XCORE_INS_ECALLT:
op->type = R_ANAL_OP_TYPE_CALL;
op->jump = INSOP(0).imm;
break;
/* ??? */
case XCORE_INS_BL:
case XCORE_INS_BLA:
case XCORE_INS_BLAT:
case XCORE_INS_BT:
case XCORE_INS_BF:
case XCORE_INS_BU:
case XCORE_INS_BRU:
op->type = R_ANAL_OP_TYPE_CALL;
op->jump = INSOP(0).imm;
break;
case XCORE_INS_SUB:
case XCORE_INS_LSUB:
op->type = R_ANAL_OP_TYPE_SUB;
break;
case XCORE_INS_ADD:
case XCORE_INS_LADD:
op->type = R_ANAL_OP_TYPE_ADD;
break;
}
}
cs_free (insn, n);
cs_close (&handle);
}
return op->size;
}
开发者ID:raulsiles,项目名称:radare2,代码行数:60,代码来源:anal_xcore_cs.c
示例4: disasm
void disasm(uint64_t addr, uint32_t offset, size_t size, cs_arch arch, cs_mode mode, uint8_t *data)
{
int i;
csh handle = 0;
cs_insn *insn;
const uint8_t *code;
if (cs_open(arch, mode, &handle) != CS_ERR_OK) {
printf("ERROR: Failed to initialize engine!\n");
exit(EXIT_FAILURE);
}
cs_option(handle, CS_OPT_SKIPDATA, CS_OPT_ON);
cs_option(handle, CS_OPT_SYNTAX, CS_OPT_SYNTAX_ATT);
printf("Disassembly of section .text:\n");
for (i = offset; i < offset + size; i++) {
code = &data[i];
insn = cs_malloc(handle);
while(cs_disasm_iter(handle, &code, &size, &addr, insn)) {
printf("0x%"PRIx64":\t%s\t\t%s\n", insn->address, insn->mnemonic, insn->op_str);
}
cs_free(insn, 1);
}
cs_close(&handle);
}
开发者ID:Nico01,项目名称:diself,代码行数:28,代码来源:disassemble.c
示例5: disassemble
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
static int omode = 0;
int mode, n, ret;
ut64 off = a->pc;
cs_insn* insn = NULL;
mode = CS_MODE_BIG_ENDIAN;
if (cd && mode != omode) {
cs_close (&cd);
cd = 0;
}
op->size = 0;
omode = mode;
if (cd == 0) {
ret = cs_open (CS_ARCH_SYSZ, mode, &cd);
if (ret) return 0;
cs_option (cd, CS_OPT_DETAIL, CS_OPT_OFF);
}
n = cs_disasm (cd, (const ut8*)buf, len, off, 1, &insn);
if (n>0) {
if (insn->size>0) {
op->size = insn->size;
char *ptrstr;
snprintf (op->buf_asm, R_ASM_BUFSIZE, "%s%s%s",
insn->mnemonic, insn->op_str[0]?" ":"",
insn->op_str);
ptrstr = strstr (op->buf_asm, "ptr ");
if (ptrstr) {
memmove (ptrstr, ptrstr+4, strlen (ptrstr+4)+1);
}
}
cs_free (insn, n);
}
return op->size;
}
开发者ID:13572293130,项目名称:radare2,代码行数:34,代码来源:asm_sysz.c
示例6: disassemble
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
csh handle;
cs_insn* insn;
int mode, n, ret = -1;
mode = a->big_endian? CS_MODE_BIG_ENDIAN: CS_MODE_LITTLE_ENDIAN;
if (a->cpu && *a->cpu) {
if (!strcmp (a->cpu, "v9")) {
mode |= CS_MODE_V9;
}
}
memset (op, 0, sizeof (RAsmOp));
op->size = 4;
ret = cs_open (CS_ARCH_SPARC, mode, &handle);
if (ret) goto fin;
cs_option (handle, CS_OPT_DETAIL, CS_OPT_OFF);
n = cs_disasm (handle, (ut8*)buf, len, a->pc, 1, &insn);
if (n<1) {
strcpy (op->buf_asm, "invalid");
op->size = 4;
ret = -1;
goto beach;
} else ret = 4;
if (insn->size<1)
goto beach;
op->size = insn->size;
snprintf (op->buf_asm, R_ASM_BUFSIZE, "%s%s%s",
insn->mnemonic, insn->op_str[0]? " ": "",
insn->op_str);
// TODO: remove the '$'<registername> in the string
cs_free (insn, n);
beach:
cs_close (&handle);
fin:
return ret;
}
开发者ID:13572293130,项目名称:radare2,代码行数:35,代码来源:asm_sparc_cs.c
示例7: comstack_example
/** \brief COMSTACK synopsis from manual, doc/comstack.xml */
static int comstack_example(const char *server_address_str)
{
COMSTACK stack;
char *buf = 0;
int size = 0, length_incoming;
void *server_address_ip;
int status;
char *protocol_package = "GET / HTTP/1.0\r\n\r\n";
int protocol_package_length = strlen(protocol_package);
stack = cs_create(tcpip_type, 1, PROTO_HTTP);
if (!stack) {
perror("cs_create"); /* use perror() here since we have no stack yet */
return -1;
}
server_address_ip = cs_straddr(stack, server_address_str);
if (!server_address_ip) {
fprintf(stderr, "cs_straddr: address could not be resolved\n");
return -1;
}
status = cs_connect(stack, server_address_ip);
if (status) {
fprintf(stderr, "cs_connect: %s\n", cs_strerror(stack));
return -1;
}
status = cs_rcvconnect(stack);
if (status) {
fprintf(stderr, "cs_rcvconnect: %s\n", cs_strerror(stack));
return -1;
}
status = cs_put(stack, protocol_package, protocol_package_length);
if (status) {
fprintf(stderr, "cs_put: %s\n", cs_strerror(stack));
return -1;
}
/* Now get a response */
length_incoming = cs_get(stack, &buf, &size);
if (!length_incoming) {
fprintf(stderr, "Connection closed\n");
return -1;
} else if (length_incoming < 0) {
fprintf(stderr, "cs_get: %s\n", cs_strerror(stack));
return -1;
}
/* Print result */
fwrite(buf, length_incoming, 1, stdout);
/* clean up */
cs_close(stack);
if (buf)
xfree(buf);
return 0;
}
开发者ID:dcrossleyau,项目名称:yaz,代码行数:61,代码来源:test_comstack.c
示例8: the_end
static bool the_end(void *p) {
if (handle) {
cs_close (&handle);
handle = 0;
}
return true;
}
开发者ID:PankajKataria,项目名称:radare2,代码行数:7,代码来源:asm_ppc_cs.c
示例9: disassemble
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
static int omode = 0;
int mode, n, ret;
ut64 off = a->pc;
cs_insn* insn;
mode = (a->bits==64)? CS_MODE_64:
(a->bits==32)? CS_MODE_32: 0;
if (handle && mode != omode) {
cs_close (&handle);
handle = 0;
}
op->size = 0;
omode = mode;
if (handle == 0) {
ret = cs_open (CS_ARCH_PPC, mode, &handle);
if (ret) return 0;
}
cs_option (handle, CS_OPT_DETAIL, CS_OPT_OFF);
n = cs_disasm_ex (handle, (const ut8*)buf, len, off, 1, &insn);
if (n>0) {
if (insn->size>0) {
op->size = insn->size;
snprintf (op->buf_asm, R_ASM_BUFSIZE, "%s%s%s",
insn->mnemonic, insn->op_str[0]?" ":"",
insn->op_str);
}
cs_free (insn, n);
}
return op->size;
}
开发者ID:17twenty,项目名称:radare2,代码行数:31,代码来源:asm_ppc_cs.c
示例10: the_end
static int the_end(void *p) {
if (handle) {
cs_close (&handle);
handle = 0;
}
return R_TRUE;
}
开发者ID:17twenty,项目名称:radare2,代码行数:7,代码来源:asm_ppc_cs.c
示例11: yaz_connect
/*
* We're setting up the connection in non-blocking mode, which is what
* we want. However, this means that the connect() (as well as
* subsequent read()s) will be non-blocking, so that we'll need to
* catch and service the "connection complete" callback in "receive.c"
*/
COMSTACK yaz_connect(char *addr)
{
COMSTACK conn;
void *inaddr;
/* Second argument is `blocking', false => no immediate errors */
if ((conn = cs_create_host(addr, 0, &inaddr)) == 0) {
/* mostly likely `errno' will be ENOMEM or something useful */
return 0;
}
switch (cs_connect(conn, inaddr)) {
case -1: /* can't connect */
/* I think this never happens due to blocking=0 */
/*printf("cs_connect() failed\n");*/
cs_close(conn);
return 0;
case 0: /* success */
/* I think this never happens due to blocking=0 */
/*printf("cs_connect() succeeded\n");*/
break;
case 1: /* non-blocking -- "not yet" */
/*printf("cs_connect() not yet\n");*/
break;
}
return conn;
}
开发者ID:gitpan,项目名称:Net-Z3950,代码行数:34,代码来源:connect.c
示例12: the_end
static bool the_end(void *p) {
if (cd) {
cs_close (&cd);
cd = 0;
}
return true;
}
开发者ID:13572293130,项目名称:radare2,代码行数:7,代码来源:asm_sysz.c
示例13: disassemble
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
static int omode = 0;
int n, ret;
ut64 off = a->pc;
cs_insn* insn;
int mode = (a->big_endian)? CS_MODE_BIG_ENDIAN: CS_MODE_LITTLE_ENDIAN;
if (handle && mode != omode) {
cs_close (&handle);
handle = 0;
}
op->size = 0;
omode = mode;
op->buf_asm[0] = 0;
if (handle == 0) {
ret = cs_open (CS_ARCH_PPC, mode, &handle);
if (ret) return 0;
}
cs_option (handle, CS_OPT_DETAIL, CS_OPT_OFF);
n = cs_disasm (handle, (const ut8*)buf, len, off, 1, &insn);
op->size = 4;
if (n > 0 && insn->size > 0) {
snprintf (op->buf_asm, R_ASM_BUFSIZE, "%s%s%s",
insn->mnemonic, insn->op_str[0]?" ":"",
insn->op_str);
cs_free (insn, n);
return op->size;
}
//op->size = -1;
cs_free (insn, n);
return 4;
}
开发者ID:AmesianX,项目名称:radare2,代码行数:33,代码来源:asm_ppc_cs.c
示例14: test
static void test()
{
#define M68K_CODE "\xf0\x10\xf0\x00\x48\xaf\xff\xff\x7f\xff\x11\xb0\x01\x37\x7f\xff\xff\xff\x12\x34\x56\x78\x01\x33\x10\x10\x10\x10\x32\x32\x32\x32\x4C\x00\x54\x04\x48\xe7\xe0\x30\x4C\xDF\x0C\x07\xd4\x40\x87\x5a\x4e\x71\x02\xb4\xc0\xde\xc0\xde\x5c\x00\x1d\x80\x71\x12\x01\x23\xf2\x3c\x44\x22\x40\x49\x0e\x56\x54\xc5\xf2\x3c\x44\x00\x44\x7a\x00\x00\xf2\x00\x0a\x28\x4E\xB9\x00\x00\x00\x12\x4E\x75"
struct platform platforms[] = {
{
CS_ARCH_M68K,
(cs_mode)(CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040),
(unsigned char*)M68K_CODE,
sizeof(M68K_CODE) - 1,
"M68K",
},
};
uint64_t address = 0x01000;
cs_insn *insn;
int i;
size_t count;
for (i = 0; i < sizeof(platforms)/sizeof(platforms[0]); i++) {
cs_err err = cs_open(platforms[i].arch, platforms[i].mode, &handle);
if (err) {
printf("Failed on cs_open() with error returned: %u\n", err);
abort();
}
cs_option(handle, CS_OPT_DETAIL, CS_OPT_ON);
count = cs_disasm(handle, platforms[i].code, platforms[i].size, address, 0, &insn);
if (count) {
size_t j;
printf("****************\n");
printf("Platform: %s\n", platforms[i].comment);
print_string_hex("Code: ", platforms[i].code, platforms[i].size);
printf("Disasm:\n");
for (j = 0; j < count; j++) {
assert(address == insn[j].address && "this means the size of the previous instruction was incorrect");
address += insn[j].size;
printf("0x%" PRIx64 ":\t%s\t%s\n", insn[j].address, insn[j].mnemonic, insn[j].op_str);
print_insn_detail(&insn[j]);
}
printf("0x%" PRIx64 ":\n", insn[j-1].address + insn[j-1].size);
// free memory allocated by cs_disasm()
cs_free(insn, count);
} else {
printf("****************\n");
printf("Platform: %s\n", platforms[i].comment);
print_string_hex("Code:", platforms[i].code, platforms[i].size);
printf("ERROR: Failed to disasm given code!\n");
abort();
}
printf("\n");
cs_close(&handle);
}
}
开发者ID:AmesianX,项目名称:capstone,代码行数:59,代码来源:test_m68k.c
示例15: test
static void test()
{
#define SYSZ_CODE "\xed\x00\x00\x00\x00\x1a\x5a\x0f\x1f\xff\xc2\x09\x80\x00\x00\x00\x07\xf7\xeb\x2a\xff\xff\x7f\x57\xe3\x01\xff\xff\x7f\x57\xeb\x00\xf0\x00\x00\x24\xb2\x4f\x00\x78\xec\x18\x00\x00\xc1\x7f"
struct platform platforms[] = {
{
CS_ARCH_SYSZ,
CS_MODE_BIG_ENDIAN,
(unsigned char*)SYSZ_CODE,
sizeof(SYSZ_CODE) - 1,
"SystemZ",
},
};
uint64_t address = 0x1000;
cs_insn *insn;
int i;
size_t count;
for (i = 0; i < sizeof(platforms)/sizeof(platforms[0]); i++) {
cs_err err = cs_open(platforms[i].arch, platforms[i].mode, &handle);
if (err) {
printf("Failed on cs_open() with error returned: %u\n", err);
continue;
}
cs_option(handle, CS_OPT_DETAIL, CS_OPT_ON);
count = cs_disasm(handle, platforms[i].code, platforms[i].size, address, 0, &insn);
if (count) {
size_t j;
printf("****************\n");
printf("Platform: %s\n", platforms[i].comment);
print_string_hex("Code:", platforms[i].code, platforms[i].size);
printf("Disasm:\n");
for (j = 0; j < count; j++) {
printf("0x%"PRIx64":\t%s\t%s\n", insn[j].address, insn[j].mnemonic, insn[j].op_str);
print_insn_detail(&insn[j]);
}
printf("0x%"PRIx64":\n", insn[j-1].address + insn[j-1].size);
// free memory allocated by cs_disasm()
cs_free(insn, count);
} else {
printf("****************\n");
printf("Platform: %s\n", platforms[i].comment);
print_string_hex("Code:", platforms[i].code, platforms[i].size);
printf("ERROR: Failed to disasm given code!\n");
}
printf("\n");
cs_close(&handle);
}
}
开发者ID:1833183060,项目名称:capstone,代码行数:57,代码来源:test_systemz.c
示例16: main
int main()
{
pthread_t t[2];
cs_open("/sem",1);
pthread_create(t,NULL,t1,NULL);
sleep(1);
pthread_create(t+1,NULL,t2,NULL);
pthread_join(t[0],NULL);
pthread_join(t[1],NULL);
cs_close("/sem");
return 0;
}
开发者ID:shrumo,项目名称:miscellaneous,代码行数:12,代码来源:zad3.c
示例17: the_end
static bool the_end(void *p) {
#if !USE_ITER_API
if (insn) {
cs_free (insn, n);
insn = NULL;
}
#endif
if (cd) {
cs_close (&cd);
cd = 0;
}
return true;
}
开发者ID:Lukas-Dresel,项目名称:radare2,代码行数:13,代码来源:asm_x86_cs.c
示例18: the_end
static int the_end(void *p) {
#if !USE_ITER_API
if (insn) {
cs_free (insn, n);
insn = NULL;
}
#endif
if (cd) {
cs_close (&cd);
cd = 0;
}
return R_TRUE;
}
开发者ID:8500616886,项目名称:radare2,代码行数:13,代码来源:asm_x86_cs.c
示例19: disassemble
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
cs_insn* insn = NULL;
cs_mode mode = 0;
int ret, n = 0;
csh cd;
mode = (a->bits==16)? CS_MODE_THUMB: CS_MODE_ARM;
if (a->big_endian)
mode |= CS_MODE_BIG_ENDIAN;
else
mode |= CS_MODE_LITTLE_ENDIAN;
if (a->cpu && strstr (a->cpu, "m"))
mode |= CS_MODE_MCLASS;
if (a->cpu && strstr (a->cpu, "v8"))
mode |= CS_MODE_V8;
op->size = 4;
op->buf_asm[0] = 0;
ret = (a->bits==64)?
cs_open (CS_ARCH_ARM64, mode, &cd):
cs_open (CS_ARCH_ARM, mode, &cd);
if (ret) {
ret = -1;
goto beach;
}
if (a->syntax == R_ASM_SYNTAX_REGNUM) {
cs_option (cd, CS_OPT_SYNTAX, CS_OPT_SYNTAX_NOREGNAME);
} else cs_option (cd, CS_OPT_SYNTAX, CS_OPT_SYNTAX_DEFAULT);
cs_option (cd, CS_OPT_DETAIL, CS_OPT_OFF);
n = cs_disasm (cd, buf, R_MIN (4, len),
a->pc, 1, &insn);
if (n<1) {
ret = -1;
goto beach;
}
if (insn->size<1) {
ret = -1;
goto beach;
}
op->size = insn->size;
snprintf (op->buf_asm, R_ASM_BUFSIZE, "%s%s%s",
insn->mnemonic,
insn->op_str[0]?" ":"",
insn->op_str);
r_str_rmch (op->buf_asm, '#');
cs_free (insn, n);
beach:
cs_close (&cd);
if (!op->buf_asm[0])
strcpy (op->buf_asm, "invalid");
return op->size;
}
开发者ID:pastcompute,项目名称:radare2,代码行数:51,代码来源:asm_arm_cs.c
示例20: teardown_issue
static int teardown_issue(void **state)
{
if (e_flag == 0)
while (counter < size_lines && strncmp(list_lines[counter], "!# ", 3))
counter++;
else
while (counter < size_lines && strncmp(list_lines[counter], "// !# ", 6))
counter++;
cs_close(*state);
free(*state);
function = NULL;
return 0;
}
开发者ID:AmesianX,项目名称:capstone,代码行数:14,代码来源:main.c
注:本文中的cs_close函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论