简单反汇编之还原(谁是窃贼算法)C++代码

OD+IDA动静结合反编译C++ 通过OD动态调试,内存查到定位程序代码,IDA静态反编译出来C/C++伪代码,本文完整走一遍逆向反编译的流程。 阅读详情

    能读懂汇编代码不难,但是要是从汇编代码还原成源码就有的难度了(高手飘过),今天闲来无事,从网上找了个简单的算法,试着从汇编代码还原代码,从网上找了个谁是窃贼的算法代码,在没有看源码的情况下编译,然后反汇编Release版,分析的汇编代码如下:

 

  最后根据汇编代码还原出来的C++代码(比较乱):

  还原代码的处女作品,以后还是要多多练习,才能有助于汇编功底。。。。。

 

 最后附上算法原题:

公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:
甲说:“乙没有偷,是丁偷的。”
乙说:“我没有偷,是丙便的。”
丙说:“甲没有偷,是乙偷的。”
丁说:“我没有偷。”
请根据这四人的答话判断谁是盗窃者。

C++程序正向编译逆向反编译(一) 逆向工程师必须先是一个正向开发工程师,如果没有C++/MFC的开发经验,就不会懂得如何逆向分析C++/MFC的程序,本文完成一个helloworld的C++正逆向过程。 阅读详情

相关推荐

ncl泰勒图(均方根误差、标准差、相关系数)

ncl泰勒图(均方根误差、标准差、相关系数)

weixin_61281699的博客 8007

c ++ 逆向还原

c++ 反汇编

flygle~的博客 1837

星网宇达Newton-M2设备安装及配置

主要介绍了星网宇达Newton-M2设备的配置过程

weixin_49353445的博客 2676

c++反汇编代码分析--偷调函数

注:不知道说“偷调函数”说法合不合适,在此也就这样一说了~ 主要有两点: 一、再说C++反汇编函数调用,重点是怎样通过堆栈实现由被调用函数转到调用者 二、在 1 的基础上,在WinDbg下通过修改EIP实现如下一个功能:   有两个函数foo()和hack(),在main函数中调用foo,但是在foo执行过程中,通过修改EIP来调用hack函数,最后再回到main中foo函数的下一条语句

happylife1527的专栏 598

【Lane】 Ultra-Fast-Lane-Detection 复现

引言 车道线检测源码复现以及训练自己的数据集 1 环境搭建 conda create -n lane python=3.7 conda activate lane # 激活环境 conda install pytorch torchvision cudatoolkit=10.1 -c pytorch pip install -r requirements.txt 2 下载项目源码 若在服务器上可以用指令下载,否则直接在网址中下载 git clone https://github.com/cfzd/U

qq_44703886的博客 2万+

【多媒体交互】Unity+普通摄像头实现UI事件分析

利用摄像头捕捉用户的手势或动作,结合坐标映射与事件系统触发UI交互

qq_38350004的博客 1319

[加密解密] 在反汇编中识别加密算法(特征码)

请转到以下链接食用 ???? ????:https://www.cnblogs.com/LyShark/p/13407677.html

墨鱼菜鸡 322

S32K3 eMIOS输入捕获(ICU)全解析:从信号测量到代码实现

本文深入解析了S32K3 eMIOS输入捕获(ICU)技术,从信号测量到代码实现的完整流程。详细对比了六种核心捕获模式的性能差异,提供了动态模式切换、Counter Bus配置、中断服务程序优化等实战技巧,并分享了汽车电子中的典型应用案例,如发动机转速测量和CAN唤醒脉冲检测。

weixin_33137081的博客 347

c++反汇编逆向还原——for循环(笔记)

c++反汇编逆向还原代码for循环的实现,for循环和while循环在逆向还原的区别

xk 1055

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

AI+全栈,AI+应用,实操落地,前沿技术 3808

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2063

C++ 反汇编:针对加减乘除的还原

算术运算通常是指,加减乘除四则运算,而计算机中的四则运算与数学中的有所不同,同样是实现算术运算,高级语言与汇编语言的实现思路完全不同,往往一个简单的减法运算,都要几条指令的配合才能得出计算结果,而为了保证程序的高效率,编译器会对其进行最大限度地优化,这就涉及到汇编代码的逆推,如下笔记则是整理的逆推常用手法。将编译期间可计算出结果的变量转换成常量,这样就减少了变量的使用,如下,由于printf输出的是一个常量,则编译器会对其进行处理,在编译期间计算出变量结果后,直接使用常量10来代替,于是。

