首页
学习
活动
专区
圈层
工具
发布

VC 不同版本代码注入的区别

,直接运行它进行代码注入,然后目标进程没有报错退出了。...VC 默认使用 Debug 版编译,我就换 Release 版编译后,进行代码注入,想要的功能实现了,目标进程没有报错,没有退出。 是何缘故呢?...原因很简单,这是 VC 的 Debug 编译和 Release 编译后很明显的一个差别。Debug 编译后,函数名不是函数实际的地址,而是一个 jmp 指令,通过 jmp 指令跳转到实际的函数位置处。...因此 Debug 版本下并没有把我们的代码注入到目标进程,而是注入了 jmp 指令,而 Release 则会将代码注入成功。...按照上面的公式进行计算 0x00DE1CC6 + 5 + 0x0000e855 = 0x00DF0520 当然了,因为在 VC 2015 下编译后的程序每次加载的地址不一样,也就是 Inject 这个地址每次在变

87620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    VC 不同版本代码注入的改进

    在上篇文章中 《VC 不同版本代码注入的区别》 ,我们想要对目标进程进行代码的注入,由于 Debug 版编译生成的代码和 Release 版编译生成的代码有些不同(Debug 版编译后,调用函数时会有一条...jmp 指令,而 Release 没有),因此,通过 #ifdef 这样的宏来区别 VC 是以 Debug 版方式编译,还是通过 Release 版方式编译,从而编译不同的代码来针对不同的版本进行了处理...那么实际我们想要计算一下代码的长度后再进行计算,那也由此想到,我们把要注入的代码放到完成注入功能的代码的后面就可以了。...,实际代码只执行到第一个 return 语句处,而要注入到目标进程的代码放到 START 和 END 标签之内,这段代码是不会被执行的。...START 标签可以表明要注入代码的起始地址,END 标签和 START 标签可以得到实际注入代码的长度。

    66130

    别再用VC6学C语言了!

    大学学C语言的很多同学有这样的经历: 程序有bug,运行才报错,而且报错信息是英文,更难以忍受的是报错信息还不对!...其实前段时间就一直在关注刚开始学C语言的师弟师妹,叮嘱她们不要用VC6,可是大学C语言教学群里还是出现了文章一开始说的那种简单bug问题,为此我亲自测了大家用的几款软件: 他们都没有错漏提示!...CLion只需多安装一个编译器,而且和IDEA等工具同样的界面和快捷键,非常有利于学习其他语言时也使用这个公司的产品,目前没有社区版,不过可以通过学生证申请免费使用。...http://www.jianshu.com/p/aeb3b40d086b 以前总说谭浩强这本错漏百出,不讲究代码风格的教材误人子弟,而VC6让我们费时费力。...很多人说C语言指针难懂,其实指针只是一个运算符,和&对应: *地址,这样可以取地址的值 &变量,这样可以取变量的地址 这里再分享一个链接用于学习各种语言,学C的同学也可以学Go语言 https:/

    2.5K31

    《代码大全》读书笔记

    「让阅读代码比编写代码更方便」。阅读代码的次数要比编写代码多得多,即使在开发的初期也是如此。因此,为了让编写代码更方便而降低代码的可读性是非常不经济的。 避免让继承体系过深。...其中,节省代码空间只是一个次要原因;提高可读性、可靠性和可修改性等原因都更重要一些。 尽可能缩短变量的“存活”时间。 编写肯定形式的布尔表达式。 按照数轴的顺序编写数值表达式。...思考 软件开发过程 我以前认为只有坐下来写代码,才算得上是软件开发。...代码的内在逻辑性 《代码大全》这本书提到了一个原则:按照数轴的顺序编写数值表达式。 我觉得写代码就像写文章一样,要有内在逻辑性。...但是我本地系统是 Windows,而 Java 代码最终是要部署在 Linux 上。

    1.4K40

    Spring 代码优化技巧(大全1)

    spring中代码优化技巧 Java优化技巧(基础篇) Spring 代码优化技巧(大全1) Spring 代码优化技巧(大全2) 写代码需要养成的好习惯 一 .如何获取spring容器对象 1....决定他们调用顺序的关键代码在AbstractAutowireCapableBeanFactory类的initializeBean方法中。...这段代码中会先调用BeanPostProcessor的postProcessBeforeInitialization方法,而PostConstruct是通过InitDestroyAnnotationBeanPostProcessor...而invokeInitMethods方法中的代码: 决定了先调用InitializingBean,再调用init-method。...如果只是一个接口还好,但是如果项目中有成百上千个接口,都要加上异常捕获代码吗? 答案是否定的,这时全局异常处理就派上用场了:RestControllerAdvice。

    43410

    关于《代码大全2》那点事

    代码大全2 代码大全第2版我是2014年12月10日拿到手的,因为很早之前就听过这本书,也看过很多人推荐它,说是编程界中的权威书籍,然后我就去京东下订把这本加上参考文献索引一共九百多页的书买了回公司...代码大全讲了很多细节,从基础构建讲起,告诉我们在进行软件构建需要了解的基础,需要准备什么;接着告诉我们如何去创建高质量的代码、编程中变量跟语句的最佳实践;然后是如何对代码进行改善,包括调试、重构、代码调整策略和技术...代码大全讲了很多我们在实际开发中可能并没有考虑的情况,然而随着编程经验的丰富我们可能遇到各种各样的问题,会犯很多人犯过的错误,代码大全作为编程的最佳实践,给了我们很多启示,很多不必要的错误是可以避免的,...大家可能觉得编程就是一个经验活,代码大全告诉我们,经验的价值比书本知识价值要小,因为相对其他行业知识更新太快。...看代码大全可以让我们去学习如何更好的编程,代码虽说最终是交给计算机来解读,不管我们写成怎样,计算机都会按照它的理解方式去理解,然而对人来说,代码的可读性意味着其他编程人员可以更好的去理解程序的意图,我们要写出高质量的代码不容易

    93320
    领券