2 liulilittle

尚未进行身份认证

盯,一堆牛皮的大佬!口怕!瑟瑟发抖!

等级
TA的排名 6w+

在 C/C++ 中实现委托(delegate)

 相信使用过C#语言的人们,对于委托应该是记忆深刻,委托具有很多不错的特性,但最令人感到兴奋的是它可以简化很多复杂的开发同时具有低耦合与对象闭包的特性。  委托在C/C++中可以解决最直观的就有问题,一个是相同代码签名的成员函数与全局函数可以被一个委托调用的问题,在C/C++语言中我们在不借助委托的前提下,代码很难在不增加耦合与依赖的情况调用它们(无论这个依赖是隐式的还是显式的都会存在这个...

2019-02-05 13:18:09

dotNET 高阶反射(RTTI):.NET 程序集反编译函数为 IL 代码

 我们知道在“反射”的应用中是可以在运行时“动态的即时编译IL”(.NETEmit≈≈≈C/C++__emit),那么既然可以即时编译,自然可以逆向,但这是属于“高阶”反射方面的内容,基本的说任何只要是托管类型的程式,都是可以在运行时IL逆转的,类似JavaScript语言逆转代码相对.NET、JVM会极其直观,像设计立于“通用语言平台”的“过程虚拟机”都没办法...

2018-11-30 16:53:26

C/C++ setjmp 与 longjmp 函数的实现

 在C/C++语言函数库中提供了一组用于在线程内“长条转”的函数,它是大多数C/C++协程“Coroutine”库实现的核心函数,当然C语言的异常处理大多也皆是此方式实现的。 在x64环境中longjmp还是只允许int传参,当然这无法在x64平台表示一个有效的 QWORDPTR指针,当然本文的实现并不是在x64环境下实现的,而是在x86环境下实...

2018-11-23 12:42:50

C/C++ shared_ptr 的实现

 shared_ptr(共享指针)在STA(单线程)的场景并没有太多的意义,而且它还会浪费一些内存与处理器效能,它的价值并不是体现在STA环境下的,在STA场景内,一个对象在“函数调用链”之间的传递形式为“自上向下(A->B->C)”,约定对象的释放的“诱点”始终是可靠的,我们可以在“调用函数链”拥有此对象最上层的函数进行释放。 但是MTA(多线程)场景下按照STA场...

2018-11-19 15:24:49

C/C++ nvm::collections::List class -- shared

usage#include"object.h"#include"collections/HashSet.h"#include"collections/Dictionary.h"#include"collections/List.h"#include"gc/mempoll.h"#include"array.h"#include"string.h&qu

2018-11-13 10:36:18

C/C++ 替换编译器CXX内存分配释放的实现(new & delete)

 C/C++的new调用 “::operatornew”函数进行内存分配,delete调用“::operatordelete”函数,但我们现在要做的是在不影响应用代码前提下替换其“C/C++”内存的分配与释放。 我们先琢磨大概有哪些实现,很多人们可能会考虑到通过“inline-hook”,这是可行的,只需要拿到这几个由编译器内置的 “new、delete”的函数地...

2018-11-06 11:19:31

C/C++ nvm::collections::HashSet class -- shared

usage #include"object.h"#include"collections/HashSet.h"#include"collections/Dictionary.h"#include"gc/mempoll.h"usingnvm::collections::HashSet;usingnvm::collections::IEnumerator;intma...

2018-11-05 11:14:38

C/C++ nvm::threading::Interlocked class -- shared

usage /* usage*/#include<stdio.h>#include"nvm.h"#include"threading/Interlocked.h"staticnvm::Int32g_globalAutoIncrnum=0;usingnvm::threading::Interlocked;intmain(intargc...

2018-11-01 15:43:38

ARM 初步尝试

ARM似是栈过程处理但又不全是,总之我初步尝试的映像并不是太友好,另外本文内容可能具有一些错误,欢迎各位大佬指点一二,ARM具有(R0~R15)个寄存器,例在“ARM-thumb”中规定以下。【r0~r3】传入参数【r4~r11】局部变量【r12】IP暂存器【r13】SP栈指针【r14】LP链接寄存器(返回地址,RIP)【r15】PC程序计数器但真的与现实情况下会有不少出入,...

2018-10-30 11:58:48

