我有一些旧的 rrdtool 数据库,其确切的创建方法早已丢失。我需要创建一个与当前数据库具有相同特征的新数据库。我已经转储了几个旧数据库并仔细研究了内容,但我不确定如何解释元数据。我认为它出现在以下节中
<cf> AVERAGE </cf>
<pdp_per_row> 360 </pdp_per_row> <!-- 1800 seconds -->
<xff> 5.0000000000e-01 </xff>
Run Code Online (Sandbox Code Playgroud)
有四个这样的节,它们与我记得设置循环级联的方式相对应。有没有人已经这样做了,或者可以给我一些关于如何从现有数据库克隆一个新的空 rrd 数据库的指针?或者告诉我我在文档中遗漏了什么。
我们在一个新项目中使用hibernate,之后我们使用它hibernate.reveng.xml来创建我们的*.hbm.xml文件和POJO.我们希望在每个POJO中都有等于方法.我发现你可以<meta attribute="use-in-equals">true</meta>在你的hbm文件中使用来标记在equals中使用哪些属性.但这意味着编辑大量文件,然后在我们修改数据库中的表或列时,将来再次重新编辑文件.
所以我想知道是否有办法在hibernate.reveng.xml文件中的每个pojo(表)的equals方法中放置哪些属性?
我在这里看到Olly支持多线程调试,但我找不到任何视频或一个很好的教程来了解如何调试多线程程序.
我想知道如何使用Ollydbg和查看所有当前线程的堆栈和寄存器,并区分现在正在运行的线程.
我可以在Linux/Windows中使用其他任何好的调试工具吗?
从objc来源我们可以看到SEL定义为typedef struct objc_selector *SEL;
我用idaq反汇编我的dylib ,并且我确实调用了_MSHookMessageEx函数,它是从libsubstrate.dylib链接的
_MSHookMessageEx 有以下签名
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);
Run Code Online (Sandbox Code Playgroud)
所以我们可以假设在源代码中有类似@selector(someMethod:)第二个参数的东西
在目标文件的数据部分,我可以看到源代码中使用的所有CFStrings

但是这里没有任何选择器字符串,所以我们可以看到它@selector()没有转换成静态CFString
我很感兴趣找到传递给_MSHookMessageEx函数的选择器和类的String表示.
如何从目标文件(Mach-o)获取SEL(@selector())?SEL如何存储在Mach-o中?
谢谢!
更新:
我确实在调用方法之前在ida方法表示中有一些字符串

我猜有些选择器传入函数.我对吗?
最近我反汇编了一个DLL(用c/c ++编写)并注意到代码段中有很多"跳转存根".这些存根只会跳转到DLL中的函数.
例如:
jmp foo()
jmp foo2()
...
Run Code Online (Sandbox Code Playgroud)
为什么编译器(Visual Studio 2012)在二进制文件中包含这些函数存根?
谢谢!
我编写了一个代码,能够使用映射文件生成自己的覆盖数据,而无需另外的应用程序调试它,并且还能够生成与Cobertura报告和OpenCover兼容的xml报告,以进行进一步的分析和图形报告.
事情是,到目前为止,我必须调用函数来手动生成报告,并且想法是在流程退出时自动生成报告.
我的第一种方法是尝试在RtlExitUserProcess/RtlExitUserThread/ExitProcess中编写钩子但是每个函数都覆盖一些特定的情况,如果你强制进程结束(例如使用taskkill终止它)或者用CTRL + C关闭应用程序控制台窗口的行为变化.
有什么办法可以创建一个可靠的回调,当应用程序即将结束时,它总会被调用吗?就像在调试另一个应用程序时一样,当进程终止时,您会收到一个包含详细信息的调试事件.
提前致谢
作为JHispster 2.11.0的一部分,实体配置保存在.jhipster目录中的特定.json文件中.这些文件可用于使用以下命令在JHipster应用程序中重新生成实体和相关文件.
哟jhipster:实体ENTITY_NAME
有没有办法从现有数据库自动生成那些.json文件?
我正在学习逆向工程的基础.在扭转裂缝的同时,在几乎所有功能的开头都看到了这种模式:
pushl %ebp
movl %esp, %ebp
pushl %ebx # because ebx is a callee-saved register
subl $0x14,%esp # of course $0x14 changes depending on the function
calll 0x08048766
addl $0x1a5f, %ebx # also this value sometime changes depending on the function
Run Code Online (Sandbox Code Playgroud)
哪里0x08048766有一个函数可以做到这一点:
movl 0(%esp), %ebx
retl
Run Code Online (Sandbox Code Playgroud)
所以基本上,正常情况下,每个函数首先初始化寄存器ebp和esp.然后寄存器ebx被推入堆栈,这也是完全可以理解的,因为ebx是被调用者保存的寄存器,稍后在函数中使用它来引用一些静态数据(来自.rodata),例如:
leal -0x17b7(%ebx), %eax
movl %eax, 0(%esp)
calll printf
Run Code Online (Sandbox Code Playgroud)
现在最有趣的(对我而言)部分:如果我已经正确理解,ebx首先用指向的值初始化esp(这使用函数at 0x08048766),为什么?里面有什么?这不是一个未初始化的点到堆栈中吗?
然后添加另一个值ebx.这个值代表什么?
我想更好地理解ebx在这种情况下如何使用寄存器,以及如何计算它指向的地址. …
我正试图逆向设计这个神秘功能.此函数返回一个整数,并将struct节点作为参数
#include "mystery.h"
int mystery(struct e4_struct *s){}
Run Code Online (Sandbox Code Playgroud)
头文件是一个简单的结构声明
struct my_struct {
int a;
int b;
};
Run Code Online (Sandbox Code Playgroud)
我试图逆向工程的组件是
400596: 8b 07 mov (%rdi),%eax
400598: 8d 04 40 lea (%rax,%rax,2),%eax
40059b: 89 07 mov %eax,(%rdi)
40059d: 83 47 04 07 addl $0x7,0x4(%rdi)
4005a1: c3 retq
Run Code Online (Sandbox Code Playgroud)
到目前为止,我认为功能如下:
int mystery(struct m_struct *s){
int i = s->a;
i = 3*i;
int j = s->b;
j += 7;
return i;
}
Run Code Online (Sandbox Code Playgroud)
但这不正确.我不明白究竟mov %eax,(%rdi)是什么以及函数最终返回的是什么因为它应该返回和整数.