逆向常见函数

movzx eax, byte ptr [ebp+var_28+2] -> BYTE2(v20)

那么BYTE2(v20)就是从v20开始的第2个字节,即v20[2]。

v1 = (wchar_t *)operator new;
v2 = a1;
do
{
v3 = *v2;
(__int16 )((char )v2 + (char )v1 - (char *)a1) = *v2;
++v2;
}
while ( v3 );
result = 0;
if ( wcslen(v1) == 25 && v1[4] == 123 && v1[8] == 95 && 95 == v1[10] && 95 == v1[15] && v1[24] == 125 )
{
wcstok(v1, L”{_}”);
v4 = wcstok(0, L”{_}”);
if ( (_DWORD )v4 == 6815860 && v4[4] == 52 )
{
v5 = wcstok(0, L”{_}”);
v6 = wtoi(v5);
if ( v6 >> 1 == v6 - 2 )
{
v7 = wcstok(0, L”{_}”);
if ( sub_401000(v7) )
{
v8 = wcstok(0, L”{_}”);
if ( sub_401180(v8) )
result = 1;

 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节,详情见[这里写链接内容](https://zhidao.baidu.com/question/1603990754796413147.html)

wcslen():
strlen返回的是字节数(对中英文不一致,中文占两个字节,不包括’/0’),而wcslen返回的是字符数(对中英文一致)。而sizeof返回的是字节数(包含’/0’,而’/0’在Unicode下也是占两个字节的)细节详情见 http://blog.csdn.net/zim3oo/article/details/60331673
宽字符处理函数:为什么要专门定义这些函数呢?最根本的原因是,ANSI下的字符串都是以’\0’来标识字符串尾的(Unicode字符串以“\0\0”结束),许多字符串函数的正确操作均是以此为基础进行。而我们知道,在宽字符的情况下,一个字符在内存中要占据一个字的空间,这就会使操作ANSI字符的字符串函数无法正确操作。 宽字符处理函数wcstok() 相当于单字符处理函数strtok() 根据标示符把宽字符串分解成一系列字符串 详情见http://blog.csdn.net/netanimals/article/details/7337159
下面引自百度百科:

  • 分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
    例如:strtok(“abc,def,ghi”,”,”),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。 strtok的函数原型为char *strtok(char *s, char
    *delim),功能为“Parse S into tokens separated by characters in DELIM.If S is NULL, the saved pointer in SAVE_PTR is used as the next starting
    point. ”
    翻译成汉语就是:作用于字符串s,以包含在delim中的字符为分界符,将s切分成一个个子串;如果,s为空值NULL,则函数保存的指针SAVE_PTR在下一次调用中将作为起始位置。详情https://baike.baidu.com/item/strtok/5522728?fr=aladdin

是不是涨了姿势(^▽^) 破解的时候ida里面反编译出来的数组再也不用一个一个敲出来了 直接用这个函数把空格替换成逗号就行,是不是美滋滋。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值