darksied 发表于 2022-6-28 17:10

求助汇编代码的含义

本帖最后由 darksied 于 2022-6-28 20:05 编辑

第15届全国大学生信息安全创新实践赛西南赛区逆向题目 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
下载了里面的hhhh.exe,找到了判断位置,
对输入的key和message做检测,其中对key的是
007B2245|.6A 10         push 0x10
007B2247|.E8 42360000   call hhhh.007B588E
007B224C|.83C4 04       add esp,0x4
007B224F|.B9 C0AA7D00   mov ecx,hhhh.007DAAC0
007B2254|.833D D4AA7D00>cmp dword ptr ds:,0x10
007B225B|.8BF8          mov edi,eax
007B225D|.0F430D C0AA7D>cmovnb ecx,dword ptr ds:
007B2264|.0F1001      movups xmm0,dqword ptr ds:
007B2267|.0F1107      movups dqword ptr ds:,xmm0
007B226A|.0F31          rdtsc
007B226C|.A3 C0C57D00   mov dword ptr ds:,eax
007B2271|.8BCF          mov ecx,edi
007B2273|.E8 78FEFFFF   call hhhh.007B20F0
007B2278|.8D4F 08       lea ecx,dword ptr ds:
007B227B|.E8 70FEFFFF   call hhhh.007B20F0
007B2280|.0F31          rdtsc
007B2282|.A3 BCBD7D00   mov dword ptr ds:,eax
007B2287|.8BCF          mov ecx,edi
007B2289|.BA 60AA7D00   mov edx,hhhh.007DAA60
007B228E|.BE 0C000000   mov esi,0xC
007B2293|>8B01          /mov eax,dword ptr ds:
007B2295|.3B02          |cmp eax,dword ptr ds:
007B2297|.0F85 3A010000 |jnz hhhh.007B23D7
007B229D|.83C1 04       |add ecx,0x4
007B22A0|.83C2 04       |add edx,0x4
007B22A3|.83EE 04       |sub esi,0x4
007B22A6|.^ 73 EB         \jnb short hhhh.007B2293

完全看不懂在干啥。请问哪里有相关资料?
在IDA里转成伪代码是
void __thiscall sub_401B70(_DWORD *this)
{
int v1; // ecx
void (__thiscall ***v2)(_DWORD, signed int); // eax

v1 = this;
if ( v1 )
{
    v2 = (void (__thiscall ***)(_DWORD, signed int))(*(int (**)(void))(*(_DWORD *)v1 + 8))();
    if ( v2 )
      (**v2)(v2, 1);
}
}

JuncoJet 发表于 2022-6-28 17:27

thiscall 是 C++ 类里方法调用的实现
会把 this指针 放进 ecx
至于你问代码是做什么的,不知道……
但这边rdtsc寄存器值得注意,计算了程序执行时间,用了调试器影响了时间会影响结果
页: [1]
查看完整版本: 求助汇编代码的含义