严格的C风格字符串 Unicode To UTF-8 的实现(C#、JavaScript)

 本文是关于 Unicode也就是LPWSTR转换成UTF-8的实现,在Win32k平台中我们可以借助 “MultiByteToWideChar/WideCharToMultiByte”【核心编程】两个函数进行多字节与宽字节字符串进行转换【PS:A2W/W2A无法转换,CP_ACP在WIN32中文版上为936(GBK简体中文)】 .NETFramework提供...

2018-10-19 10:51:53

.NET 探索委托调用函数的过程

  从汇编的角度上看委托的调用不得不说是一件稍稍有趣的事情,想想我们常常的利用委托调用一个函数,但是我们不能连委托是怎么调用的都弄不明白,这样说出去是很丢脸的不是儿,何况这也不是什么好复杂的事儿,当然不同的 .NET/CLR之间委托的调用过程可能会有差异,但大体应该是差不多的。  我们知道.NET/CLR好的实现有很多,例如:sscli2.0/4.0(Win32k平台主要的 ...

2018-10-15 14:27:32

利用大漠插件编写的 “楚留香手游珍宝阁” 购买小精灵

  最近一段时间又氪又肝网易的“楚留香”,当然的确我现在已经没有太多玩下去的动力了,不是还有一帮耍的不错的早就撤了,网易真的把我恶心疼了,另外网易对于外挂的打击真的让人感到可笑,这游戏各种脚本外挂横行,然而网易并不会进行真正的封禁处罚,脚本根本就不会管,任何事情只要交钱就能解决任何问题,让人看到了网易极其令人恶心的无耻嘴脸。  珍宝阁中卖的任何秘籍,正常玩家基本都无法买到,很多玩家为了买...

2018-10-14 17:27:21

C/C++ Mono 加载内存中的 .NET Assembly Image To AppDomain

 我们都知道“Unity3D-csharp”可以把.NET程序打包为一个加密过后的程序集,但是我们不可在未解密之前的情况下加载这个程序集,但是解密以后的程序集是存放于内中的。 似可通过“mono_image_open_from_data”、“mono_image_open_from_data_full”、“mono_image_open_from_data_with_name”...

2018-10-13 21:22:02

C/C++ Mono 虚拟机运行一个可执行的 .NET Assembly

  本文是嵌入Mono虚拟机中一片基础的启蒙篇幅,它影响到后期对于描述Mono虚拟机引擎嵌入应用方面的内容,另外本文建议读者至少对.NET是什么有一个清晰的认识。  参考:  MonoAPIDocumentation http://docs.go-mono.com/?link=root:   EmbeddingMono https://www.mono-...

2018-10-09 13:29:57

关于最近网上谣言传的很凶的 “太吾绘卷” 游戏源代码的问题。

    这两天吵的挺厉害的,我本人觉得喜欢这类题材的人们也可以去支持一下这个游戏,但是有一点恶意的抨击别人的代码写得乱,我感到真的没必要,先想想你自己写的怎么样再来说吧。   当然我这不是为“太吾绘卷”洗白,这跟我没关系(不是一起的),但是我说过我很厌恶装逼侠,它们都令我都有一点点语言歧视,我可以说我把“太吾绘卷”的.netdlllib提取出来了(相当于代码出来了)但是本人想说...

2018-09-29 14:00:44

.NET 探索函数栈的一些问题

  本文主要目的是探索栈上的一些问题,这些问题虽然细微但值得重视,下面本文将列出一些不同的情况,它们可能会发生不同性质的问题。     intn1=0x7A;    intn2=0x8A;    long*p=(long*)&n2;    *p=0;  上面的代码产生了一个严重的问题,在大多数人看来上述的代码似乎...

2018-09-20 22:04:37

C# 托管指针

  人们总说C#没有指针?但,这是真的?答案是否定的!我个体喜欢贴近“指针”或者说是“地址标识符”编程,这会令人感到不尽的美妙,让人感到不至离被驾驭死物(计算机)太过遥远,C#之中有哪些指针呢?从语法层面只有原生指针,但是托管指针就真的不存在了?答案是否定的,我们天天都在接触它只不过它有了一个新的叫法,叫做“O类型引用”但我们似乎不可以获取它引用的地址,这似乎是一件稍稍令人闹...

2018-09-11 17:40:16

ROP_chains demo code No.1

  gadgets为小装置它代表着链上所需要的各个组成部分,ROP_chains是利用栈与RETN的特性工作的,但有一点就是说用于攻击目的rop_chains里面的各个小装置,攻击者会想办法的从各个版本的操作系统已知公共的DLL库中提出来(指向代码的公共基址几乎是等同的),这个东西你可以称呼它为“返回导向”refer-originl:https://blog.csdn.net...

2018-09-10 18:29:03

一个很简单的基于栈式过程虚拟机的实现,它运行目标平台【x86】的原生代码。

  本文提供的“栈式过程虚拟机”的实现,挂在本人的github上面,对想要深入了解“栈式过程虚拟机”的人,它或许可以起到一个不错的作用,但是本人建议一般性了解就可以了,另外顺带一提:如果你想要依靠它维持生活,在咋们国家是不可能不现实的,到时候你就只有“多冷的隆冬恨啊啊啊在东北玩泥巴”西北风吹啊吹;差不多这样子的凄惨。  如果你真想要搞“过程虚拟机”这方面的东西,...

2018-09-06 18:27:59

小实验:PUSH到栈但不POP是否会引发错误或泄漏

  一个有趣的小实验,它将告诉我们PUSH到栈但不POP会不会发生错误或栈泄漏,本文只附一张运行结果图简单说说,剩下就靠各位自行试验领悟。  看上去似乎很有趣的~是吧,其实这么一个小测试你就想明白很多东西,例:栈的工作行为,任何程序都具有相应的工作栈【计算堆栈】,纵然是“基于寄存器式过程虚拟机”也是相同的,但它仅仅只是结合寄存器的作用,提高代码的效能减少对栈内存的R/D,但它...

2018-09-03 15:21:57

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!