-
-
[求助]关于IDA Plug-in编写的问题
-
发表于:
2010-3-22 10:27
4101
-
【问题描述】在利用SDK提供的接口编写dialog时,dialog中按钮的响应函数能否改变dialog中其他item(控件)的值呢?示意程序如下。
【示意程序】
#include <ida.hpp>
#include <idp.hpp>
#include <loader.hpp>
int plugin_init(void);
void plugin_term(void);
void plugin_run(int arg);
char *plugin_comment = NULL;
char *plugin_help = NULL;
char *plugin_name = "MyTest";
char *plugin_hotkey = "Alt-T";
plugin_t PLUGIN =
{
IDP_INTERFACE_VERSION,
0,
plugin_init,
NULL,
plugin_run,
plugin_comment,
plugin_help,
plugin_name,
plugin_hotkey
};
////////////////////////////////////////////////////////////////
int plugin_init(void)
{
return PLUGIN_KEEP;
}
void plugin_term(void)
{
return;
}
void idaapi ButtonFcn(TView *fields[], int code)
{
msg("The button was pressed!\n");
// 此时,如何通过 fields 参数改变 dialog 中字符输入框的值呢?
// SDK 头文件中没有关于 TView 的接口的描述 :(
}
void plugin_run(int arg)
{
char input[MAXSTR];
qstrncpy(input, "initial value", sizeof(input));
char *dialog =
"STARTITEM 0\n"
"This is test of AskUsingForm_c()\n\n" // title of the dialog
"<String:A:32:::>\n"
"<Button:B::::>\n";
int ret = AskUsingForm_c(dialog, input, ButtonFcn);
if (ret == 1) // dialog 中“OK”按钮被按下
msg("String: %s\n", input);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课