如何从PID获取进程基址

如何从PID获取进程基址,第1张

按ctrl+alt+delete键调出任务栏管卜哗理器,依次点击查看----选择列---在d出的型仿行窗口中在PID前面打勾,带你及确定,在任务栏管理器的进程中 PID下面的就是该进程的进程号!或者一次 开始---运行----在对话框中输入:cmd 然后回车---在d出的控制台中输入 tasklist 就大森会出现所有进程,同样PID下面的是进程号!

找基址用CE比较方便,但OD也是可以的,基址就是静态地址

首先你要先确定某一内存数据,即血蓝XY什么的

然后看地址,基址就是固定在程序中的某一位置的地址,具体点就是data区段里的地址

通常来说刚开始找好拦如到的地址是动态的,即临时衡姿分配的内存中

这个时候需要在你找的地址上下读写断点

一般来说会断到形如“mov

寄存器1,

[寄存器2

+

偏移]”的指令

接着去搜索"寄存器2"的值,看看有没有静态地址存放,如果没有,重友启复上述步骤,直到找到静态地址

编译器判断泛型方法的实际类型参数的过程叫做类型推断,类型推断的实现方法是一种非常复杂的过程.根据调用泛型方法时实际传递的参数类型或返回值类型来推断,具体规则如下:如果某类型变量只在方法参数列表或返回值的一处游旅蔽被调用了,那根据调用该方法时该处的实际类型来确定,即直接根据调用方法时传递的实神州际类型或方法返回值的类型来确定泛型方法的参数类型.例如:swap(newString[3],3,4)--->staticvoidswap(E[]a,inti,intt)当某个类型变量在方法的参数列表和返回值中被多次利用了,而且在调用方法时这多处的实际类型又是一样的,那么这也可以很明显的知道此泛型方法的参数类型.例如:add(3,5)-->staticTadd(Ta,Tb)当某个类型变量在方法的参数列表和返回值中被多次利用了,而且在调用方法时这多处的实际类型又对应不同的类型,且返回值是void,那么这时取多处实际变量类型的最大交集.例如:fill(newInteger[3],3.5f)-->staticvoidfill(T[]a,Ti),此时T为Number,编译不会报错,但运行有问题.当某个类型变量在方法的参数列表和返回值中被多次利用了,且返回值镇毕不为空,在调用方法时这多处的实际类型又对应不同的类型,那么优先考虑返回值的类型.intx=add(3,3.5f)-->staticTadd(Ta,Tb)参数类型的类型推断具有传递性,copy(newInteger[5],newString[5])-->staticvoidcopy(T[]a,T[]b)T为Object类型,没有问题copy(newVector(),newInteger[5])-->staticvoidcopy(Collectiona,T[]b)在newVector()时决定了T为String类型,而newInteger[5]不是String类型,这样会报错


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12263089.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存