第二段代码就容易多了,可能我已经习惯了,哈哈哈哈哈

但是这个函数是用EBX作为返回值的,不合逻辑,正常返回应该是用EAX

 

004013D8    33C0            XOR EAX,EAX
004013DA    33FF            XOR EDI,EDI
004013DC    33DB            XOR EBX,EBX
004013DE    8B7424 04       MOV ESI,DWORD PTR SS:[ESP+4]
004013E2    B0 0A           MOV AL,0A
004013E4    8A1E            MOV BL,BYTE PTR DS:[ESI]
004013E6    84DB            TEST BL,BL
004013E8    74 0B           JE SHORT serial.004013F5
004013EA    80EB 30         SUB BL,30
004013ED    0FAFF8          IMUL EDI,EAX
004013F0    03FB            ADD EDI,EBX
004013F2    46              INC ESI
004013F3  ^ EB ED           JMP SHORT serial.004013E2
004013F5    81F7 34120000   XOR EDI,1234
004013FB    8BDF            MOV EBX,EDI
004013FD    C3              RETN

 

int fun2(char *str)
{
 char *temp = str;
 int j = 0;
 for( int i = 0 ; ; i++ )
 {
  if( temp == '\0' )
  {
   break;
  }
  temp -= 0x30;
  j = ( j * 10 ) + (int)temp ;
 }
 j = j ^ 0x1234;
 return j;
}

 

posted @   穷到底  阅读(138)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示