• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
licong
博客园    首页    新随笔    联系   管理    订阅  订阅

实验吧 REVERSE

 

该题不简单:

用IDA 打开,查找字符串,观察流程,找到判断函数,

if ( GetDlgItemTextA(hDlg, 1000, String, 16) >= 5 )    // 判断第一个输入是否大于5个字符
{
GetDlgItemTextA(hDlg, 1001, &String1, 16); 
v1 = 0;
if ( strlen(String) != 0 )
{
do
{
*(&String2 + v1) = (v1 + v1 * String[v1] * String[v1]) % 0x42 + 33;    //对输出的用户名进行计算得出密钥
++v1;
}
while ( v1 < strlen(String) );
}
strcpy(String, "Happy@");                                  赋值String Happy@
lstrcatA(String, &String2);          将计算出的结果放在String后面    
result = lstrcmpA(&String1, String) != 0;    比较
}

 

 

 

 

 

#include<stdio.h>
#include<string.h>
int main(){

char *a = "hello";
char *b;
int i =0;
while(i<strlen(a)){

*(b + i) = (i + i*a[i]*a[i]) % 0x42 +33;
++i;

}

printf("%s",b);

}

 

posted @ 2017-11-08 19:44  李cong  阅读(399)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3