草庐IT

reverse-engineering

全部标签

【unity3d】unity即时战略游戏开发2 rts engine 创建新地图

A背景经过寻找发现有unity3d的[rtsengine],ue4的[template4]等rts引擎/模板。没有搜到相关教程,倒是有几个老外的ue从零开发长篇教程。rtsengine有几个试玩视频,尝试找了一下。那就不用虚幻了。距离[原坤争霸genshincraft]近了一步捏。B导入rtsengine安装unity,下载rtsengine(202210版本以上)新建3d项目,导入Cdemortsengine-configuredemolayer,然后就可执行。D新建根据官方文档,学一下各个功能。官方文档:Manual|UnityRTSEngineDocumentation一新建地图rtse

BUUCTF-reverse-reverse1(面向新手超详细)

拿到题目先查下壳(这里用的DIE,网上可以搜到下载) 64位,没有壳(壳是对代码的加密,起混淆保护的作用,一般用来阻止逆向)然后拖进IDA(64位)进行反汇编一般来说,先查看一下字符串,简单的题目会有flag或者敏感数据字符等信息,方便我们定位函数查看字符串的方法为shift+F12找到了关于flag的信息,双击点进去找到这段字符串的位置ctrl+x(交叉引用)查看是哪段函数调用了该字符串点击“OK”进入该段程序,查看汇编代码汇编代码对于初学者来说读懂比较困难,可以按“F5”查看伪C代码代码界面如图下面是详细解读:第一步,定位 一是定位加密后的flag字符串,而是准确定位加密的函数(如何加密的

c++ - 使用常规迭代器向后迭代,还是与 reverse_iterator 斗争?

我最近了解了在C++中使用反向迭代器的正确方法(特别是当您需要删除一个时)。(参见thisquestion和thisone。)你应该这样做:typedefstd::vectorIV;for(IV::reverse_iteratorrit=iv.rbegin(),rend=iv.rend();rit!=rend;++rit){//Use'rit'ifareverse_iteratorisgoodenough,e.g.,*rit+=10;//Use(rit+1).base()ifyouneedaregulariteratore.g.,iv.erase((rit+1).base());}但我

c++ - 如何使用 std::reverse_iterator 删除 *AND CONTINUE*?

我一直在stackoverflow上上下下,甚至是非常非常好的Dr.Dobbsarticle但我找不到这个问题的明确答案。Whataretheshortcomingsofstd::reverse_iterator?问题的部分答案说这可能根本不可能。std::list::reverse_iteratorit=list.rbegin();while(it!=list.rend()){intvalue=*it;if(some_cond_met_on(value)){++it;list.erase(it.base());}else{++it;}}PS:我知道还有其他选择,例如erase_if(

c++ - GCC C++ 异常处理实现

我想知道GCC是如何为C++程序实现异常处理的。我无法在Web上找到一篇易于理解和不言自明的文章(尽管有很多针对VisualC++的此类文章)。我只知道GCC的实现称为DWARF异常处理。我写了一个小的C++程序并用命令将它翻译成汇编:g++main.cpp-S-masm=intel-fno-dwarf2-cfi-asm这里给出了main.cpp和main.s文件。谁能逐行解释main.s文件的内容,尤其是.gcc_except_table和.eh_frame部分?(我的操作系统是Ubuntu13.0432位。)谢谢!ma​​in.cpp:voidf(){throw1;}intmain

c++ - std::default_random_engine 生成介于 0.0 和 1.0 之间的值

我希望能够生成介于0.0和1.0之间的随机值我试过std::default_random_enginegenerator;std::uniform_real_distributiondistribution(0.0,1.0);floatmyrand=distribution(generator);在循环中生成随机值总是给我这些值:0.0000220.0850320.6013530.8916110.9679560.1896900.5149760.3980080.2629060.7435120.089548我该怎么做才能真正获得随机值?如果我总是得到相同的,那似乎不是随机的。

windows - 仅注入(inject)函数并通过 CreateRemoteThread 运行它? C++

我正在尝试注入(inject)这个函数:voiddoubleValue(intpointer){*((int*)pointer)*=2;}通过VirtualAllocEx&WriteProcessMemory进入进程:intsize=1024*1024*4;HANDLEh=GetCurrentProcess();void*func=&doubleValue;intarg=(int)&HP;DWORDadr=(DWORD)VirtualAllocEx(h,0,size,MEM_COMMIT,PAGE_EXECUTE_READWRITE);WriteProcessMemory(h,(LPV

c++ - 如何在 64 位 DLL 中查找导出函数的地址?

我正在分析32位和64位DLL。我想找出导出函数的地址是什么。我已经处理过32位DLL,但相同的代码不适用于64位模块。DWORDaddress=(*module)->getImageBaseAddress();DWORDheaderAddress=address+((PIMAGE_DOS_HEADER)address)->e_lfanew;PIMAGE_NT_HEADERSheader=(PIMAGE_NT_HEADERS)headerAddress;PIMAGE_EXPORT_DIRECTORYexports=(PIMAGE_EXPORT_DIRECTORY)(address+he

windows - IDA Pro 反汇编显示 ?而不是 .data 中的十六进制或纯 ascii?

我正在使用IDAPro反汇编WindowsDLL文件。有一次我有一行代码说movesi,dword_xxxxxxxx我需要知道dword是什么,但双击它会将我带到.data页面,一切都是问号。我如何获得应该存在的纯文本? 最佳答案 如果您在IDA中看到问号,这意味着文件(在您的磁盘驱动器上)的这个位置没有物理数据。PE文件中的节有一个物理大小(由节头的SizeOfRawData字段给出)。此物理大小(在磁盘上)可能与Windows加载程序将其映射到进程内存后的部分大小不同(此大小由部分标题的VirtualSize字段给出)。因此,如

windows - 通过使用共享页面确定库地址绕过 Windows ASLR

我对ASLR相当熟悉,但今天我听到了一个关于Windows中ASLR实现的有趣的新事实。如果进程A和B加载相同的dll,为了优化性能,Windows只会将其加载到物理内存一次,并且两个进程将通过共享页面共享同一实例。这已经是老新闻了..但有趣的是,进程A和B都会在同一个虚拟地址加载共享库(为什么??)。在我看来,任何本地攻击(例如权限提升)都可以通过以下方式轻松绕过ASLR:1.Createanewdummyprocess2.Checktheaddressofdllsofinterest(kernel32,user32..)3.Attacktheprivilegedprocessand