首页 > 其他分享 >simple-check-100

simple-check-100

时间:2023-11-10 14:57:41浏览次数:33  
标签:函数 eax simple char int 100 断点 check ida

代码脚本解开法

#include <stdio.h>
int main(int argc, char* argv[]) {
char flag_data[] = {
    220, 23, 191, 91, 212, 10, 210, 27, 125, 218,
    167, 149, 181, 50, 16, 246, 28, 101, 83, 83,
    103, 186, 234, 110, 120, 34, 114, 211};
char v7[] = {
    84, -56, 126, -29, 100, -57, 22, -102, -51, 17,
    101, 50, 45, -29, -45, 67, -110, -87, -99, -46,
    -26, 109, 44, -45, -74, -67, -2, 106};
unsigned int v2;
unsigned char* v3;
// v11 = -478230444;
// v12 = -1709783196;
// v13 = 845484493;
// v14 = 1137959725;
// v15 = -761419374;
// v16 = -752063002;
// v17 = -74;
// v18 = -67;
// v19 = -2;
// v20 = 106;
// 方法一:类比写
for (int i = 0; i <= 6; ++i) {
    v2 = ((v7[4 * i] & 0x000000FF) + ((v7[4 * i + 1] & 0x000000FF) << 8)
        + ((v7[4 * i + 2] & 0x000000FF) << 16) + ((v7[4 * i + 3] & 0x000000FF) <<
            24)) ^ 0xDEADBEEF;
    v3 = (unsigned char*)&v2;
        for (int j = 3; j >= 0; --j) {
        printf("%c", *(v3 + j) ^ flag_data[4 * i + j]);
    }
}
// 方法二:按位异或,小端字节序,低位在低地址
// for (int i = 0; i <= 6; ++i) {
// printf("%c", v7[4 * i + 3] ^ 0xDE ^ flag_data[4 * i + 3]);
// printf("%c", v7[4 * i + 2] ^ 0xAD ^ flag_data[4 * i + 2]);
// printf("%c", v7[4 * i + 1] ^ 0xBE ^ flag_data[4 * i + 1]);
// printf("%c", v7[4 * i] ^ 0xEF ^ flag_data[4 * i]);
// }
return 0;
}

动态调试

这里得用Linux得gdb动态调试

 

win

ida

找到关键函数下断点

 

 动态调试

 这里不改寄存器,直接改函数,jz——>jnz

 然后运行到函数结束,return处

 但是程序得到不可打印字符,说明ida不行

 然后od也差不多是一个意思了

 

GDB

用这个的话需要win结合一起用,因为需要在win的ida那里看地址

在ida中找到关键函数的地址

 

 在gdb上下断点

mian函数下一个,防止一下子运行结束了

然后再到关键函数那里下一个

 然后运行程序

 然后运行到下一个断点

 在这里的话因为是test eax eax,所以查看一下eax的值,果不其然为0,那么test就是0和0按位与,这样子的话最后导致的就是zf位为1,那么就会发生jz跳转,就会跳转到wrong的部分,所以要改变zf的结果,也就是要改变eax的值

test指令

 

 zf位

 

所以操作为

 最后得到结果

 

标签:函数,eax,simple,char,int,100,断点,check,ida
From: https://www.cnblogs.com/lhqrusht0p/p/17824086.html

相关文章

  • 解析Acrel-1000安科瑞变电站综合自动化系统的应用场景——安科瑞李笑曼
    功能:系统提供了完整的SCADA功能,包括主接线图、设备工况、实时数据显示、定值管理、SOE报警/记录/查询/打印、棒图、实时/历史曲线、语音报警、历史信息查询、用户权限管理、各种运行数据统计分析报表等。系统可以协助运维人员快速故障分析、定位和排除问题,对配电系统和用电设备进行......
  • 静态代码分析工具Helix QAC 2023.3:将100%覆盖MISRA C++2023规则
    静态代码分析工具HelixQAC2023.3:将100%覆盖MISRAC++:2023®规则 HelixQAC2023.3预计将于2023年第四季度发布的新MISRAC++®指南,将100%覆盖MISRAC++:2023®规则。 此外,此版本扩展了对C++20语言支持,并改进了PerforceValidate平台和HelixQAC与Validate的集成,包括其他......
  • 【故障公告】数据库服务器今年第六次 CPU 100% 故障
    自9月第五次数据库服务器CPU100%故障之后,今天下午又出现数据库服务器CPU100%故障,是今年的第六次。自从园子2013年搬上阿里云,几乎每年都会遇到数据库服务器CPU100%问题,但今年创造了新记录,一年还未结束,却已遭遇六次,最困难的一年,连故障也过来凑热闹。今天的故障发生于14......
  • vue 项目使用element ui 中tree组件 check-strictly 用法
    属性check-strictly:   在显示复选框的情况下,是否严格遵循父子互相关联的做法,默c认为false。   默认false,父子关联。      点击父节点,其下子节点全部统一跟随父节点变化,点击子节点,子节点部分勾选时,父节点处于半选状态。   设置为true,严格遵循......
  • 微信小程序checkbox的bindchange不生效的问题
    1、用了ChatGPT和文心一言,都是让我用bindchange来绑定事件。<checkbox bindchange="checkboxChange" value="false">1231312</checkbox> 但是实际我绑定了,并没有效果checkboxChange:function(e){constcheckboxValue=e.detail.value;//获取当前checkbo......
  • el-select实现全选功能 el-checkbox
    el-select实现全选功能el-checkbox文章分类 - vuevue开发el-select实现全选功能摘要:效果图依赖说明使用element-ui的el-select和el-option进行二次封装,故依赖element-ui功能介绍多选框支持选择全部新增【全部......
  • GEPCI-5565PIORC-210000反射内存卡
    反射内存实时网的特点VMIC反射内存是一种通过局域网在互连的计算机间提供的数据传输的技术,强实时网络设计人员已经越来越多地采用这种技术。VMIC反射内存实时局域网的概念十分简单,就是设计一种网络内存板,在分布系统中实现内存至内存的通信,并且没有软件开销。每台结点机上插一块反射......
  • sniperoj-pwn100-shellcode-x86-64
    来源本题来自ctfi-wiki,是基本ROP中shellcode的一道例题查看保护程序只开启了位置无关保护PIE并且有可写可执行的段反汇编发现程序中直接输出了buf的地址,所以PIE就不起作用了可以看到,后面read函数还调用了buf,很显然就是要利用buf这个段了然后在汇编代码发现调用read......
  • GEPCI-5565PIORC-110000反射内存卡
    反射内存实时网的特点VMIC反射内存是一种通过局域网在互连的计算机间提供的数据传输的技术,强实时网络设计人员已经越来越多地采用这种技术。VMIC反射内存实时局域网的概念十分简单,就是设计一种网络内存板,在分布系统中实现内存至内存的通信,并且没有软件开销。每台结点机上插一块反射......
  • 巅峰对决:英伟达 V100、A100/800、H100/800 GPU 对比
    近期,不论是国外的ChatGPT,还是国内诸多的大模型,让AIGC的市场一片爆火。而在AIGC的种种智能表现背后,均来自于堪称天文数字的算力支持。以ChatGPT为例,据微软高管透露,为ChatGPT提供算力支持的AI超级计算机,是微软在2019年投资10亿美元建造一台大型顶尖超级计算机,配备了......