ida算法解析
来源:互联网 发布:java 邮箱匹配 编辑:程序博客网 时间:2024/04/19 11:29
int sub_401130(){ char v1; // [sp+0h] [bp-10h]@1 sub_402702("Do you know flag?\n"); ((void (__thiscall *)(char *))loc_4010A0)(&v1); if ( !sub_401000((int)&v1) ) { sub_402702("wrong~"); ExitProcess(0); } sub_402702("Yes,YOU GET IT!"); return 0;}
bool __thiscall sub_401000(int this){ int v1; // eax@1 bool result; // al@2 char v3; // dl@7 char v4[48]; // [sp+0h] [bp-40h]@1 int v5; // [sp+30h] [bp-10h]@1 int v6; // [sp+34h] [bp-Ch]@1 char v7; // [sp+38h] [bp-8h]@1 v1 = *(_BYTE *)this; v5 = 0x2020908; v6 = 0x9030106; v7 = 0; if ( v4[v1] != 2 || v4[*(_BYTE *)(this + 1)] != 8 || v4[*(_BYTE *)(this + 2)] != 9 || v4[*(_BYTE *)(this + 3)] != 3 || v4[*(_BYTE *)(this + 4)] != 9 || (v3 = v4[*(_BYTE *)(this + 7)], v4[*(_BYTE *)(this + 5)] != v3) || v4[*(_BYTE *)(this + 6)] != 9 ) { result = 0; } else { result = v3 == 8; } return result;}
这是算法的具体内容,这里出现的第一个问题就是 v4的值
char v4[48]; // [sp+0h] [bp-40h]@1
int v5; // [sp+30h] [bp-10h]@1
这里定义了v4 下面紧跟着定义v5,如果sp作为v4,也就是基地址,v5是v4+30h
v5 = 0x2020908;
v6 = 0x9030106;
第二个问题是this指针
sub_402702(“Do you know flag?\n”);
((void (__thiscall )(char ))loc_4010A0)(&v1);
if ( !sub_401000((int)&v1) )
这段代码很容易知道v1是输入数据存放的地方loc_4010A0读入数据。
其实this是=v1 不过这里把*this强制转换成了int型,v4+ascii-30h=v5[a](这里a表示ascii-30h后的值)
a=[2,0,1,6,1,1,1,1,0]
for i in a:
print(chr(i+48),end=”“)
输出结果为 201611110
注意
result = v3 == 8;
这里的v3==8时会result=1否则result还是0!
阅读全文
0 1
- ida算法解析
- IDA算法
- IDA*算法
- IDA*算法
- 搜索算法:IDA*算法
- 搜索算法:IDA*算法
- 深搜 IDA* 算法 POJ2286
- POJ2286+IDA*算法
- hdu1813 IDA*算法
- IDA*算法简介
- UVA 11212 IDA* 算法
- IDA*算法总结
- A*和IDA*算法
- hdu 2234 IDA*算法
- A*算法 和 IDA*算法
- A*算法 与 IDA*算法
- 埃及分数:IDA星算法
- hdu Flood-it!(IDA*算法)
- 10.2ZWJ
- 计算 -2
- Gym101194A-Number Theory Problem
- navicate连接oracle
- BZOJ 4950 Mission Improbable (二分图最大匹配)
- ida算法解析
- IO基础(2)-IO缓冲流及其他流用法
- 面试题(一)- 谈谈你对数据库中索引的理解
- mini版镜像Centos(无图形化界面)搭建集群环境(MAC地址冲突或者无效的解决方法)
- 机器学习 第六周 总结 知识点
- python matplotlib 入门系列三:坐标轴
- 【c基础知识】内存分区
- Mysql-mytop安装与使用
- Openjudge 2987 小兔子捡金币