第二个C++无壳CrackMe
吸取了之前的教训,这次给程序加了些新的检测与加密{:301_986:}希望这次能坚持久一点,不要再被秒破解了{:301_999:}
大家加油{:301_986:} hxr1023 发表于 2024-9-1 19:38
请问有什么防范ida的好手段吗,我感觉无壳程序在ida面前像是裸奔
所以要加壳呀{:1_918:}
```py
data = bytearray([
0xFB, 0x82, 0xFB, 0x82, 0x90, 0xE6, 0x8E, 0xF1, 0x6D, 0x8D,
0xAD, 0x8D, 0xAD, 0x8E, 0xB3, 0x88, 0x8E, 0x00, 0x00, 0x00]
).rstrip(b'\x00')
data = map(lambda x: x ^ 0x41, data)
code = bytes(data).decode('gbk')
print(code) # "好好学习,天天向上"
```
交叉查找 MessageBoxA 引用,得到可疑函数 `401D30`,和五个假提示。
交叉查找 `401D30`,可以发现其中一个 5 个假提示函数有关,跳过不看,找到真函数 `4030D0`
![](https://imgsrc.baidu.com/forum/pic/item/5ab5c9ea15ce36d31d68fd127cf33a87e950b1a0.png)
![](https://imgsrc.baidu.com/forum/pic/item/241f95cad1c8a786e046342c2109c93d70cf50a7.png)
```
i = 0;
for ( __unused_var = 2; i < passwd_2.cap; ++i )
{
p_passwd = (char *)&passwd_2;
if ( passwd_2.length > 0xFu )
p_passwd = passwd_2.buffer.ptr;
p_passwd ^= 0x41u;
}
p_passwd = (char *)&passwd_2;
if ( passwd_2.length > 0xFu )
p_passwd = passwd_2.buffer.ptr;
v26 = strcmp(p_passwd, byte_4212DC);
```
对着 `byte_4212DC` 的值每个字节 `XOR 0x41` 即可,最后解码到 GBK 字符集得到密文 `好好学习,天天向上`
hxr1023 发表于 2024-9-1 19:38
请问有什么防范ida的好手段吗,我感觉无壳程序在ida面前像是裸奔
IDA 就是为了加速逆向分析的…
不过你的算法做得相对比较简单,可以看看历年吾爱破解红包活动的题的思路。
- (https://www.52pojie.cn/thread-1742339-1-1.html#45546421_%E3%80%90%E6%98%A5%E8%8A%82%E3%80%91%E8%A7%A3%E9%A2%98%E9%A2%86%E7%BA%A2%E5%8C%85%E4%B9%8B%E4%BA%94-{windows--%E4%B8%AD%E7%BA%A7%E9%A2%98})
- (https://www.52pojie.cn/thread-1893086-1-1.html#49547094_%E8%A7%A3%E9%A2%98%E9%A2%86%E7%BA%A2%E5%8C%85%E4%B9%8B%E5%85%AD-{windows-%E9%AB%98%E7%BA%A7%E9%A2%98})
爱飞的猫 发表于 2024-9-1 19:13
```py
data = bytearray([
请问有什么防范ida的好手段吗,我感觉无壳程序在ida面前像是裸奔{:301_1007:}
页:
[1]