微软技术分享 9013

把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法

文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 230

c语言的反汇编识别和算法逆向,网络安全之逆向相关汇总

原标题:网络安全之逆向相关汇总 初识逆向工程▼软件逆向工程大多数时候都会被简称为逆向工程(Reverse engineering)或直接将其称为逆向(Reverse)。软件逆向工程的基本思路是将二进制代码按照一定格式进行正确有效的反,并通过分析反代码再配合其调用的外部函数或系统API等,对其代码逻辑进行理解,而在这个过程中最重要的就是推理出该二进制使用的。C语言逆向基础知识▼介绍C语言中流程控制代...

weixin_39669761的博客 554

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

c++反汇编逆向还原——do while循环(笔记)

c++反汇编逆向还原do while循环详细过程笔记

xk 905

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++反汇编逆向还原——数组与循环还原练习(笔记)

c++反汇编逆向还原代码,shl指令、数组元素的获取、初始化、循环的实现

xk 1057

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

安全圈最被低估的10个神器:一个比一个强大,大佬都在偷偷用!零基础入门到精通,看这篇就够了!赶紧收藏!

这些冷门的网络安全工具是你工具箱中的强大补充,它们提供了独特的功能,覆盖从侦察到漏洞利用的多个环节。虽然像 Nmap 和 Burp Suite 这样的工具不可或缺,但探索像 CyberChef、BloodHound 和 Impacket 这样的“宝藏工具”能让你在网络安全工作中更加高效和灵活。

baimao__Ch的博客 4683

反编译C++:深入理解其工作原理

在软件开发中,反编译是一种将编译后的二进制代码转换回源代码的过程。对于高级编程技巧和解决方案的查找,以及针对特定项目挑战的技术建议和创新思路,了解反编译C++的原理是非常有帮助的。本文将详细介绍反编译C++的过程,并提供相关实例。

理论都是虚的,代码才是王道。 9247

ida c++反汇编逆向还原冒泡排序——双层for循环(笔记)

利用ida进行c++反汇编逆向还原代码冒泡排序--双层for循环

xk 589

反编译会遇到哪些难题

在C++代码的反编译中特别明显,因为C++语言具有较复杂的特性,如类、继承、多态等,而这些特性需要依赖准确的类名和函数名才能正确地还原出原始代码的结构和逻辑。在ASP.NET应用程序中,如果无法获取到相关的.NET框架和ASP.NET组件,反编译后的代码可能无法正确解析和执行相关的API调用和功能。为了防止反编译,开发者可以使用代码混淆技术代码混淆技术是一种有效的反反编译手段,主要通过修改代码结构和逻辑来增加反编译的难度,常见的包括,变量名和函数名混淆、添加冗余代码、控制流混淆、字符串加密等。

m0_56551554的博客 1440

趣味算法:字符串反转的N种方法

老赵在反对北大青鸟的随笔中提到了数组反转。这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常)。因为我写着写着,就写出来8种方法……现在我们以字符串的反转为例,来介绍这几种方法并对它们的性能进行比较。 使用Array.Reverse方法 对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法 public static str...

weixin_33923148的博客 230

C/C++ 程序链接 与 万能反汇编工具objdump

C/C++ 程序链接 与 万能反汇编工具objdump

wanglei_11的博客 2563

一些杂乱的C语言算法

将字符串从小写转换为大写 在下面的程序中,将要求用户输入小写的String,然后程序会将其转换为大写的String。程序中遵循的逻辑:所有小写字母(a-z)的ASCII值均在97至122之间,而其相应的大写字母(A-Z)的ASCII值均比其小32。例如,“ a”的ASCII值为97,而“ A”的ASCII值为65(97-32)。其他字母也一样。基于此逻辑,编写了以下C程序进行转换。 #includ...

chen1415886044的博客 536
上一篇: 简单反汇编之冒泡排序
下一篇: 简单反汇编之注册机编写
ms2146
博客等级 码龄17年 29粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值