IDA C++ SDK 9.2
Loading...
Searching...
No Matches
lumina.hpp
Go to the documentation of this file.
1
2#ifndef LUMINA_HPP
3#define LUMINA_HPP
4
5#include <pro.h>
6#include <md5.h>
7#include <network.hpp>
8#include <kernwin.hpp>
9#include <typeinf.hpp>
10
11
17
26
30#define PMF_PUSH_MODE_MASK 0xF
31#define PMF_PUSH_OVERRIDE_IF_BETTER_OR_DIFFERENT 0x0
32#define PMF_PUSH_OVERRIDE 0x1
33#define PMF_PUSH_DO_NOT_OVERRIDE 0x2
34#define PMF_PUSH_MERGE 0x3
36
43
49
55
58#define UF_IS_ADMIN 0x1
59#define UF_CAN_DEL_HISTORY 0x2
61
64#define URF_IGNORE_LICID 0x1
66
67
68#define BOPF_DETAILS 0x2
69#define BOPF_CHRONOLOGICAL_ORDER 0x4
70#define BOPF_LAST_FUNC_RECORD 0x8
71#define BOPF_FIELD_LICENSE_NAME 0x001000
72#define BOPF_FIELD_LICENSE_EMAIL 0x002000
73#define BOPF_FIELD_LICENSE_ID 0x004000
74#define BOPF_SHOW_FIELD_INPUT_HASH 0x010000
75#define BOPF_SHOW_FIELD_INPUT_PATH 0x020000
76#define BOPF_SHOW_FIELD_IDB_PATH 0x040000
77#define BOPF_SHOW_FIELD_CALCREL_HASH 0x080000
78#define BOPF_SHOW_FIELD_FUNC_EA 0x100000
79#define BOPF_SHOW_FIELD_FUNC_ID 0x200000
80#define BOPF_SHOW_FIELD_USERNAME 0x400000
81#define BOPF_SHOW_FIELD_ALL (BOPF_SHOW_FIELD_INPUT_HASH|BOPF_SHOW_FIELD_INPUT_PATH|BOPF_SHOW_FIELD_IDB_PATH|BOPF_SHOW_FIELD_CALCREL_HASH|BOPF_SHOW_FIELD_FUNC_EA|BOPF_SHOW_FIELD_FUNC_ID|BOPF_SHOW_FIELD_USERNAME|BOPF_FIELD_LICENSE_NAME|BOPF_FIELD_LICENSE_EMAIL|BOPF_FIELD_LICENSE_ID)
82#define BOPF_PUSHES_FIELD_ALL (BOPF_FIELD_LICENSE_NAME|BOPF_FIELD_LICENSE_EMAIL|BOPF_FIELD_LICENSE_ID)
83
84#define STF_DETAILS 0x1
85
86#define DEFAULT_TLM_FLUSH_TIMEOUT (60 * 1000)
87#define DEFAULT_TLM_FLUSH_EVCNT 64
88
89#define LUMINA_GET_POP_DEFAULT_NRESULTS 10
90
91//-------------------------------------------------------------------------
96
97//-------------------------------------------------------------------------
99{
101 MDK_TYPE = 1, // type_source + type [ + '\0' + fields ]
102 MDK_VD_ELAPSED = 2, // how long it took to decompile (int64 seconds)
103 MDK_FCMT = 3, // function comment
104 MDK_FRPTCMT = 4, // function repeatable comment
105 MDK_CMTS = 5, // instruction regular comments
106 MDK_RPTCMTS = 6, // instruction repeatable comments
107 MDK_EXTRACMTS = 7, // anterior/posterior comments
108 MDK_USER_STKPNTS = 8, // user-defined stackpoints
109 MDK_FRAME_DESC = 9, // frame description + stack variables
110 MDK_OPS = 10, // operand representation
111 MDK_OPS_EX = 11, // extended operand representation
112
114};
115
116const char *mdkey2str(mdkey_t key);
117mdkey_t str2mdkey(const char *str);
118
119//-------------------------------------------------------------------------
120#ifdef __EA64__
121typedef ea_t ea64_t;
122#else
123typedef uint64 ea64_t;
124#endif
125
126
127//-------------------------------------------------------------------------
129{
135 MDKF_DCSTRLIST, // list of: [fchunk+]delta+zero-terminated-string
136 MDKF_DSVALLIST, // list of: [fchunk+]delta+sval
138 MDKF_NLSTRLIST, // list of: \n-separated-string
139 MDKF_DOPSLIST, // list of: [fchunk+]delta+opnum+oprepr
140};
141
143
144//-------------------------------------------------------------------------
146{
150 DEPRECATED ea_t toea(const func_t *pfn) const
151 {
152 QASSERT(1777, pfn != nullptr);
153 return to_ea(pfn->start_ea);
154 }
155 ea_t to_ea(ea_t func_ea) const
156 {
157 if ( fchunk_nr == 0 )
158 {
160 if ( !get_func_entry_info(&fi, func_ea) )
161 return BADADDR;
162 return fchunk_off < fi.size() ? fi.start_ea + fchunk_off : BADADDR;
163 }
164 rangevec_t tails;
165 get_func_tails(&tails, func_ea);
166 if ( fchunk_nr-1 >= tails.size() )
167 return BADADDR;
168 const range_t &r = tails[fchunk_nr-1];
169 return fchunk_off < r.size() ? r.start_ea + fchunk_off : BADADDR;
170 }
171};
172
173//-------------------------------------------------------------------------
174struct insn_cmt_t : public insn_site_t
175{
177};
180
181//-------------------------------------------------------------------------
183{
185};
188
189//-------------------------------------------------------------------------
191{
192 // Both in 'prev' and 'next', possible multiple comments are joined together using '\n'
195};
198
199//-------------------------------------------------------------------------
200// Used to store flags + possible minimal opinfo_t
201// representation for operands & frame members.
203{
204 oprepr_t() { memset(this, 0, sizeof(*this)); }
205
208};
209
210//-------------------------------------------------------------------------
212{
213 insn_ops_repr_t() { memset(this, 0, sizeof(*this)); }
214
217};
220
221//-------------------------------------------------------------------------
222// Metadata is very versatile. It is stored as a sequence of
223// [key][len][bytes], [key][len][bytes], [...]
224class metadata_t : public bytevec_t
225{
226public:
227 metadata_t(const void *buf=nullptr, size_t sz=0) { if ( buf != nullptr ) append(buf, sz); }
228
229 void add(mdkey_t key, const void *buf, size_t bufsize);
230 void add(mdkey_t key, const bytevec_t &buf) { add(key, buf.begin(), buf.size()); }
231 void add_str(mdkey_t key, const qstring &value) { add(key, value.c_str(), value.length()); }
232 void add_uint64(mdkey_t key, uint64 value);
233 void add_insn_cmts(const insn_cmts_t &insn_cmts, bool repeatable);
234 void add_extra_cmts(const extra_cmts_t &extra_cmts);
235 void add_stkpnts(const user_stkpnts_t &stkpnts);
236 void add_insn_opreprs(const insn_ops_reprs_t &opreprs);
237
238 const uchar *find(mdkey_t key, const uchar **pend=nullptr) const;
239};
240
241//-------------------------------------------------------------------------
243{
244 metadata_t &md;
245public:
246 metadata_creator_t(metadata_t *_md) : md(*_md) {}
247
248 virtual void add(mdkey_t key, const void *buf, size_t bufsize);
249 virtual void add_uint64(mdkey_t key, uint64 value);
250 virtual const uchar *find(mdkey_t key, const uchar **pend=nullptr) const;
251
252 void add_str(mdkey_t key, const qstring &value) { add(key, value.c_str(), value.length()); }
253};
254
255//-------------------------------------------------------------------------
257{
258 const metadata_t &md;
259 const uchar *ptr;
260 const uchar *end;
261public:
262 const uchar *data = nullptr;
263 size_t size = 0;
265
267 : md(_md), ptr(md.begin()), end(md.end())
268 {
269 }
270 bool next(void)
271 {
272 key = mdkey_t(unpack_dd(&ptr, end));
273 if ( key == MDK_NONE )
274 return false;
275 data = (uchar *)unpack_buf_inplace(&ptr, end);
276 if ( data == nullptr )
277 return false;
278 size = ptr - data;
279 return true;
280 }
281 const uchar *data_end() const { return ptr; } // valid after next()
282};
283
284//-------------------------------------------------------------------------
285inline const uchar *metadata_t::find(mdkey_t key, const uchar **pend) const
286{
287 metadata_iterator_t p(*this);
288 while ( p.next() )
289 {
290 if ( p.key == key )
291 {
292 if ( pend != nullptr )
293 *pend = p.data_end();
294 return p.data;
295 }
296 }
297 return nullptr;
298}
299
300//-------------------------------------------------------------------------
301typedef void idaapi metadata_appender_t(metadata_creator_t &mcr, const func_t *pfn);
302typedef void idaapi metadata_appender_ea_t(metadata_creator_t &mcr, ea_t func_ea);
303
304//-------------------------------------------------------------------------
305struct md5_t;
306struct func_md_t;
307struct frame_mem_t;
308struct frame_desc_t;
309struct func_info_t;
310class lumina_client_t;
311
312//-------------------------------------------------------------------------
313idaman rpc_packet_data_t *ida_export new_packet(uchar code, const uchar *ptr=nullptr, size_t len=0, int version=-1);
314
322
323//-------------------------------------------------------------------------
324
326idaman DEPRECATED asize_t ida_export calc_func_metadata(
327 md5_t *out_hash, // can be nullptr
328 func_info_t *out_fi, // can be nullptr
329 const func_t *pfn,
330 metadata_appender_t *append_metadata=nullptr);
331
333 md5_t *out_hash, // can be nullptr
334 func_info_t *out_fi, // can be nullptr
335 ea_t func_ea,
336 metadata_appender_ea_t *append_metadata=nullptr);
337
339{
340 bool userti = false;
343
344 bool operator==(const md_type_parts_t &r) const
345 {
346 return userti == r.userti && type == r.type && fields == r.fields;
347 }
348 bool operator!=(const md_type_parts_t &r) const
349 {
350 return !(*this == r);
351 }
352};
353idaman void ida_export extract_type_from_metadata(
354 md_type_parts_t *out,
355 const uchar *ptr,
356 const uchar *end);
357idaman void ida_export extract_insn_cmts_from_metadata(
358 insn_cmts_t *out,
359 const uchar *ptr,
360 const uchar *end);
361idaman void ida_export extract_extra_cmts_from_metadata(
362 extra_cmts_t *out,
363 const uchar *ptr,
364 const uchar *end);
366 user_stkpnts_t *out,
367 const uchar *ptr,
368 const uchar *end);
369idaman void ida_export extract_frame_desc_from_metadata(
370 frame_desc_t *out,
371 const uchar *ptr,
372 const uchar *end);
374 insn_ops_reprs_t *out,
375 const uchar *ptr,
376 const uchar *end);
378 insn_ops_reprs_t *out,
379 const uchar *ptr,
380 const uchar *end);
381
385
387idaman lumina_client_t *ida_export get_server_connection2(int flags);
388
389#define GCSF_NO_CONNECT 0x80000000
390#define GSCF_FEAT_MASK (~GCSF_NO_CONNECT)
391
394#define AMDF_UPGRADE 0x0
396#define AMDF_FORCE 0x1
401
402
403idaman void ida_export apply_metadata(ea_t ea, const func_info_t &fi, uint32 flags=AMDF_UPGRADE);
404idaman uint32 ida_export score_metadata(const func_info_t &fi);
405idaman bool ida_export backup_metadata(ea_t ea);
406idaman bool ida_export revert_metadata(ea_t ea);
407idaman bool ida_export has_backup_metadata(ea_t ea);
408
410{
412
413 virtual void on_score_changed(uint32 l, uint32 r)
414 {
415 qnotused(l);
416 qnotused(r);
417 }
418
419 virtual void on_name_changed(
420 const qstring *l,
421 const qstring *r)
422 {
423 qnotused(l);
424 qnotused(r);
425 }
426
427 virtual void on_proto_changed(
428 const md_type_parts_t &l,
429 const md_type_parts_t &r)
430 {
431 qnotused(l);
432 qnotused(r);
433 }
434
436 const qstring *l,
437 const qstring *r,
438 bool rep)
439 {
440 qnotused(l);
441 qnotused(r);
442 qnotused(rep);
443 }
444
445 virtual void on_comment_changed(
446 uint32 fchunk_nr,
447 uint32 fchunk_off,
448 const qstring *l,
449 const qstring *r,
450 bool rep)
451 {
452 qnotused(fchunk_nr);
453 qnotused(fchunk_off);
454 qnotused(l);
455 qnotused(r);
456 qnotused(rep);
457 }
458
460 uint32 fchunk_nr,
461 uint32 fchunk_off,
462 const qstring *l,
463 const qstring *r,
464 bool is_prev)
465 {
466 qnotused(fchunk_nr);
467 qnotused(fchunk_off);
468 qnotused(l);
469 qnotused(r);
470 qnotused(is_prev);
471 }
472
474 uint32 fchunk_nr,
475 uint32 fchunk_off,
476 const int64 *l,
477 const int64 *r)
478 {
479 qnotused(fchunk_nr);
480 qnotused(fchunk_off);
481 qnotused(l);
482 qnotused(r);
483 }
484
486 uint32 offset,
487 const frame_mem_t *l,
488 const frame_mem_t *r)
489 {
490 qnotused(offset);
491 qnotused(l);
492 qnotused(r);
493 }
494
496 uint32 fchunk_nr,
497 uint32 fchunk_off,
498 const insn_ops_repr_t *l,
499 const insn_ops_repr_t *r)
500 {
501 qnotused(fchunk_nr);
502 qnotused(fchunk_off);
503 qnotused(l);
504 qnotused(r);
505 }
506};
507
508#define DMOF_COMPUTE_AND_DIFF_SCORE 0x1
509
510idaman bool ida_export diff_metadata(
511 func_md_diff_handler_t &handler,
512 const func_info_t &left,
513 const func_info_t &right,
514 uint32 flags=0);
515
516
517
518
519// <PROTOCOL>
520
521#define PROTOCOL_VERSION 6
522
523
524//
525// Serializable/deserializable utilities
526//
527#ifndef NO_UTILS
528
529
530//---------------------------------------------------------------------------
532
533//---------------------------------------------------------------------------
535
536//---------------------------------------------------------------------------
538
539//---------------------------------------------------------------------------
541{
545 : type(__type), data(__data) {}
546
547 void swap(pattern_id_t &other)
548 {
549 qswap(type, other.type);
550 data.swap(other.data);
551 }
552 void serialize(bytevec_t *out, int version) const;
553 bool deserialize(const uchar **ptr, size_t len, int version);
554};
556
557//---------------------------------------------------------------------------
559
560//---------------------------------------------------------------------------
562{
565 func_info_base_t(const char *__name=nullptr, const metadata_t &__metadata=metadata_t())
566 : name(__name), metadata(__metadata) {}
567
569 {
570 name.swap(other.name);
571 metadata.swap(other.metadata);
572 }
573 void serialize(bytevec_t *out, int version) const;
574 bool deserialize(const uchar **ptr, size_t len, int version);
575};
577
578//---------------------------------------------------------------------------
580
581//---------------------------------------------------------------------------
583{
587 func_info_t(const char *__name=nullptr, uint32 __size=0, const metadata_t &__metadata=metadata_t())
588 : name(__name), size(__size), metadata(__metadata) {}
589
590 void swap(func_info_t &other)
591 {
592 name.swap(other.name);
593 qswap(size, other.size);
594 metadata.swap(other.metadata);
595 }
596 void serialize(bytevec_t *out, int version) const;
597 bool deserialize(const uchar **ptr, size_t len, int version);
598};
600
601//---------------------------------------------------------------------------
603
604//---------------------------------------------------------------------------
606
607//---------------------------------------------------------------------------
609{
612 input_file_t(const char *__path=nullptr, const md5_t &__md5=md5_t())
613 : path(__path), md5(__md5) {}
614
615 void swap(input_file_t &other)
616 {
617 path.swap(other.path);
618 md5.swap(other.md5);
619 }
620 void serialize(bytevec_t *out, int version) const;
621 bool deserialize(const uchar **ptr, size_t len, int version);
622};
624
625//---------------------------------------------------------------------------
627{
630 : func_info_t(), frequency(__frequency) {}
631
633 {
635 qswap(frequency, other.frequency);
636 }
637 void serialize(bytevec_t *out, int version) const;
638 bool deserialize(const uchar **ptr, size_t len, int version);
639};
641
642//---------------------------------------------------------------------------
644
645//---------------------------------------------------------------------------
647{
650 : func_info_t(), pattern_id(__pattern_id) {}
651
653 {
655 pattern_id.swap(other.pattern_id);
656 }
657 void serialize(bytevec_t *out, int version) const;
658 bool deserialize(const uchar **ptr, size_t len, int version);
659};
661
662//---------------------------------------------------------------------------
664
665//---------------------------------------------------------------------------
667{
671
677 void serialize(bytevec_t *out, int version) const;
678 bool deserialize(const uchar **ptr, size_t len, int version);
679};
681
682//---------------------------------------------------------------------------
684
685//---------------------------------------------------------------------------
687{
691 pop_fun_t(const char *__hostname=nullptr, const input_file_t &__input=input_file_t(), ea64_t __ea64=ea64_t(-1))
692 : func_info_pattern_and_frequency_t(), hostname(__hostname), input(__input), ea64(__ea64) {}
693
694 void swap(pop_fun_t &other)
695 {
697 hostname.swap(other.hostname);
698 input.swap(other.input);
699 qswap(ea64, other.ea64);
700 }
701 void serialize(bytevec_t *out, int version) const;
702 bool deserialize(const uchar **ptr, size_t len, int version);
703};
705
706//---------------------------------------------------------------------------
708
709//---------------------------------------------------------------------------
711{
714 serialized_tinfo(const type_t *__type=nullptr, const type_t *__fields=nullptr)
715 : type(__type), fields(__fields) {}
716
717 void serialize(bytevec_t *out, int version) const;
718 bool deserialize(const uchar **ptr, size_t len, int version);
719 bool empty() const;
720};
722
723//---------------------------------------------------------------------------
725{
733 frame_mem_t(const char *__name=nullptr, const serialized_tinfo &__type=serialized_tinfo(), const char *__cmt=nullptr, const char *__rptcmt=nullptr, ea64_t __offset=ea64_t(-1), const oprepr_t &__info=oprepr_t(), asize_t __nbytes=asize_t(-1))
734 : name(__name), type(__type), cmt(__cmt), rptcmt(__rptcmt), offset(__offset), info(__info), nbytes(__nbytes) {}
735
736 void serialize(bytevec_t *out, int version) const;
737 bool deserialize(const uchar **ptr, size_t len, int version);
738};
740
741//---------------------------------------------------------------------------
743
744//---------------------------------------------------------------------------
746{
751 frame_desc_t(sval_t __frsize=0, asize_t __argsize=asize_t(-1), ushort __frregs=0, const frame_mems_t &__members=frame_mems_t())
752 : frsize(__frsize), argsize(__argsize), frregs(__frregs), members(__members) {}
753
754 void serialize(bytevec_t *out, int version) const;
755 bool deserialize(const uchar **ptr, size_t len, int version);
756};
758
759//---------------------------------------------------------------------------
761{
764 skipped_func_t(const pattern_id_t &__pattern_id=pattern_id_t(), uint32 __count=0)
765 : pattern_id(__pattern_id), count(__count) {}
766
767 void serialize(bytevec_t *out, int version) const;
768 bool deserialize(const uchar **ptr, size_t len, int version);
769};
771
772//---------------------------------------------------------------------------
774
775//---------------------------------------------------------------------------
777{
781 user_license_info_t(const char *__id=nullptr, const char *__name=nullptr, const char *__email=nullptr)
782 : id(__id), name(__name), email(__email) {}
783
784 void serialize(bytevec_t *out, int version) const;
785 bool deserialize(const uchar **ptr, size_t len, int version);
786};
788
789//---------------------------------------------------------------------------
791
792//---------------------------------------------------------------------------
794{
797 int karma;
800 lumina_user_t(const user_license_info_t &__license_info=user_license_info_t(), const char *__name=nullptr, int __karma=0, utc_timestamp_t __last_active=0, uint32 __features=0)
801 : license_info(__license_info), name(__name), karma(__karma), last_active(__last_active), features(__features) {}
802
803 void serialize(bytevec_t *out, int version) const;
804 bool deserialize(const uchar **ptr, size_t len, int version);
805 bool is_admin() const { return (features & UF_IS_ADMIN) != 0; }
806 void set_is_admin(bool v=true) { setflag(features, UF_IS_ADMIN, v); }
807 bool can_del_history() const { return (features & UF_CAN_DEL_HISTORY) != 0; }
808 void set_can_del_history(bool v=true) { setflag(features, UF_CAN_DEL_HISTORY, v); }
809};
811
812//---------------------------------------------------------------------------
814
815//---------------------------------------------------------------------------
817{
822 peer_conn_t(uint32 __session_id=0, const char *__peer_name=nullptr, const lumina_user_t &__user=lumina_user_t(), utc_timestamp_t __established=0)
823 : session_id(__session_id), peer_name(__peer_name), user(__user), established(__established) {}
824
825 void serialize(bytevec_t *out, int version) const;
826 bool deserialize(const uchar **ptr, size_t len, int version);
827};
829
830//---------------------------------------------------------------------------
832
833//---------------------------------------------------------------------------
835{
840 lumina_server_info_t(const char *__macaddr=nullptr, const char *__verstr=nullptr, utc_timestamp_t __start_time=0, utc_timestamp_t __current_time=0)
841 : macaddr(__macaddr), verstr(__verstr), start_time(__start_time), current_time(__current_time) {}
842
843 void serialize(bytevec_t *out, int version) const;
844 bool deserialize(const uchar **ptr, size_t len, int version);
845};
847
848//---------------------------------------------------------------------------
850{
854 : client(__client), server(__server) {}
855
856 void serialize(bytevec_t *out, int version) const;
857 bool deserialize(const uchar **ptr, size_t len, int version);
858};
860
861#endif // !UTILS
862
863//
864// Packet types
865//
866#ifndef NO_RPC_PACKETS_LIST
867
911
912//---------------------------------------------------------------------------
914
915#endif // !RPC_PACKETS_LIST
916
917
918//
919// Packet definitions
920//
921#ifndef NO_RPC_PACKETS
922
923
924//---------------------------------------------------------------------------
926{
929
930 virtual ~pkt_rpc_ok_t();
931 virtual void serialize(bytevec_t *out, int version) const override;
932 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
933};
934
935//---------------------------------------------------------------------------
937{
940 pkt_rpc_fail_t(int __result=0, const char *__error=nullptr)
941 : rpc_packet_data_t(PKT_RPC_FAIL), result(__result), error(__error) {}
942
944 virtual void serialize(bytevec_t *out, int version) const override;
945 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
946};
947
948//---------------------------------------------------------------------------
950{
953 pkt_rpc_notify_t(rpc_notification_type_t __type=rnt_unknown, const char *__text=nullptr)
954 : rpc_packet_data_t(PKT_RPC_NOTIFY), type(__type), text(__text) {}
955
957 virtual void serialize(bytevec_t *out, int version) const override;
958 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
959};
960
961//---------------------------------------------------------------------------
963{
970 pkt_helo_t(int __client_version=0, const bytevec_t &__key=bytevec_t(), bool __record_conv=false, const char *__username=nullptr, const char *__password=nullptr)
971 : rpc_packet_data_t(PKT_HELO), client_version(__client_version), key(__key), record_conv(__record_conv), username(__username), password(__password)
972 {
973 memset(license_id, 0, sizeof(license_id));
974 }
975
976 virtual ~pkt_helo_t();
977 virtual void serialize(bytevec_t *out, int version) const override;
978 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
979};
980
981//---------------------------------------------------------------------------
983{
987 pkt_pull_md_t(uint32 __flags=0, const mdkey_vec_t &__keys=mdkey_vec_t(), const pattern_ids_t &__pattern_ids=pattern_ids_t())
988 : rpc_packet_data_t(PKT_PULL_MD), flags(__flags), keys(__keys), pattern_ids(__pattern_ids) {}
989
990 virtual ~pkt_pull_md_t();
991 virtual void serialize(bytevec_t *out, int version) const override;
992 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
993};
994
995//---------------------------------------------------------------------------
997{
1002
1004 virtual void serialize(bytevec_t *out, int version) const override;
1005 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1006};
1007
1008//---------------------------------------------------------------------------
1010{
1017 pkt_push_md_t(uint32 __flags=0, const char *__idb=nullptr, const input_file_t &__input=input_file_t(), const char *__hostname=nullptr, const func_info_and_pattern_vec_t &__contents=func_info_and_pattern_vec_t(), const ea64vec_t &__ea64s=ea64vec_t())
1018 : rpc_packet_data_t(PKT_PUSH_MD), flags(__flags), idb(__idb), input(__input), hostname(__hostname), contents(__contents), ea64s(__ea64s) {}
1019
1021 virtual void serialize(bytevec_t *out, int version) const override;
1022 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1023};
1024
1025//---------------------------------------------------------------------------
1027{
1031
1033 virtual void serialize(bytevec_t *out, int version) const override;
1034 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1035};
1036
1037//---------------------------------------------------------------------------
1039{
1041 pkt_get_pop_t(uint32 __nresults=LUMINA_GET_POP_DEFAULT_NRESULTS)
1042 : rpc_packet_data_t(PKT_GET_POP), nresults(__nresults) {}
1043
1045 virtual void serialize(bytevec_t *out, int version) const override;
1046 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1047};
1048
1049//---------------------------------------------------------------------------
1051{
1055
1057 virtual void serialize(bytevec_t *out, int version) const override;
1058 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1059};
1060
1061//---------------------------------------------------------------------------
1063{
1066
1068 virtual void serialize(bytevec_t *out, int version) const override;
1069 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1070};
1071
1072//---------------------------------------------------------------------------
1074{
1078
1080 virtual void serialize(bytevec_t *out, int version) const override;
1081 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1082};
1083
1084//---------------------------------------------------------------------------
1086{
1090
1092 virtual void serialize(bytevec_t *out, int version) const override;
1093 virtual bool deserialize(const uchar **ptr, size_t len, int version) override;
1094};
1095
1096//---------------------------------------------------------------------------
1098
1099#endif // !RPC_PACKETS
1100
1101// </PROTOCOL>
1102
1103//-------------------------------------------------------------------------
1104// If 'eas' is empty, then 'min_func_size' will be used
1105// to figure out what functions should be reported.
1107{
1110 push_md_opts_t(size_t mfs=size_t(-1)) : min_func_size(mfs) {}
1111};
1112
1113//-------------------------------------------------------------------------
1120
1121//-------------------------------------------------------------------------
1123{
1124 lumina_feature_t feature;
1125 lumina_user_t user; // takes value after HELO
1126
1127public:
1128 lumina_client_t(lumina_feature_t _feature, idarpc_stream_t *_irs);
1130
1131 virtual void set_pattern_id_md5(pattern_id_t *out, const md5_t &md5) const newapi;
1132 virtual bool is_pattern_id(const pattern_id_t &pid, const md5_t &md5) const newapi;
1133
1135 const bytevec_t &key_data,
1136 const uchar license_id[6],
1137 qstring *errbuf,
1138 const char *username,
1139 const char *password);
1141 pattern_ids_t &pattern_ids, // will be destroyed
1142 qstring *errbuf,
1143 uint32 pull_md_flags=0) newapi;
1145 eavec_t *funcs, // if empty, will be filled with interesting funcs
1146 qstring *errbuf,
1147 uint32 pull_md_flags=0) newapi;
1148#define PULL_MD_AUTO_APPLY 0x01 // automatically apply metadata
1149 // FIXME: this bit does not need to be sent
1150 // to the lumina server
1151#define PULL_MD_SEEN_FILE 0x02 // do not increase frequency count
1152
1153 virtual bool obsolete_push_md(
1155 const push_md_opts_t &opts,
1156 qstring *errbuf,
1157 metadata_appender_t *append_metadata=nullptr,
1158 uint32 flags=0) newapi;
1159
1161 qstring *errbuf,
1162 uint32 nresults=LUMINA_GET_POP_DEFAULT_NRESULTS) newapi;
1163
1164 // unconditionally remove all metadata for FUNCS
1165 virtual bool del_history(qstring *errbuf, const eavec_t &funcs) newapi;
1166
1167 virtual bool push_md(
1169 const push_md_opts_t &opts,
1170 qstring *errbuf,
1171 metadata_appender_ea_t *append_metadata=nullptr,
1172 uint32 flags=0) newapi;
1173
1174 bool can_del_history() const
1175 {
1176 return user.can_del_history();
1177 }
1178
1179};
1180
1181
1182#endif // LUMINA_HPP
size_t length(void) const
Get number of chars in this qstring (not including terminating zero)
Definition pro.h:3199
const qchar * c_str(void) const
Convert the qstring to a char *.
Definition pro.h:3246
Vector of bytes (use for dynamic memory)
Definition pro.h:3850
bytevec_t()
Constructor.
Definition pro.h:3853
bytevec_t & append(const void *buf, size_t sz)
Append bytes to the bytevec.
Definition pro.h:3859
Describes a function entry chunk.
Definition funcs.hpp:1597
A function is a set of continuous ranges of addresses with characteristics.
Definition funcs.hpp:106
generic_client_t(const char *_server_name, rpc_engine_creator_t *engine_creator, idarpc_stream_t *_irs)
Definition network.hpp:952
Definition lumina.hpp:1123
virtual bool is_pattern_id(const pattern_id_t &pid, const md5_t &md5) const newapi
bool send_helo(const bytevec_t &key_data, const uchar license_id[6], qstring *errbuf, const char *username, const char *password)
virtual void set_pattern_id_md5(pattern_id_t *out, const md5_t &md5) const newapi
virtual bool push_md(push_md_result_t *result, const push_md_opts_t &opts, qstring *errbuf, metadata_appender_ea_t *append_metadata=nullptr, uint32 flags=0) new api
virtual pkt_get_pop_result_t * get_pop(qstring *errbuf, uint32 nresults=LUMINA_GET_POP_DEFAULT_NRESULTS) new api
virtual bool del_history(qstring *errbuf, const eavec_t &funcs) new api
virtual pkt_pull_md_result_t * pull_md(pattern_ids_t &pattern_ids, qstring *errbuf, uint32 pull_md_flags=0) new api
lumina_client_t(lumina_feature_t _feature, idarpc_stream_t *_irs)
virtual bool obsolete_push_md(push_md_result_t *result, const push_md_opts_t &opts, qstring *errbuf, metadata_appender_t *append_metadata=nullptr, uint32 flags=0) new api
bool can_del_history() const
Definition lumina.hpp:1174
Definition lumina.hpp:243
metadata_creator_t(metadata_t *_md)
Definition lumina.hpp:246
void add_str(mdkey_t key, const qstring &value)
Definition lumina.hpp:252
virtual void add(mdkey_t key, const void *buf, size_t bufsize)
virtual const uchar * find(mdkey_t key, const uchar **pend=nullptr) const
virtual void add_uint64(mdkey_t key, uint64 value)
Definition lumina.hpp:257
const uchar * data
Definition lumina.hpp:262
size_t size
Definition lumina.hpp:263
metadata_iterator_t(const metadata_t &_md)
Definition lumina.hpp:266
bool next(void)
Definition lumina.hpp:270
const uchar * data_end() const
Definition lumina.hpp:281
mdkey_t key
Definition lumina.hpp:264
Definition lumina.hpp:225
void add_extra_cmts(const extra_cmts_t &extra_cmts)
metadata_t(const void *buf=nullptr, size_t sz=0)
Definition lumina.hpp:227
void add_uint64(mdkey_t key, uint64 value)
void add_insn_cmts(const insn_cmts_t &insn_cmts, bool repeatable)
void add_insn_opreprs(const insn_ops_reprs_t &opreprs)
void add(mdkey_t key, const void *buf, size_t bufsize)
void add_stkpnts(const user_stkpnts_t &stkpnts)
const uchar * find(mdkey_t key, const uchar **pend=nullptr) const
Definition lumina.hpp:285
void add(mdkey_t key, const bytevec_t &buf)
Definition lumina.hpp:230
void add_str(mdkey_t key, const qstring &value)
Definition lumina.hpp:231
Reimplementation of vector class from STL.
Definition pro.h:2262
iterator begin(void)
Get an iterator that points to the first element in the qvector.
Definition pro.h:2683
size_t size(void) const
Get the number of elements in the qvector.
Definition pro.h:2494
idaman bool ida_export get_func_tails(rangevec_t *out, ea_t func_ea)
Get all function tail ranges.
idaman bool ida_export get_func_entry_info(func_entry_info_t *out, ea_t ea, int flags=0)
Get function entry info by address.
idaman const char * end
Definition pro.h:1004
int code
Definition fpro.h:88
Defines the interface between the kernel and the UI.
idaman size_t len
Definition kernwin.hpp:1389
bool result
Definition kernwin.hpp:8332
unsigned __int64 uint64
Definition llong.hpp:13
__int64 int64
Definition llong.hpp:14
idaman void ida_export apply_metadata(ea_t ea, const func_info_t &fi, uint32 flags=AMDF_UPGRADE)
void idaapi metadata_appender_ea_t(metadata_creator_t &mcr, ea_t func_ea)
Definition lumina.hpp:302
qvector< pop_fun_t > pop_fun_vec_t
Definition lumina.hpp:707
lumina_feature_t
Definition lumina.hpp:316
@ LFEAT_TLM
Definition lumina.hpp:319
@ LFEAT_DEC
Definition lumina.hpp:318
@ LFEAT_PRIMARY_MD
Definition lumina.hpp:317
@ LFEAT_SECONDARY_MD
Definition lumina.hpp:320
lumina_op_res_t
Definition lumina.hpp:19
@ PDRES_OK
Definition lumina.hpp:23
@ PDRES_ERROR
Definition lumina.hpp:22
@ PDRES_BADPTN
Definition lumina.hpp:20
@ PDRES_NOT_FOUND
Definition lumina.hpp:21
@ PDRES_ADDED
Definition lumina.hpp:24
qvector< func_info_and_pattern_t > func_info_and_pattern_vec_t
Definition lumina.hpp:663
qvector< insn_ops_repr_t > insn_ops_reprs_t
Definition lumina.hpp:219
qvector< lumina_op_res_t > lumina_op_res_vec_t
Definition lumina.hpp:531
void close_server_connection()
generic_sort_type_t
Definition lumina.hpp:45
@ GST_NAME
Definition lumina.hpp:47
@ GST_NONE
Definition lumina.hpp:46
mdkey_t
Definition lumina.hpp:99
@ MDK_EXTRACMTS
Definition lumina.hpp:107
@ MDK_FRAME_DESC
Definition lumina.hpp:109
@ MDK_FRPTCMT
Definition lumina.hpp:104
@ MDK_OPS
Definition lumina.hpp:110
@ MDK_FCMT
Definition lumina.hpp:103
@ MDK_LAST
Definition lumina.hpp:113
@ MDK_USER_STKPNTS
Definition lumina.hpp:108
@ MDK_RPTCMTS
Definition lumina.hpp:106
@ MDK_OPS_EX
Definition lumina.hpp:111
@ MDK_TYPE
Definition lumina.hpp:101
@ MDK_CMTS
Definition lumina.hpp:105
@ MDK_VD_ELAPSED
Definition lumina.hpp:102
@ MDK_NONE
Definition lumina.hpp:100
idaman void ida_export extract_extra_cmts_from_metadata(extra_cmts_t *out, const uchar *ptr, const uchar *end)
mdkey_format_t
Definition lumina.hpp:129
@ MDKF_STR
Definition lumina.hpp:131
@ MDKF_DSVALLIST
Definition lumina.hpp:136
@ MDKF_DCSTRLIST
Definition lumina.hpp:135
@ MDKF_INT64
Definition lumina.hpp:133
@ MDKF_DOPSLIST
Definition lumina.hpp:139
@ MDKF_UINT64
Definition lumina.hpp:134
@ MDKF_NLSTRLIST
Definition lumina.hpp:138
@ MDKF_NONE
Definition lumina.hpp:130
@ MDKF_FRAME_DESC
Definition lumina.hpp:137
@ MDKF_TYPE
Definition lumina.hpp:132
ea_t ea64_t
Definition lumina.hpp:121
idaman DEPRECATED asize_t ida_export calc_func_metadata(md5_t *out_hash, func_info_t *out_fi, const func_t *pfn, metadata_appender_t *append_metadata=nullptr)
idaman rpc_packet_data_t *ida_export new_packet(uchar code, const uchar *ptr=nullptr, size_t len=0, int version=-1)
qvector< insn_cmt_t > insn_cmts_t
Definition lumina.hpp:179
const rpc_packet_type_desc_t lumina_rpc_packet_t_descs[40]
void close_server_connections()
dump_md_sort_type_t
Definition lumina.hpp:51
@ DMD_SORT_HASH
Definition lumina.hpp:53
@ DMD_SORT_NONE
Definition lumina.hpp:52
idaman void ida_export extract_user_stkpnts_from_metadata(user_stkpnts_t *out, const uchar *ptr, const uchar *end)
qvector< mdkey_t > mdkey_vec_t
Definition lumina.hpp:534
qvector< pattern_id_t > pattern_ids_t
Definition lumina.hpp:558
qvector< md5_t > md5_vec_t
Definition lumina.hpp:605
idaman void ida_export extract_insn_cmts_from_metadata(insn_cmts_t *out, const uchar *ptr, const uchar *end)
user_op_t
Definition lumina.hpp:38
@ UOT_DEL
Definition lumina.hpp:41
@ UOT_EDIT
Definition lumina.hpp:40
@ UOT_ADD
Definition lumina.hpp:39
idaman bool ida_export backup_metadata(ea_t ea)
idaman uint32 ida_export score_metadata(const func_info_t &fi)
qvector< func_info_base_t > func_info_base_vec_t
Definition lumina.hpp:579
qvector< user_stkpnt_t > user_stkpnts_t
Definition lumina.hpp:187
DECLARE_TYPE_AS_MOVABLE(insn_cmt_t)
pattern_type_t
Definition lumina.hpp:13
@ PAT_TYPE_MD5
Definition lumina.hpp:15
@ PAT_TYPE_UNKNOWN
Definition lumina.hpp:14
well_known_fail_code_t
Definition lumina.hpp:93
@ WKFC_INTERRUPTED
Definition lumina.hpp:94
lumina_rpc_packet_t
Definition lumina.hpp:869
@ __UNUSED_47
Definition lumina.hpp:907
@ __UNUSED_33
Definition lumina.hpp:893
@ PKT_HELO
Definition lumina.hpp:873
@ __UNUSED_27
Definition lumina.hpp:887
@ __UNUSED_24
Definition lumina.hpp:884
@ PKT_GET_LUMINA_INFO
Definition lumina.hpp:903
@ PKT_RPC_OK
Definition lumina.hpp:870
@ __UNUSED_34
Definition lumina.hpp:894
@ __UNUSED_20
Definition lumina.hpp:880
@ __UNUSED_23
Definition lumina.hpp:883
@ __UNUSED_39
Definition lumina.hpp:899
@ __UNUSED_26
Definition lumina.hpp:886
@ __UNUSED_29
Definition lumina.hpp:889
@ __UNUSED_32
Definition lumina.hpp:892
@ __UNUSED_40
Definition lumina.hpp:900
@ __UNUSED_35
Definition lumina.hpp:895
@ PKT_HELO_RESULT
Definition lumina.hpp:909
@ __UNUSED_41
Definition lumina.hpp:901
@ __UNUSED_28
Definition lumina.hpp:888
@ PKT_PUSH_MD_RESULT
Definition lumina.hpp:877
@ PKT_GET_LUMINA_INFO_RESULT
Definition lumina.hpp:904
@ __UNUSED_42
Definition lumina.hpp:902
@ __UNUSED_25
Definition lumina.hpp:885
@ PKT_GET_POP
Definition lumina.hpp:878
@ PKT_PULL_MD_RESULT
Definition lumina.hpp:875
@ __UNUSED_38
Definition lumina.hpp:898
@ __UNUSED_48
Definition lumina.hpp:908
@ __UNUSED_46
Definition lumina.hpp:906
@ __UNUSED_45
Definition lumina.hpp:905
@ __UNUSED_36
Definition lumina.hpp:896
@ __UNUSED_37
Definition lumina.hpp:897
@ __UNUSED_22
Definition lumina.hpp:882
@ __UNUSED_21
Definition lumina.hpp:881
@ PKT_RPC_FAIL
Definition lumina.hpp:871
@ PKT_RPC_NOTIFY
Definition lumina.hpp:872
@ __UNUSED_31
Definition lumina.hpp:891
@ PKT_PULL_MD
Definition lumina.hpp:874
@ PKT_PUSH_MD
Definition lumina.hpp:876
@ PKT_GET_POP_RESULT
Definition lumina.hpp:879
@ __UNUSED_30
Definition lumina.hpp:890
mdkey_t str2mdkey(const char *str)
qvector< func_info_and_frequency_t > func_info_and_frequency_vec_t
Definition lumina.hpp:643
idaman void ida_export extract_insn_opreprs_from_metadata(insn_ops_reprs_t *out, const uchar *ptr, const uchar *end)
qvector< func_info_pattern_and_frequency_t > func_info_pattern_and_frequency_vec_t
Definition lumina.hpp:683
qvector< extra_cmt_t > extra_cmts_t
Definition lumina.hpp:197
qvector< ea64_t > ea64vec_t
Definition lumina.hpp:537
idaman bool ida_export diff_metadata(func_md_diff_handler_t &handler, const func_info_t &left, const func_info_t &right, uint32 flags=0)
qvector< frame_mem_t > frame_mems_t
Definition lumina.hpp:742
idaman void ida_export extract_frame_desc_from_metadata(frame_desc_t *out, const uchar *ptr, const uchar *end)
idaman bool ida_export has_backup_metadata(ea_t ea)
const char * mdkey2str(mdkey_t key)
idaman lumina_client_t *ida_export get_server_connection()
qvector< lumina_user_t > lumina_users_t
Definition lumina.hpp:813
idaman void ida_export extract_type_from_metadata(md_type_parts_t *out, const uchar *ptr, const uchar *end)
qvector< func_info_t > func_info_vec_t
Definition lumina.hpp:602
void close_server_connection2(lumina_feature_t feature)
void idaapi metadata_appender_t(metadata_creator_t &mcr, const func_t *pfn)
Definition lumina.hpp:301
uchar get_lumina_rpc_packet_t_index_from_base(lumina_rpc_packet_t code)
Definition lumina.hpp:913
idaman lumina_client_t *ida_export get_server_connection2(int flags)
idaman void ida_export extract_insn_opreprs_from_metadata_ex(insn_ops_reprs_t *out, const uchar *ptr, const uchar *end)
idaman bool ida_export revert_metadata(ea_t ea)
idaman asize_t ida_export calc_function_metadata(md5_t *out_hash, func_info_t *out_fi, ea_t func_ea, metadata_appender_ea_t *append_metadata=nullptr)
qvector< utc_timestamp_t > utc_timestamp_vec_t
Definition lumina.hpp:790
mdkey_format_t get_mdkey_preferred_format(mdkey_t key)
qvector< skipped_func_t > skipped_funcs_t
Definition lumina.hpp:773
qvector< qstring > qstrvec_t
Definition lumina.hpp:831
uchar type_t
In serialized form, a type is represented by a byte sequence.
Definition nalt.hpp:1312
qtime64_t utc_timestamp_t
Definition network.hpp:504
rpc_notification_type_t
Definition network.hpp:168
@ rnt_unknown
Definition network.hpp:169
This is the first header included in the IDA project.
unsigned int uint32
unsigned 32 bit value
Definition pro.h:352
uint64 asize_t
Definition pro.h:427
adiff_t sval_t
signed value used by the processor.
Definition pro.h:450
uint64 ea_t
Definition pro.h:425
struct bytevec_tag bytevec_t
Definition pro.h:4762
unsigned char uchar
unsigned 8 bit value
Definition pro.h:341
THREAD_SAFE void qswap(T &a, T &b)
Swap 2 objects of the same type using memory copies.
Definition pro.h:1728
idaman size_t bufsize
Definition pro.h:604
_qstring< uchar > qtype
type string
Definition pro.h:3772
idaman THREAD_SAFE uint32 ida_export unpack_dd(const uchar **pptr, const uchar *end)
unpack a double word, see unpack_db()
THREAD_SAFE const void *idaapi unpack_buf_inplace(const uchar **pptr, const uchar *end)
In-place version of unpack_buf().
Definition pro.h:1881
qvector< ea_t > eavec_t
vector of addresses
Definition pro.h:2838
uint64 flags64_t
64-bit flags for each address
Definition pro.h:5106
unsigned short ushort
unsigned 16 bit value
Definition pro.h:342
void idaapi setflag(T &where, U bit, bool cnd)
Set a 'bit' in 'where' if 'value' is not zero.
Definition pro.h:1530
_qstring< char > qstring
regular string
Definition pro.h:3771
Definition lumina.hpp:191
qstring next
Definition lumina.hpp:194
qstring prev
Definition lumina.hpp:193
Definition lumina.hpp:746
frame_desc_t(sval_t __frsize=0, asize_t __argsize=asize_t(-1), ushort __frregs=0, const frame_mems_t &__members=frame_mems_t())
Definition lumina.hpp:751
asize_t argsize
Definition lumina.hpp:748
sval_t frsize
Definition lumina.hpp:747
ushort frregs
Definition lumina.hpp:749
void serialize(bytevec_t *out, int version) const
frame_mems_t members
Definition lumina.hpp:750
bool deserialize(const uchar **ptr, size_t len, int version)
Definition lumina.hpp:725
qstring name
Definition lumina.hpp:726
serialized_tinfo type
Definition lumina.hpp:727
frame_mem_t(const char *__name=nullptr, const serialized_tinfo &__type=serialized_tinfo(), const char *__cmt=nullptr, const char *__rptcmt=nullptr, ea64_t __offset=ea64_t(-1), const oprepr_t &__info=oprepr_t(), asize_t __nbytes=asize_t(-1))
Definition lumina.hpp:733
ea64_t offset
Definition lumina.hpp:730
oprepr_t info
Definition lumina.hpp:731
void serialize(bytevec_t *out, int version) const
bool deserialize(const uchar **ptr, size_t len, int version)
qstring rptcmt
Definition lumina.hpp:729
asize_t nbytes
Definition lumina.hpp:732
qstring cmt
Definition lumina.hpp:728
Definition lumina.hpp:627
void swap(func_info_and_frequency_t &other)
Definition lumina.hpp:632
void serialize(bytevec_t *out, int version) const
bool deserialize(const uchar **ptr, size_t len, int version)
uint32 frequency
Definition lumina.hpp:628
func_info_and_frequency_t(uint32 __frequency=0)
Definition lumina.hpp:629
Definition lumina.hpp:647
bool deserialize(const uchar **ptr, size_t len, int version)
pattern_id_t pattern_id
Definition lumina.hpp:648
void swap(func_info_and_pattern_t &other)
Definition lumina.hpp:652
func_info_and_pattern_t(const pattern_id_t &__pattern_id=pattern_id_t())
Definition lumina.hpp:649
void serialize(bytevec_t *out, int version) const
Definition lumina.hpp:562
void serialize(bytevec_t *out, int version) const
qstring name
Definition lumina.hpp:563
func_info_base_t(const char *__name=nullptr, const metadata_t &__metadata=metadata_t())
Definition lumina.hpp:565
bool deserialize(const uchar **ptr, size_t len, int version)
void swap(func_info_base_t &other)
Definition lumina.hpp:568
metadata_t metadata
Definition lumina.hpp:564
Definition lumina.hpp:667
bool deserialize(const uchar **ptr, size_t len, int version)
uint32 frequency
Definition lumina.hpp:668
void swap(func_info_pattern_and_frequency_t &other)
Definition lumina.hpp:672
void serialize(bytevec_t *out, int version) const
func_info_pattern_and_frequency_t(uint32 __frequency=0)
Definition lumina.hpp:669
Definition lumina.hpp:583
void swap(func_info_t &other)
Definition lumina.hpp:590
uint32 size
Definition lumina.hpp:585
void serialize(bytevec_t *out, int version) const
func_info_t(const char *__name=nullptr, uint32 __size=0, const metadata_t &__metadata=metadata_t())
Definition lumina.hpp:587
qstring name
Definition lumina.hpp:584
bool deserialize(const uchar **ptr, size_t len, int version)
metadata_t metadata
Definition lumina.hpp:586
Definition lumina.hpp:410
virtual void on_name_changed(const qstring *l, const qstring *r)
Definition lumina.hpp:419
virtual void on_comment_changed(uint32 fchunk_nr, uint32 fchunk_off, const qstring *l, const qstring *r, bool rep)
Definition lumina.hpp:445
virtual void on_proto_changed(const md_type_parts_t &l, const md_type_parts_t &r)
Definition lumina.hpp:427
virtual void on_user_stkpnt_changed(uint32 fchunk_nr, uint32 fchunk_off, const int64 *l, const int64 *r)
Definition lumina.hpp:473
virtual void on_function_comment_changed(const qstring *l, const qstring *r, bool rep)
Definition lumina.hpp:435
virtual void on_frame_member_changed(uint32 offset, const frame_mem_t *l, const frame_mem_t *r)
Definition lumina.hpp:485
virtual ~func_md_diff_handler_t()
Definition lumina.hpp:411
virtual void on_extra_comment_changed(uint32 fchunk_nr, uint32 fchunk_off, const qstring *l, const qstring *r, bool is_prev)
Definition lumina.hpp:459
virtual void on_score_changed(uint32 l, uint32 r)
Definition lumina.hpp:413
virtual void on_insn_ops_repr_changed(uint32 fchunk_nr, uint32 fchunk_off, const insn_ops_repr_t *l, const insn_ops_repr_t *r)
Definition lumina.hpp:495
Definition lumina.hpp:609
qstring path
Definition lumina.hpp:610
bool deserialize(const uchar **ptr, size_t len, int version)
void serialize(bytevec_t *out, int version) const
md5_t md5
Definition lumina.hpp:611
input_file_t(const char *__path=nullptr, const md5_t &__md5=md5_t())
Definition lumina.hpp:612
void swap(input_file_t &other)
Definition lumina.hpp:615
Definition lumina.hpp:175
qstring cmt
Definition lumina.hpp:176
Definition lumina.hpp:212
flags64_t flags
Definition lumina.hpp:215
opinfo_t ops[8]
Definition lumina.hpp:216
insn_ops_repr_t()
Definition lumina.hpp:213
Definition lumina.hpp:146
uint32 fchunk_off
Definition lumina.hpp:148
uint32 fchunk_nr
Definition lumina.hpp:147
ea_t to_ea(ea_t func_ea) const
Definition lumina.hpp:155
DEPRECATED ea_t toea(const func_t *pfn) const
Definition lumina.hpp:150
Definition lumina.hpp:850
lumina_server_info_t server
Definition lumina.hpp:852
bool deserialize(const uchar **ptr, size_t len, int version)
void serialize(bytevec_t *out, int version) const
lumina_info_t(const peer_conn_t &__client=peer_conn_t(), const lumina_server_info_t &__server=lumina_server_info_t())
Definition lumina.hpp:853
peer_conn_t client
Definition lumina.hpp:851
Definition lumina.hpp:835
lumina_server_info_t(const char *__macaddr=nullptr, const char *__verstr=nullptr, utc_timestamp_t __start_time=0, utc_timestamp_t __current_time=0)
Definition lumina.hpp:840
utc_timestamp_t start_time
Definition lumina.hpp:838
bool deserialize(const uchar **ptr, size_t len, int version)
utc_timestamp_t current_time
Definition lumina.hpp:839
void serialize(bytevec_t *out, int version) const
qstring verstr
Definition lumina.hpp:837
qstring macaddr
Definition lumina.hpp:836
Definition lumina.hpp:794
bool deserialize(const uchar **ptr, size_t len, int version)
bool can_del_history() const
Definition lumina.hpp:807
utc_timestamp_t last_active
Definition lumina.hpp:798
bool is_admin() const
Definition lumina.hpp:805
void set_is_admin(bool v=true)
Definition lumina.hpp:806
qstring name
Definition lumina.hpp:796
void set_can_del_history(bool v=true)
Definition lumina.hpp:808
void serialize(bytevec_t *out, int version) const
int karma
Definition lumina.hpp:797
lumina_user_t(const user_license_info_t &__license_info=user_license_info_t(), const char *__name=nullptr, int __karma=0, utc_timestamp_t __last_active=0, uint32 __features=0)
Definition lumina.hpp:800
user_license_info_t license_info
Definition lumina.hpp:795
uint32 features
Definition lumina.hpp:799
Definition md5.h:20
Definition lumina.hpp:339
qtype type
Definition lumina.hpp:341
bool operator!=(const md_type_parts_t &r) const
Definition lumina.hpp:348
qtype fields
Definition lumina.hpp:342
bool operator==(const md_type_parts_t &r) const
Definition lumina.hpp:344
bool userti
Definition lumina.hpp:340
Definition lumina.hpp:203
oprepr_t()
Definition lumina.hpp:204
opinfo_t opinfo
Definition lumina.hpp:207
flags64_t flags
Definition lumina.hpp:206
Definition lumina.hpp:541
pattern_id_t(pattern_type_t __type=PAT_TYPE_UNKNOWN, const bytevec_t &__data=bytevec_t())
Definition lumina.hpp:544
void serialize(bytevec_t *out, int version) const
bytevec_t data
Definition lumina.hpp:543
bool deserialize(const uchar **ptr, size_t len, int version)
pattern_type_t type
Definition lumina.hpp:542
void swap(pattern_id_t &other)
Definition lumina.hpp:547
Definition lumina.hpp:817
uint32 session_id
Definition lumina.hpp:818
qstring peer_name
Definition lumina.hpp:819
utc_timestamp_t established
Definition lumina.hpp:821
lumina_user_t user
Definition lumina.hpp:820
peer_conn_t(uint32 __session_id=0, const char *__peer_name=nullptr, const lumina_user_t &__user=lumina_user_t(), utc_timestamp_t __established=0)
Definition lumina.hpp:822
bool deserialize(const uchar **ptr, size_t len, int version)
void serialize(bytevec_t *out, int version) const
lumina_info_t info
Definition lumina.hpp:1075
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual void serialize(bytevec_t *out, int version) const override
pkt_get_lumina_info_result_t(const lumina_info_t &__info=lumina_info_t())
Definition lumina.hpp:1076
pkt_get_lumina_info_t()
Definition lumina.hpp:1064
virtual void serialize(bytevec_t *out, int version) const override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual ~pkt_get_lumina_info_t()
Definition lumina.hpp:1051
pop_fun_vec_t results
Definition lumina.hpp:1052
pkt_get_pop_result_t(const pop_fun_vec_t &__results=pop_fun_vec_t())
Definition lumina.hpp:1053
virtual void serialize(bytevec_t *out, int version) const override
virtual ~pkt_get_pop_result_t()
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
uint32 nresults
Definition lumina.hpp:1040
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual ~pkt_get_pop_t()
virtual void serialize(bytevec_t *out, int version) const override
pkt_get_pop_t(uint32 __nresults=LUMINA_GET_POP_DEFAULT_NRESULTS)
Definition lumina.hpp:1041
lumina_user_t user
Definition lumina.hpp:1087
virtual ~pkt_helo_result_t()
pkt_helo_result_t(const lumina_user_t &__user=lumina_user_t())
Definition lumina.hpp:1088
virtual void serialize(bytevec_t *out, int version) const override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
qstring username
Definition lumina.hpp:968
int client_version
Definition lumina.hpp:964
pkt_helo_t(int __client_version=0, const bytevec_t &__key=bytevec_t(), bool __record_conv=false, const char *__username=nullptr, const char *__password=nullptr)
Definition lumina.hpp:970
bytevec_t key
Definition lumina.hpp:965
qstring password
Definition lumina.hpp:969
uchar license_id[6]
Definition lumina.hpp:966
virtual ~pkt_helo_t()
bool record_conv
Definition lumina.hpp:967
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual void serialize(bytevec_t *out, int version) const override
Definition lumina.hpp:997
pkt_pull_md_result_t(const lumina_op_res_vec_t &__codes=lumina_op_res_vec_t(), const func_info_and_frequency_vec_t &__results=func_info_and_frequency_vec_t())
Definition lumina.hpp:1000
func_info_and_frequency_vec_t results
Definition lumina.hpp:999
lumina_op_res_vec_t codes
Definition lumina.hpp:998
virtual void serialize(bytevec_t *out, int version) const override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual ~pkt_pull_md_result_t()
pattern_ids_t pattern_ids
Definition lumina.hpp:986
virtual ~pkt_pull_md_t()
virtual void serialize(bytevec_t *out, int version) const override
mdkey_vec_t keys
Definition lumina.hpp:985
uint32 flags
Definition lumina.hpp:984
pkt_pull_md_t(uint32 __flags=0, const mdkey_vec_t &__keys=mdkey_vec_t(), const pattern_ids_t &__pattern_ids=pattern_ids_t())
Definition lumina.hpp:987
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual ~pkt_push_md_result_t()
virtual void serialize(bytevec_t *out, int version) const override
pkt_push_md_result_t(const lumina_op_res_vec_t &__codes=lumina_op_res_vec_t())
Definition lumina.hpp:1029
lumina_op_res_vec_t codes
Definition lumina.hpp:1028
virtual ~pkt_push_md_t()
qstring idb
Definition lumina.hpp:1012
input_file_t input
Definition lumina.hpp:1013
pkt_push_md_t(uint32 __flags=0, const char *__idb=nullptr, const input_file_t &__input=input_file_t(), const char *__hostname=nullptr, const func_info_and_pattern_vec_t &__contents=func_info_and_pattern_vec_t(), const ea64vec_t &__ea64s=ea64vec_t())
Definition lumina.hpp:1017
ea64vec_t ea64s
Definition lumina.hpp:1016
uint32 flags
Definition lumina.hpp:1011
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
func_info_and_pattern_vec_t contents
Definition lumina.hpp:1015
virtual void serialize(bytevec_t *out, int version) const override
qstring hostname
Definition lumina.hpp:1014
virtual void serialize(bytevec_t *out, int version) const override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual ~pkt_rpc_fail_t()
qstring error
Definition lumina.hpp:939
pkt_rpc_fail_t(int __result=0, const char *__error=nullptr)
Definition lumina.hpp:940
int result
Definition lumina.hpp:938
virtual void serialize(bytevec_t *out, int version) const override
rpc_notification_type_t type
Definition lumina.hpp:951
pkt_rpc_notify_t(rpc_notification_type_t __type=rnt_unknown, const char *__text=nullptr)
Definition lumina.hpp:953
virtual ~pkt_rpc_notify_t()
qstring text
Definition lumina.hpp:952
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
virtual bool deserialize(const uchar **ptr, size_t len, int version) override
pkt_rpc_ok_t()
Definition lumina.hpp:927
virtual void serialize(bytevec_t *out, int version) const override
virtual ~pkt_rpc_ok_t()
Definition lumina.hpp:687
void serialize(bytevec_t *out, int version) const
ea64_t ea64
Definition lumina.hpp:690
qstring hostname
Definition lumina.hpp:688
input_file_t input
Definition lumina.hpp:689
void swap(pop_fun_t &other)
Definition lumina.hpp:694
bool deserialize(const uchar **ptr, size_t len, int version)
pop_fun_t(const char *__hostname=nullptr, const input_file_t &__input=input_file_t(), ea64_t __ea64=ea64_t(-1))
Definition lumina.hpp:691
Definition lumina.hpp:1107
push_md_opts_t(size_t mfs=size_t(-1))
Definition lumina.hpp:1110
eavec_t eas
Definition lumina.hpp:1108
size_t min_func_size
Definition lumina.hpp:1109
Definition lumina.hpp:1115
lumina_op_res_vec_t codes
Definition lumina.hpp:1117
eavec_t eas
Definition lumina.hpp:1116
func_info_and_pattern_vec_t contents
Definition lumina.hpp:1118
Base class for an range.
Definition range.hpp:35
ea_t start_ea
start_ea included
Definition range.hpp:37
asize_t size() const
Get end_ea - start_ea.
Definition range.hpp:63
Vector of range_t instances.
Definition range.hpp:93
Definition network.hpp:757
rpc_packet_data_t(uchar _code)
Definition network.hpp:760
Definition network.hpp:780
Definition lumina.hpp:711
qtype type
Definition lumina.hpp:712
serialized_tinfo(const type_t *__type=nullptr, const type_t *__fields=nullptr)
Definition lumina.hpp:714
void serialize(bytevec_t *out, int version) const
bool empty() const
qtype fields
Definition lumina.hpp:713
bool deserialize(const uchar **ptr, size_t len, int version)
Definition lumina.hpp:761
pattern_id_t pattern_id
Definition lumina.hpp:762
bool deserialize(const uchar **ptr, size_t len, int version)
uint32 count
Definition lumina.hpp:763
void serialize(bytevec_t *out, int version) const
skipped_func_t(const pattern_id_t &__pattern_id=pattern_id_t(), uint32 __count=0)
Definition lumina.hpp:764
Definition lumina.hpp:777
qstring name
Definition lumina.hpp:779
user_license_info_t(const char *__id=nullptr, const char *__name=nullptr, const char *__email=nullptr)
Definition lumina.hpp:781
qstring email
Definition lumina.hpp:780
bool deserialize(const uchar **ptr, size_t len, int version)
void serialize(bytevec_t *out, int version) const
qstring id
Definition lumina.hpp:778
Definition lumina.hpp:183
int64 delta
Definition lumina.hpp:184
Type information in IDA.
Additional information about an operand type.
Definition nalt.hpp:1239